From 7b529d6a918efe39ca6d63201fcdb954a3c881b4 Mon Sep 17 00:00:00 2001 From: Jakob Haufe Date: Mon, 6 Aug 2012 22:31:36 +0200 Subject: [PATCH] Imported Upstream version 1.2 --- .gitignore | 3 + CHANGES | 14 +- INSTALL | 39 +- Info.plist | 18 - TODO | 14 +- data/128x128/minitube.png | Bin 5666 -> 5706 bytes data/22x22/minitube.png | Bin 0 -> 853 bytes data/512x512/minitube.png | Bin 0 -> 35496 bytes images/media-playback-pause.png | Bin 770 -> 0 bytes images/media-playback-start.png | Bin 1255 -> 0 bytes images/media-playback-stop.png | Bin 745 -> 0 bytes images/media-skip-forward.png | Bin 1395 -> 0 bytes images/view-fullscreen.png | Bin 1084 -> 0 bytes locale/ar.ts | 242 +++++++++ locale/bg_BG.ts | 241 ++++++++- locale/cs_CZ.ts | 462 +++++++++++++--- locale/de_DE.ts | 622 ++++++++++++++-------- locale/el_GR.ts | 239 +++++++++ locale/empty.ts | 780 ++++++++++++++++++++++++++++ locale/en_US.ts | 15 + locale/es.ts | 241 ++++++++- locale/es_AR.ts | 238 +++++++++ locale/es_ES.ts | 238 +++++++++ locale/fi_FI.ts | 326 ++++++++++-- locale/fr_FR.ts | 241 ++++++++- locale/gl.ts | 241 ++++++++- locale/he_IL.ts | 268 +++++++++- locale/hr_HR.ts | 424 ++++++++++----- locale/hu_HU.ts | 237 +++++++++ locale/it_IT.ts | 248 ++++++++- locale/ja_JP.ts | 237 +++++++++ locale/lat.ts | 277 +++++++++- locale/locale.pri | 4 +- locale/nb_NO.ts | 238 +++++++++ locale/nl_NL.ts | 238 +++++++++ locale/pl_PL.ts | 241 ++++++++- locale/pt_BR.ts | 238 +++++++++ locale/pt_PT.ts | 241 +++++++++ locale/ro_RO.ts | 239 +++++++++ locale/ru_RU.ts | 239 +++++++++ locale/tr_TR.ts | 235 ++++++++- locale/uk.ts | 295 ++++++++++- locale/zh_CN.ts | 631 ++++++++++++++++++++++ minitube.icns | Bin 40342 -> 0 bytes minitube.ico | Bin 67646 -> 0 bytes minitube.pro | 61 ++- minitube.rc | 2 - resources.qrc | 5 - src/AboutView.cpp | 21 +- src/AboutView.h | 2 +- src/Constants.h | 16 - src/ListModel.cpp | 31 +- src/ListModel.h | 6 +- src/MainWindow.cpp | 344 ++++++++---- src/MainWindow.h | 8 +- src/MediaView.cpp | 101 +++- src/MediaView.h | 20 +- src/SearchView.cpp | 59 ++- src/SearchView.h | 3 + src/constants.cpp | 11 + src/constants.h | 20 + src/downloaditem.cpp | 257 +++++++++ src/downloaditem.h | 80 +++ src/downloadlistview.cpp | 63 +++ src/downloadlistview.h | 26 + src/downloadmanager.cpp | 146 ++++++ src/downloadmanager.h | 42 ++ src/downloadmodel.cpp | 90 ++++ src/downloadmodel.h | 38 ++ src/downloadsettings.cpp | 66 +++ src/downloadsettings.h | 27 + src/downloadview.cpp | 90 ++++ src/downloadview.h | 40 ++ src/flickcharm.cpp | 327 ------------ src/flickcharm.h | 52 -- src/fontutils.cpp | 43 ++ src/fontutils.h | 16 + src/globalshortcutbackend.cpp | 24 + src/globalshortcutbackend.h | 27 + src/globalshortcuts.cpp | 50 ++ src/globalshortcuts.h | 56 ++ src/gnomeglobalshortcutbackend.cpp | 54 ++ src/gnomeglobalshortcutbackend.h | 29 ++ src/googlesuggest.cpp | 1 + src/iconloader/qticonloader.cpp | 45 +- src/iconloader/qticonloader.h | 2 +- src/main.cpp | 20 +- src/networkaccess.cpp | 8 +- src/playlist/PrettyItemDelegate.cpp | 167 +++++- src/playlist/PrettyItemDelegate.h | 11 +- src/playlistwidget.h | 2 +- src/spacer.cpp | 8 +- src/spacer.h | 9 +- src/thlibrary/thblackbar.cpp | 18 +- src/updatechecker.cpp | 2 +- src/urllineedit.cpp | 1 + src/video.cpp | 78 ++- src/video.h | 5 + src/youtubesearch.cpp | 6 +- 99 files changed, 10206 insertions(+), 1274 deletions(-) delete mode 100644 Info.plist create mode 100644 data/22x22/minitube.png create mode 100644 data/512x512/minitube.png delete mode 100644 images/media-playback-pause.png delete mode 100644 images/media-playback-start.png delete mode 100644 images/media-playback-stop.png delete mode 100644 images/media-skip-forward.png delete mode 100644 images/view-fullscreen.png create mode 100644 locale/empty.ts create mode 100644 locale/en_US.ts create mode 100644 locale/zh_CN.ts delete mode 100644 minitube.icns delete mode 100644 minitube.ico delete mode 100644 minitube.rc delete mode 100755 src/Constants.h create mode 100644 src/constants.cpp create mode 100755 src/constants.h create mode 100644 src/downloaditem.cpp create mode 100644 src/downloaditem.h create mode 100644 src/downloadlistview.cpp create mode 100644 src/downloadlistview.h create mode 100644 src/downloadmanager.cpp create mode 100644 src/downloadmanager.h create mode 100644 src/downloadmodel.cpp create mode 100644 src/downloadmodel.h create mode 100644 src/downloadsettings.cpp create mode 100644 src/downloadsettings.h create mode 100644 src/downloadview.cpp create mode 100644 src/downloadview.h delete mode 100644 src/flickcharm.cpp delete mode 100644 src/flickcharm.h create mode 100644 src/fontutils.cpp create mode 100644 src/fontutils.h create mode 100644 src/globalshortcutbackend.cpp create mode 100644 src/globalshortcutbackend.h create mode 100644 src/globalshortcuts.cpp create mode 100644 src/globalshortcuts.h create mode 100644 src/gnomeglobalshortcutbackend.cpp create mode 100644 src/gnomeglobalshortcutbackend.h diff --git a/.gitignore b/.gitignore index a2f6691..9e6d76e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ minitube.pro.user .DS_Store .cproject .project +local/ +*.swp + diff --git a/CHANGES b/CHANGES index 77d1e71..eac32b8 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,16 @@ -1.0 - April ?, 2010 +1.2 - Oct 11, 2010 +- Ability to download videos +- Support for media keys on GNOME +- More style, especially on the Mac +- Fixed crash when trying delete or move the the las playlist item + +1.1 - Jul 27, 2010 +- Minitube now correctly plays cat and mouse with YouTube +- Toolbar restyling +- Levente Polyak fixed moving more than one video down or up in the playlist +- Simplified Chinese translation by Changtai Liang + +1.0 - May 3, 2010 - Ability to play Full HD (1080p) videos - Ability to copy the YouTube link and the video stream URL to the clipboard - Fixed videos failing to play diff --git a/INSTALL b/INSTALL index a6db61f..ac6f8d6 100644 --- a/INSTALL +++ b/INSTALL @@ -1,38 +1,33 @@ # Build instructions ## Prerequisites +To compile Minitube you need at least Qt 4.5, Qt >= 4.6 is recommended. +The following Qt modules are needed: core, gui, network, xml, phonon, dbus -To compile Minitube you need Qt >= 4.5 installed. - -On a Debian or Ubuntu system just type: - sudo apt-get install build-essential qt4-dev-tools libphonon-dev - -Windows and Mac users can get the Qt libraries from: -http://qt.nokia.com/downloads +On a Debian or Ubuntu system type: +sudo apt-get install build-essential qt4-dev-tools libphonon-dev ## Compiling - -Compiling on Linux is fairly easy. Just run: - qmake -and then - make - +Run: + $ qmake +and then: + $ make Beware of the Qt3 version of qmake! If things go wrong try running qmake-qt4 instead. ## Running +./build/target/minitunes -Just type: - ./build/target/minitube - -## The visual way +## A word about Phonon on Linux +To be able to actually listen to music you need a working Phonon setup. +Please don't contact me about this, ask for help on your distribution support channels. -There is also a visual way to build and run Qt apps. -Download the Qt SDK from: http://qt.nokia.com/downloads -Open `minitube.pro` with Qt Creator and use the Run (big green "play" icon) command. +## Installing on Linux +Run: + $ sudo make install +This is for packagers. End users should not install applications in this way. ## Legal Stuff - -Copyright (C) 2009 Flavio Tordini +Copyright (C) 2009-2010 Flavio Tordini This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Info.plist b/Info.plist deleted file mode 100644 index 27b03c3..0000000 --- a/Info.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - CFBundleName - Minitube - CFBundleIconFile - minitube.icns - CFBundlePackageType - APPL - CFBundleGetInfoString - Copyright 2009 Flavio Tordini - CFBundleExecutable - minitube - CFBundleIdentifier - org.tordini.flavio.minitube - - diff --git a/TODO b/TODO index 69d5ab5..62c8c00 100644 --- a/TODO +++ b/TODO @@ -1,17 +1,7 @@ # Minitube TODO list -## Known Bugs -- Wrong item positions when moving more than one item down or up - ## Killer features -- Video download - Playlist items should have a download icon that appears on mouse hover. - Once the icon is clicked a mini-progressbar appears and the download icon remains visible - even on "mouseout", maybe with a different color. - Videos should be downloaded in HD format, if available. - Videos should be downloaded directly on the Desktop without asking for a location. - - YouTube related videos List of related videos identical to the playlist. When a related video is clicked Minitube will keep playing the next related videos. @@ -26,7 +16,8 @@ - Windows build Stefan Brueck has compiled on Windows but there are problems with Phonon's directX backend - Marco di Antonio tried with the Mplayer backend, but it is very unstable + Marco di Antonio tried with the Mplayer backend, but it is very unstable. + Waiting for the VLC backend to work. - Subtitles, see http://google2srt.sourceforge.net/ @@ -34,6 +25,7 @@ - Safe search levels (in the status bar beside HD) - Show buffering progress (when Phonon backends will work) - Show more thumbs on hover with animated crossfade +- Time filter on the bottom of the playlist: Today, 7 days, 30 days ## Unsure features - Restore status when a recent keyword is clicked: skipped videos, sortBar and play time diff --git a/data/128x128/minitube.png b/data/128x128/minitube.png index 18961b30f6d31a9a8de828dd0018cba2cf85a499..d46188e0fb18bbb46dceff16d7b341f02d7d338c 100644 GIT binary patch delta 5647 zcmV+q7Vzn!EXpj9Zhyx~L_t(|ob6ppk0r@f{!ZSy)m@F5hXmuXWiO1akrBcg39&$o zFt9*iV~MfN3T(|U0Es`qLt=p~dEp&GUa&yml?5`EcgPZt1sl%;jg2+Po-vF(gSxBQ zbXDDZGxM;BI1wjanUS~dt*WldqrR1yk&zK6;``#96OoT5W`D*kw^y30R$!K^m6-sy zTxJ5?a+wKm%Vj3OEti=9w_Iid+;(B+t$qNW0`MmQjsfueyOQ6r#o(!}ah!p_5x=d8 zFctVeoq@mBzhjG0H4$one;UA_0XVq^4V-^0SU4Jq_TG0Q>=fCvtfX z4wm@PM?QkjeShxv@aw9Oqh zeUz3tcag2zm$LOaU0+|BCrVqb*7*LLKg74c{WAXh2XCTnH(3k;JOuD%0AFI}2U(nB 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 delta 5606 zcmV=0SMBdxuU%EAiJ7s;&3~2Vx(Bex^~yqk8!ih0 zZn!K2xZ$!8;D*aWfEz9g0dBf5^G+WCw*mYXfO7!6e6HnlZZWvMGmZ=JkHlwZB1{GT zw-?|K`g3kEswP4W@J|5v9RPO^-~yLV-RG{w?1?dasdO)Zh@JrO8vuR{z~i|xtJN{S z_nBw#*ESm$Pgb_Ak0F95sMIvA=7u?^?37t{|_&} z^fF$3<$skSBHU%>+hYVse8Ta`2|n@3PvZHX|2aJK%+ns&#((Q$+WgmA0ZoD!d`E(T z&zOl%h%oWHO8Xzw{O@Q9^szg4@8OkKUd2lFowwhI4}H&5xc#__+4IR=BBKP56i&Xs z@%kIMT(5UC?E_{$1*AZNSW64qKcwMt%#doLv{g3qs3gIVna`6TB~WaoV|n}hF5W)B zi}yTsh9CZc@2f+;mH;|;ClG%3_dY+VgGH`R-o1a}wz<*-jNT0-_(dD!)AdCTRevft zFn&9jA`&ce&{C`UB9kmYX~k}l0~1+8sUSmL5IA7|?>+h4l%Xv$vpoLR7ayp8-4j7e z4De71tCiF-sdE9D?L`h$CYXPq(gG~n|L}+ger){!sEh%o$Z!7ob0AnET1!N>9Wx-` zpc^cc-C|$YQ~*=hj=!X_^R_=CFn`-~cEhiRnh_8KY?_n9(tOY^GlN_?a_vd~uB@}b zaw7|_6*n(Z5L77duf?5b#-IG@-;N+q2fWBQ0d|nMe|A@_?)Cu=cv8T#1J+N5hYLV- zK6r4%^>2X(fedn{dpp@0co5J_WdT0wx3|EXwgq@UJ~srmZDoOHM-*WI3xDw)G5vM0 zZ^je1G~qd!Z7F!FsEZJI-Bdb_C3QXzYzjQ=y!j5;+ZS6$N_rGo0T&G}3%s7VG2mVC zL5+`q7rJud8R?TKSc)bz6|gblSR3qi0efO`mJEVI03BI z)n@=40ROKqzaE%o?H=4DBb|6(MoloQi3ck!jI>gdOesR#f6W;5c|Qhy-j5;dKN>?u zGjnykdo;zK{jrY*ZmCA5q=EGoK%3t|Q5rzy$&V*C+vNcGxw8H{4}X4IXFl*Vqff>? zrkyeP!PqL%_hYUj!Dt%jeOO(CEXGm?eIwxKCqLC}s9I&s%hf@0tj7ApV;qXEiv%13 zT-C{f&-PZZoj zv)!)pzOH>4#|#!gOg~u`j+X~?WIx61=7PEs_@$m>zdzmjccnn}?l=aMx3?N9EbUP@6@2ls*&z<+*dGNE>GBAc+f`7hvjEUbLAZ^+2`xbjU z2By44&9*s#1mpJt*f&~j0W#)H?`P|&_H*E8V}KFxr&*tA;D>Wt2Y$))=Sb_0fzbnS z3sGYt3OH8`z+e!ED^w%>1AtjU8#0X}L0`7ch|kT{(S40uA2ptV2`mzDNZTvH4^2Nq zZc=cz)y&u?T7Q6X0@%)zJ1qr~n*4LAqYv0P=N+2u(w1h+Gx`BB1i2+*wxw zx#vm0B^I!_WRgd~pW<_OiTLBO#^C$&(RgA44gs#}Xz<&v$F}RycKv`$XP`4Lf->M9 zYN-*OwtvsM5Hv+x$3)>iQt;EdzTYA6Ia5dXH3WX`GH=k|82E*8GmLg`+8%A&*DvS* z_I0u9;g%IHmL4qcuo1W*)_+W$w!0qS&DiF40Xhb#;(~ycxe-(e z{#68h>3Khf6#RnekH+10JuWvL+V1Ls7uk;s=n*{HH(Wk^;?^81gP+#d-(~Qp`2BrH z{9VtuT({UF%#vY_?tgBClEIw*WnR|6loFa60K_@JqF)M*L(S zy(aep2%Fd0rJgj30#V(BW01Zupt3Iaq7LSw6)^Js3V-;f zpGH{#{nj3Vh#g^i2Hw5gV!JibeIqNIBy=Qo0s6RHGTC=3{1gNsqFMTx5MB6&dmP8&zu`X;6_-7dy7wZm}8{_Aj zrg6OjG03n_?fO^U+!wjt?fj|N-G7*z1R^ zWrCxl-|-X`1{?6bOCWV&`u)X}6w_pi_5%}LK;8Xld3xBCy;!$6J6##8>wkQ%fNQS2 zu|bUP1|9;?Sk8~ z#?yGG2AHL6w-jdACM@gSPEN5kTCiz< z$((ncS*U4yM%Q;{yMJSByFM_DW7nZDP0u(J9irpX$N2XR#3iV}*rcqiK=!Ucmp=## zAVI~H-w5;%hQj>+0Kk&K>XftoWVN%$rd3XXPsI#t16GXc*AA5RIIP2iO!{Jx}aRESW5C~<*Qhy8JLDm5t0EDJk&UZa4 zKpE%}nQTjq$dr@bnxshue*g`>Kj(b59AbYxAvt_jB;_>V=CLmyw}^Y#w@k7CbwMDU z5;2A>00mm3{&9#ySZi|pOJ(W4-k|ijmMI2+e84K6KFsr7Ark|TZzu5YP_dD{#5nB> z7N#Cn3jlZ$Fn{^gvlw&=Kn`7l1~*TLzzByViH=2^ zyK*X^Lz>pfYj$o;!fJY!1c%@P!~#?Yf|lN5Hf2#Iv3~#o(0O7wNGSw5O9<&3ngm1V z%Hr^5U5VW}w=0%0Ui68#;Z1th0t}E~-!gj^VAhSi%OHwk00nw{-0Wt`=yGn`ZXly6 zG@|dCPZgg}c@(;yJxaX=0DFxX5Xsp^N-m%b zbUA1Yfq#p$27f#~rlouh-tDBSr=xXe4V0Od+}>-xB}Ej}$^* zyf!ri1!}!D5DkyXV~ZozejQVIp|DV;sPajk54az?q#O}EkxG%h{>{o<&zb}Kmf2$f zmjT#s^AD$}to6b168PbMs{Pt7K;fqy1rU>C{C`3uh|>qc^e@cq3uzsB3*iDmxe1i9 z0%IhZQ>Iyf+JzwJ``E4nq`)T`LEW>CK&J?1}=zyAO4$p@vprwJnaU(-1 zY^NlU-u(TGyvDmcWA8G5765aB{ysdV!0$>1RVM&j;~l4i0SQXuPYL7m7=#hNwe3E) z&wt#_b8bVe?l~n&Nny}82f`a*`!@lzTLAa+qw|v)kdtHnT;5HTGKTP+`JxP-gpddW z*XznqkQV6lFLwuzrJI3>zU13W+JA5{K$T6hz)Qd=pa$CQ2;h%7;4{{s6gz0s@AO_{ zol6H(W%omu7V#;K&5rbV$VoquYX)Ycp^KRy-M9v!ItuMX&^hr5iU~zY($3S zyav2%4U*Jwbj?6Zo(1v49d@rOx0kZJqD7)>(IA$mF}8;aPS7E#CafsVAg6f_Q}jnmc%?3KDNm(n4`A)D4w7~xB+fq&0DVS-34 ztrNR=B1eLKOLZDp8w8pTN``{L-m#07S(Vgl|a{&x=ogqN{b1I8muLv$vWx5M!jSC<$1b_J1Pk&;kju)9n z{^qa01ON_~sWROKSfo83BIq)vYH^RET_|M;aB z!vcSI3IGW%wX#DNV1G@GT^Cv`z%`4-p>}y`|0wCEio>Bk8#@C4BD%-StS!JT z`w2U+ulmGH6Jq@Pzr7e&S>ypEp3lGf%eX|m0B03&f(3wa9DkPp)|vpP$XNip4giE% zz*W4out>d3z~eC(MAr}k5YaJ!6BrT%5@!Ls=9`NgjNAgy0yrh2Ml8S}0o?Bc@$UKN zA_pU90JboAuY>?AcoGDn{{sbq@VQ_8?7YKa1P_|TrY!p(KnISMz87(F3&#H+LlNKz zh6D)#Vi%BmD1WH#7eohuh)6I*iUsfomQz^mM??T2K_IaU5Yg}4O`3FhD+pyxPxcid z#w@}jqjCy^^AUg}0i0m+i{ws3{7;D74@b}Nc1HqSh304LEiy#}{00#L+&h|D{`}9r zaCJjlRsg`vTOtwytY8Q*?dilt4qZf{w=g*0XXaq#Pqbgw0+v^SA1#qg zZv%t#C0`IO{mKo31^7o-B-VR}nOi^+fSG$Dx=@9eAn?%=f&sq;aNiw_*VTzgZVW91 zc(g<;`<4~x2>}+lS+cz1d&6ZRzzvs$05@FzAC>G;anh65NdN!<07*qoM6N<$g1A?s A%K!iX diff --git a/data/22x22/minitube.png b/data/22x22/minitube.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb2a97cc20868f69e70fef460051c8718b730d5 GIT binary patch literal 853 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 literal 0 HcmV?d00001 diff --git a/images/media-playback-pause.png b/images/media-playback-pause.png deleted file mode 100644 index 2faccc2edcc9407474c539309d0b82fdf8683481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 zcmV+d1O5DoP)MFuT& z_a}hI0Kj>o5JF%8DP|-Gz`EfRT+}yr51%$nssLyJm5JmIz%76TK!3P)ug?dOR{;@* zq1IYIBceb`$pB!C$*i@#BuV~UU0oRf$n(W<+`YcOz8L})2iV=+mD}6f4U+D(pJkhq znqvNGjW{sIBmf|#oa-FH<_ph5D-hZ6Zj*bsE_g?M? zQ50PQK#uRl-rjy=XJ_XEcgIx>V10d^>h-!F-G4s$1R;R8Z#pAgTWci%5YgE8<@5xA z!|PY?#=aj?k|!*IfF=}IY+rm0KQbjml| zDMVzGB=Hh?E6{GYEfI}BAX{7QDSdf)xzEfF02+%M80$4b}UvB060it*FbpQYW07*qoM6N<$f^$q% A7ytkO diff --git a/images/media-playback-start.png b/images/media-playback-start.png deleted file mode 100644 index c933f110705d171c5f12c0386726d32a83ab33d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmVK~z|U&6jUX8)Y2FzrW}1xoc@@N#P2NI@6FiaYD8@nng`S z2zz5>iOIzH%8}^eUa(A!Zx%AmWN!0MgyEuW!a(CP_QEBaII{UC!IuIWtm~S?|slEeMOPbcNuPJjvxQx!>nL-`{i39T|p!tsHDitN$MW#8elFh?b9yP0EUr z-8WHONK6BO20-6vkW>apQ4|vZYcv`)B9X{EfCVCoAueP?K#~GfR8%kk*4(_D=FySy z^MOFX7YGDqB9X`(fJGwGHUc6kKxt{IU^biWgTvkfyLOk=go2?quXnI>Y-}tLjYh+& zsz!-u2^q$cbQQSWZdP1eYyp7grWX16+S*rkmX%!fcs%iXJ{zw{u*=$~;R1`%_ z&xFw5-wSh=nchG10k1n)_rfEOKK%7#<-1>Wxm?=|3JRR~Cl+Bnv7|I0isG7M#u$hQ z6XSkNhe9adQ!YI5_>=aI&WjD%*6i9l!Qd&&pO*e`I2@Xqno<#8wkcyt32-kAV+@Q4 z#29o#$I$Q~va_>s@TEGjre=T1*_P(E9J~G7;Xz-sEX%&x+1Ze)s&hoNlnf#b00E2% zD*!|U0%2i(0p8nx!QsfIcTO~ly}ds_^I7|asv=j>S>Lelb5&K1fq{V-fXn~{L4?2< z7!yE@z=(k5hz%e-GYwUp#g2z|u$HECSy!%He*MPx*PkOM)>l_o{{SGCA%GB{j3s&@ zZXsUZfT0^}&Jhtf=gjrMgW|rbeMy`BJ^%zTfvq&;vH`0#8+LmR`ucnI_KR&xB_%sM z-#h)`m%6Usb~qfFHz8vT0%I#6EMY>HW!P+XOa+5R!|`LfEXh4@y!K|h)9Lhb&iy8n zX$DF3rv*TX=36c-$r9|g92f@B-qEhz{Qc(8vo$rXdp&#mIOl#zlI{SQ1F(enR-PdM z2n2u_!Dh3=VzHvy4Kx&ZKmR>$_uX^ zI{f3RoM!&W1#*9$-ZH~=Y8@Gdgcoi4yK1SN`Y%8$u^y$3d}@bcL5f5R;Y_!}5Ow{Xsu Rh@}7k002ovPDHLkV1n>jLzn;n diff --git a/images/media-playback-stop.png b/images/media-playback-stop.png deleted file mode 100644 index e4fb4bd8c237c554cad05c4a78ea18f0695481f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVK~z|U?Uzq$)Ib=TM#Yo_GHV7$4c?wT|s&) zr5{nmi-;FLfr#Iro`izZLs4h~-OP-KNp`o(CMGL&J@kc;KNIHp<(YS8-be@m>kO_{ z{SM%N05DCBA|i;8vSR-MfDa9sE_H3Ccmluz*eD^|f`sz829N`o)Il^kAX{5o)>`|3 zWU8trgwP5=M1pg!@ZSH-^ZfheETh`Yauf#}@!5od9-rcG&OtZFT?t!#hv} z5P?7-g7O-;nHtgQmoHvb{n)FktJ>MtI15Nl+Y^&OMCJ}4=IJ893}Ug5&H(d~B&HPR z6abJph~)r(idq0`tr#4LxF!$a+0AO^0TmTRN;T8c@K`N*Og%CW24T$mTNAdk>PqId@$Y#Sc~e z+UxZ$02EyT1hE|31keMZ=vIS0~;E;MQa9{{?pd bYX|rZ)c?0QsPgfx00000NkvXXu0mjf5jjKe diff --git a/images/media-skip-forward.png b/images/media-skip-forward.png deleted file mode 100644 index 704ca1706bf8d8b138c588a3e02135215116c5b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1395 zcmV-(1&sQMP)) zb$VKU3;;(6AxaBL?neM90GJm-I4dl+9K z$ykJtyt{DauUoUPt*!NFnpQ_C^#Oq6IHqM;Ny9LTJQj3xP_ zq$VaN(g18iNTIyU>-1F~ul#)>Uu**aN#?pem*1X9BrMY1-K{E$()#Pb)$47ot@*KA zw}z*aGd=Nm{CCqdjp^y>SpYcz^8iG5cehgMXC_lUx~|{XYns;9f9;n)zB=~}0ATm4 zyRiAm*e1)ebRLOBsG=wy3;>7UdtbhKt^bLSK0b5SAE-G$a&zp2s;cAZblRMoo67>o zd%a%f_xm+qsjm&xoF9pgo={bF+%(N}CX=yBJ{SyYrR&jm@dp$N1=QEqdu-dL6aZ9J z{OV8Y7WN$mjD_4Gs<}j4^4M@90?c4Gj%V z<(?42O93QF0swH%Ip98qj^mUb4-5?tA~{)u7hiaZJ-7XN-o}S z$jwd1jvxEXAE^1(OlQufQYqiPeE2@zFpTQT0E7^tX&RxWFXcd%B*?OiOlB5CLpR{} z*OJ~Nz4B|Xzp{R}(y;qjWb*0w$W#V@%8l>s>8;1UPt9Go!_NBIG4?4 zdC9MO2>?J*6x7w#BcIRX$dM0*(k_)xM?uH_Nh&L?RLSH$JvGHelO!y4;rn zFvdi&SX|r(7Ap{mMB(*%aq(i`{DlkO*;}`6`*hEqH~Sc4;{Yb7rlyL9VQB01?*4PP z0+wZoU@+(afDi(=5(%6tqk<5URTO2qvFXvzyLNW{$T`2Qs_F!QSu8XT z^H^v;5C{aEwR%daRqL-E-P!eWGXVGl{?Uep2Fr0AL4*+8vaDb-nQVzfB6&hcs#HDz zMF5qZ&YHb#+aV!DE2Xr~z2}mIkhsU=nIdjmrUKC1gKf8b^SJj|ulKpfzzu5xxI^5= zrMzKuO66N&tkn|$40ks^#|r?kx?KOjHAbdx`jWmd)AWtCmK2!*T+pu&Ka%}5zf-IGmZX#5TFCxyZ7xE9==B+GO3i(Pcop0I7+Es zHQb+`KK<=a9l*o)sQ>(hyBGQ|`c5)+s9jx$)x znWkw(B7?r-#`{UAAy7)`hG7s01dbf^!Hsu_2tWT}^5DihfR?>s7}QZWc)PBPQtHS8 z0F+W_n%3~Qf4?^~4FR6#p=n2NieF~qwLk~&_hN3U_^GKW!r}0dMYJ=^vY4KpZWW-E zA`}WSfB!zgM1pfyuhMh*GQmWGu4EEA#UsMj+qZ0Ivy|VwVRLbj?QE7WpFC+o-4IY` z6HF%AUR}l6+~l8hn#i3y1d~ZP#K_*t(VniO0`r% z@9V=bO?t=1a9y|K-~hd2V_2_VAtHzfJ)@&7#omyjltM)49vNu_*8%~Gv$MFi-Ei`` z%e8Hav$JS{0ETIz_w~^|GJ=S-M-Yg|>A!W0^W)=KFJB@`VHXMn<(@ z5uTV}V{VQ>Jl-CG=Xv-C2ML=d0)!?eunPqY)9iRc*1rivB8cBl`1*Aa!SlRNX8`u} zXT9KjK8$D-PvlTVXhfq3AbZ8{^V5RhG^{Ox)38q>sCU6>3uxq`jzB!`-*&22+0Nyf z&pvl~-tM>6YSY<&cEQg2I$N0xp=;OpFgFL9wp-1ySVyRmgvQ7DFh5V% z@GwR++8%+O%VE8EL3wczUoc1@k-$GN&@mqWzyMpXUt?#pl+$Ud`8=9o;5W_old!V9 zj8iI6&FArKo8D9kbiHE)=sLZr6rOEU&F67SB`V9y2T#H}g38hoj%76*Z7wWuE|u!& z_I2A_SioLi$0?O?OC>5xO9v04dJ*pAa`e^L;Q{n)1>d_P3)Bw zD(N&kx!i#na9r2b%jGh|j~}=CsyXb`{IMARSd5-jivHSJxm>Q#8wWsFN@?H!_}#OW z)yy|DGc!J2Khb9aj^nVhnsGrrQ%Y&Nh`=b0000 diff --git a/locale/ar.ts b/locale/ar.ts index d97b57e..4db584d 100644 --- a/locale/ar.ts +++ b/locale/ar.ts @@ -64,6 +64,156 @@ مسح + + DownloadItem + + bytes + bytes + + + KB + KB + + + MB + MB + + + bytes/sec + bytes/sec + + + KB/sec + KB/sec + + + MB/sec + MB/sec + + + seconds + seconds + + + minutes + minutes + + + %4 %5 remaining + %4 %5 متبقي + + + + DownloadManager + + %n Download(s) + + التحميل %n + التحميل %n + التحميل %n + التحميل %n + التحميل %n + التحميل %n + + + + This is just the demo version of %1. + هذه ليست سوى النسخة التجريبية من %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + يمكن تحميل الفيديو في أقل من %1 دقيقة بحيث يمكنك اختبار وظيفة التحميل. + + + Continue + متابعة + + + Get the full version + احصل على النسخة الكاملة + + + + DownloadSettings + + Change location... + تغيير الموقع... + + + Choose the download location + اختر موقع التحميل + + + Download location changed. + موقع التحميل تغير. + + + Current downloads will still go in the previous location. + التحميل سيتم في الموقع السابق. + + + Downloading to: %1 + التحميل الى:%1 + + + + DownloadView + + Downloads + التحميلات + + + + GlobalShortcuts + + Play + Play + + + Pause + Pause + + + Play/Pause + Play/Pause + + + Stop + Stop + + + Stop playing after current track + ايقاف تشغيل المقطع الحالي + + + Next track + المقطع التالي + + + Previous track + المقطع السابق + + + Increase volume + رفع الصوت + + + Decrease volume + خفض الصوت + + + Mute + صامت + + + Seek forward + امام + + + Seek backward + خلف + + ListModel @@ -304,6 +454,42 @@ Your privacy is now safe خصوصيتك امنة + + &Downloads + &التحميلات + + + Show details about video downloads + عرض تفاصيل عن تحميلات الفيديو + + + &Download + &التحميلات + + + Download the current video + تحميل الفيديو الحالي + + + Do you want to exit %1 with a download in progress? + هل تريد الخروج %1 رغم وجود تحميل? + + + If you close %1 now, this download will be cancelled. + عند اغلاق %1 التحميل سيلغى. + + + Close and cancel download + الاغلاق و الغاء التحميل + + + Wait for download to finish + انتظار انتهاء التحميل + + + Downloads complete + التحميل انتهى + MediaView @@ -335,6 +521,26 @@ You're watching "%1" انت تشاهد "%1" + + This is just the demo version of %1. + هذه ليست سوى النسخة التجريبية من %1. + + + It allows you to test the application and see if it works for you. + انها تتيح لك تجربة البرنامج. + + + Continue + متابعة + + + Get the full version + احصل على النسخة الكاملة + + + Downloading %1 + جاري تحميل %1 + NetworkAccess @@ -349,6 +555,42 @@ %1 views %1 مشاهدات + + %1 of %2 (%3) ? %4 + %1 of %2 (%3) ? %4 + + + Preparing + تهيئة + + + Failed + فشل + + + Completed + تم + + + Stopped + متوقف + + + Stop downloading + ايقاف التحميل + + + Show in %1 + اظهار في %1 + + + Open parent folder + فتح المجلد الرئيسي + + + Restart downloading + اعادة التحميل + SearchLineEdit diff --git a/locale/bg_BG.ts b/locale/bg_BG.ts index f507621..40f04d6 100644 --- a/locale/bg_BG.ts +++ b/locale/bg_BG.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutView @@ -62,6 +64,151 @@ Изчисти + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -302,6 +449,42 @@ Your privacy is now safe Вашата интимност вече е обезопасена + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -333,6 +516,26 @@ You're watching "%1" Вие гледате "%1" + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -347,6 +550,42 @@ %1 views %1 гледания + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/cs_CZ.ts b/locale/cs_CZ.ts index 5e20b53..65ee01e 100644 --- a/locale/cs_CZ.ts +++ b/locale/cs_CZ.ts @@ -5,12 +5,12 @@ AboutView - + There's life outside the browser! Život existuje i mimo prohlížeč! - + Version %1 Verze %1 @@ -19,12 +19,12 @@ Toto je vývojová verze, neočekávejte plnou funkčnost. - + Report bugs and send in your ideas to %1 Hlaste chyby a posílejte své nápady na %1 - + %1 is Free Software but its development takes precious time. %1 je svobodný software, ale jeho vývoj stojí drahocenný čas. @@ -33,22 +33,22 @@ Prosím <a href='%1'>přispějte přes PayPal</a> a podpořte další vývoj aplikace %2. - + Please <a href='%1'>donate</a> to support the continued development of %2. Prosím <a href='%1'>přispějte</a> na další vývoj %2. - + Icon designed by %1. Autor ikony: %1. - + Compact mode contributed by %1. Autor kompaktního módu: %1. - + HTTP proxy support contributed by %1. Autor podpory HTTP proxy: %1. @@ -57,17 +57,17 @@ Verzi pro Windows sestavil: %1 - + Translated by %1 Přeložili: %1 - + Released under the <a href='%1'>GNU General Public License</a> Vydáno pod <a href='%1'>licencí GNU General Public License</a> - + &Close &Zavřít @@ -90,6 +90,186 @@ Odstranit vše + + DownloadItem + + + bytes + bajtů + + + + KB + KB + + + + MB + MB + + + + bytes/sec + bajtů/sec + + + + KB/sec + KB + + + + MB/sec + MB/se + + + + seconds + sekund + + + + minutes + minut + + + + %4 %5 remaining + %4 %5 zbývá + + + + DownloadManager + + + This is just the demo version of %1. + Toto je pouze demoverze %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Umí stahovat pouze videa délky do %1 minut, abyste mohli funkci stahování vyzkoušet + + + + Continue + Pokračovat + + + + Get the full version + Získat plnou verzi + + + + %n Download(s) + + %n stahování + %n stahování + %n stahování + + + + + DownloadSettings + + + Change location... + Změnit složku pro stahování... + + + + Choose the download location + Vyberte složku, do které se bude stahovat + + + + Download location changed. + Nastavení složky pro stahování bylo změněno. + + + + Current downloads will still go in the previous location. + Probíhající stahování budou stále pokračovat v ukládání do dříve nastaveného adresáře + + + + Downloading to: %1 + Stahováno do: %1 + + + + DownloadView + + + + Downloads + Stahování + + + + GlobalShortcuts + + + Play + Přehrát + + + + Pause + Pozastavit + + + + Play/Pause + Pustit/Pozastavit + + + + Stop + Zastavit + + + + Stop playing after current track + Zastavit přehrávání po dokončení nyní přehrávaného videa + + + + Next track + Další video + + + + Previous track + Předchozí video + + + + Increase volume + Zvýšit hlasitost + + + + Decrease volume + Snížit hlasitost + + + + Mute + Ztlumit hlasitost + + + + Seek forward + Rychle vpřed + + + + Seek backward + Rychle vzad + + ListModel @@ -132,55 +312,55 @@ Vrátit se k předchozí obrazovce - + &Stop &Stop - + Stop playback and go back to the search view Zastaví přehrávání a vrátí se zpět na vyhledávání - + S&kip Př&eskočit - + Skip to the next video Přeskočí na další video - - + + &Pause &Pauza - - + + Pause playback Pozastaví přehrávání - - + + &Full Screen &Celá obrazovka - + Go full screen Přepne na celou obrazovku - + &Compact mode &Kompaktní mód - + Hide the playlist and the toolbar Skryje playlist a toolbar @@ -193,141 +373,187 @@ Otevřít video na YouTube - + Open the &YouTube page Otevřít stránku &YouTube - + Go to the YouTube video page and pause playback Otevře video na webu YouTube a pozastaví přehrávání - + Copy the YouTube &link Zkopírovat &odkaz na YouTube - + Copy the current video YouTube link to the clipboard Zkopíruje adresu videa na YouTube do schránky - + Copy the video stream &URL Zkopírovat adresu &video streamu - + Copy the current video stream URL to the clipboard Zkopíruje do schránky adresu video streamu - + &Remove &Odstranit - + Remove the selected videos from the playlist Odstraní vybraná videa z playlistu - + Move &Up &Nahoru - + Move up the selected videos in the playlist Posune vybraná videa výš v playlistu - + Move &Down &Dolů - + Move down the selected videos in the playlist Posune vybraná videa níž v playlistu - + &Clear recent keywords &Vymazat hledané výrazy - + Clear the search history. Cannot be undone. Vyprázdní historii vyhledávání. Akci nelze vrátit. - + &Quit &Zavřít - + Ctrl+Q Ctrl+Q - + Bye Sbohem - + &Website &Homepage - + %1 on the Web %1 na Webu - + Make a &donation &Podpořit - + + + &Downloads + &Stahování + + + + Show details about video downloads + Zobrazit podrobnosti o stahování videí + + + + &Download + &Stáhnout + + + + Download the current video + Stáhnout přávě zobrazené video + + + + Do you want to exit %1 with a download in progress? + Chcete ukončit %1, přestože ještě probíhá stahování? + + + + If you close %1 now, this download will be cancelled. + Jestli nyní ukončíte %1, bude nedokončené stahování přerušeno + + + + Close and cancel download + Přerušit stahování a ukončit aplikaci + + + + Wait for download to finish + Počkat na dokončení stahování + + + Maximum video definition set to %1 Maximální rozlišení videa je %1 + + + Downloads complete + Všechna stahování byla dokončena + &Donate via PayPal &Podpořte přes PayPal - + Please support the continued development of %1 Prosím přispějte na další vývoj aplikace %1 - + &About &O aplikaci - + Info about %1 Info o aplikaci %1 - + Search Hledat - + Mute volume Ztlumit - + Ctrl+M Ctrl+M @@ -348,83 +574,83 @@ Aktuální video není v HD - + Your privacy is now safe Vaše soukromí je nyní v bezpečí - + &Application &Aplikace - + &Playlist &Playlist - + &Video &Video - + &Help &Nápověda - + Press %1 to raise the volume, %2 to lower it Stiskněte %1 pro zvýšení hlasitosti; %2 pro snížení - - + + Opening %1 Otevírám %1 - + Fatal error: %1 Chyba: %1 - + Error: %1 Chyba: %1 - + &Play &Play - + Resume playback Pokračovat v přehrávání - + Exit &Full Screen Vypnout &fullscreen - + Remaining time: %1 Zbývající čas: %1 - + Volume at %1% Hlasitost na %1% - + Volume is muted Zvuk je ztlumen - + Volume is unmuted Zvuk je zapnut @@ -432,37 +658,62 @@ MediaView - + Most relevant Nalezená videa - + Most recent Nejnovější - + Most viewed Nejsledovanější - + You can now paste the YouTube link into another application Nyní můžete vložit odkaz na video na YouTube do jiného programu - + You can now paste the video stream URL into another application Nyní můžete vložit odkaz na video stream do jiné aplikace - + The link will be valid only for a limited time. Tento odkaz platí jen po omezenou dobu. - + + This is just the demo version of %1. + Toto je %1 -- demoverze. + + + + It allows you to test the application and see if it works for you. + Umožňuje vyzkoušet aplikaci, abyste ověřili, jestli pro vás funguje. + + + + Continue + Pokračovat + + + + Get the full version + Stáhnout plnou verzi + + + + Downloading %1 + Je stahováno %1 + + + You're watching "%1" Sledujete "%1" @@ -470,7 +721,7 @@ NetworkAccess - + Network error: %1 Chyba připojení: %1 @@ -478,10 +729,55 @@ PrettyItemDelegate - + %1 views Shlédnuto %1x + + + %1 of %2 (%3) ? %4 + 1 z %2 (%3) ? %4 + + + + Preparing + Připravuje se + + + + Failed + Selhalo + + + + Completed + Dokončeno + + + + Stopped + Zastaveno + + + + Stop downloading + Zastavit stahování + + + + Show in %1 + Ukázat v %1 + + + + Open parent folder + Otevřít příslušný adresář + + + + Restart downloading + Začít stahovat znova + SearchLineEdit @@ -494,27 +790,27 @@ SearchView - + Welcome to <a href='%1'>%2</a>, Vítejte v <a href='%1'>%2</a> - + Enter a keyword to start watching videos. Zadejte klíčové slovo pro vyhledávání videí. - + Watch Sledovat - + Recent keywords Poslední klíčová slova - + A new version of %1 is available. Please <a href='%2'>update to version %3</a> Nová verze aplikace %1 je dostupná. Prosím <a href='%2'>aktualizujte na verzi %3</a> @@ -554,7 +850,7 @@ Video - + Network error: %1 for %2 Chyba přípojení: %1 pro %2 diff --git a/locale/de_DE.ts b/locale/de_DE.ts index 121483d..d491dd7 100644 --- a/locale/de_DE.ts +++ b/locale/de_DE.ts @@ -5,69 +5,57 @@ AboutView - + There's life outside the browser! - Es existiert Leben neben dem Browser ! + Es gibt Leben außerhalb des Browsers! - + Version %1 Version %1 - This is a "Technology Preview" release, do not expect it to be perfect. - Dies ist eine "Technology Vorschau", erwarte nicht, dass sie perfekt ist. - - - + Report bugs and send in your ideas to %1 - Bitte berichte Fehler und sende Deine Ideen an %1 + Berichten Sie Fehler und senden Sie Ihre Ideen an %1 - + %1 is Free Software but its development takes precious time. %1 ist freie Software, aber die Entwicklung kostet wertvolle Zeit. - Please <a href='%1'>donate via PayPal</a> to support the continued development of %2. - Bitte <a href='%1'>spende via PayPal</a> um die dauerhafte Entwicklung von %2 zu unterstützen. - - - + Please <a href='%1'>donate</a> to support the continued development of %2. - Bitte <a href='%1'>Spenden</a> um die ständige Entwicklung von %2 zu unterstützen. + Bitte <a href='%1'>spenden</a> Sie um die ständige Entwicklung von %2 zu unterstützen. - + Icon designed by %1. - Icon Entwurf durch %1. + Icon entworfen von %1. - + Compact mode contributed by %1. - Kompakt Modus beigetragen von %1. + Kompakt-Ansicht beigetragen von %1. - + HTTP proxy support contributed by %1. - HTTP Proxy unterstützung beigetragen von %1. - - - Windows version built by %1 - Windows Version erstellt durch %1 + HTTP-Proxy Unterstützung beigetragen von %1. - + Translated by %1 - Übersetzung durch %1 + Übersetzt von %1 - + Released under the <a href='%1'>GNU General Public License</a> Veröffentlicht unter der <a href='%1'>GNU General Public License</a> - + &Close S&chließen @@ -79,7 +67,7 @@ What you always wanted to know about %1 and never dared to ask - Was Du schon immer über %1 wissen wolltest, aber nie zu fragen wagtest + Was Sie schon immer über %1 wissen wollten, aber nie zu fragen wagten @@ -87,7 +75,186 @@ Clear - Säubern + Löschen + + + + DownloadItem + + + bytes + Bytes + + + + bytes/sec + Bytes/s + + + + KiB + KiB + + + + MiB + MiB + + + + KiB/sec + KiB/s + + + + MiB/sec + MiB/s + + + + seconds + Sekunden + + + + minutes + Minuten + + + + %4 %5 remaining + %4 %5 verbleibend + + + + DownloadManager + + + This is just the demo version of %1. + Dies ist nur eine Demoversion von %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Sie kann nur Videos herunterladen, die kürzer als %1 Minuten sind, damit Sie diese Funktion testen können. + + + + Continue + Fortfahren + + + + Get the full version + Volle Version herunterladen + + + + %n Download(s) + + %n Download + %n Downloads + + + + + DownloadSettings + + + Change location... + Pfad ändern... + + + + Choose the download location + Download-Verzeichnis auswählen + + + + Download location changed. + Download-Verzeichnis geändert. + + + + Current downloads will still go in the previous location. + Bereits laufende Downloads bleiben weiterhin im alten Verzeichnis. + + + + Downloading to: %1 + Speichere in: %1 + + + + DownloadView + + + + Downloads + Downloads + + + + GlobalShortcuts + + + Play + Abspielen + + + + Pause + Pausieren + + + + Play/Pause + Wiedergeben/Pausieren + + + + Stop + Anhalten + + + + Stop playing after current track + Wiedergabe nach aktuellem Titel anhalten + + + + Next track + Nächster Titel + + + + Previous track + Vorheriger Titel + + + + Increase volume + Lautstärke erhöhen + + + + Decrease volume + Lautstärke verringern + + + + Mute + Stumm schalten + + + + Seek forward + Vorspulen + + + + Seek backward + Zurückspulen @@ -124,367 +291,317 @@ MainWindow - &Back - &Zurück - - - Go to the previous view - Gehe zur vorherigen Ansicht - - - + &Stop - &Halt + An&alten - + Stop playback and go back to the search view Wiedergabe anhalten und zurück zur Suchansicht - + S&kip Ü&berspringen - + Skip to the next video - Überspringe zum nächsten Video + Springe zum nächsten Video - - + + &Pause &Pause - - + + Pause playback Wiedergabe pausieren - - + + &Full Screen &Vollbildmodus - + Go full screen Vollbildmodus aktivieren - &Compact View - &Kompakt Ansicht - - - Go compact view - Kompakt Ansicht aktivieren - - - &YouTube - &YouTube - - - Open the YouTube video page - Öffne die YouTube Video Seite - - - Ctrl+Y - Ctrl+Y - - - + &Compact mode &Kompakt-Ansicht - + Hide the playlist and the toolbar Verstecke Abspielliste und Werkzeugleiste + &Download - &Herunterladen + &Herunterladen - Download this video - Dieses Video herunterladen - - - Ctrl+S - Strg+S - - - + Open the &YouTube page Öffne die &YouTube Seite - + Go to the YouTube video page and pause playback Gehe zur YouTube Video Seite und pausiere die Wiedergabe - + Copy the YouTube &link YouTube &Link kopieren - + Copy the current video YouTube link to the clipboard YouTube Link in die Zwischenablage kopieren - + Copy the video stream &URL Video &URL kopieren - + Copy the current video stream URL to the clipboard Video URL in die Zwischenablage kopieren - + &Remove Entfe&rnen - + Remove the selected videos from the playlist Entferne das ausgewählte Video aus der Abspielliste - + Move &Up Bewege &hinauf - + Move up the selected videos in the playlist Bewerge das ausgewählte Video in der Abspielliste hinauf - + Move &Down Bewege hin&ab - + Move down the selected videos in the playlist Bewege das ausgewählte Video in der Abspielliste hinunter - + &Clear recent keywords Kürzlich genutzte S&chlüsselwörter entfernen - + Clear the search history. Cannot be undone. - Such Historie leeren. Kann nicht rückgängig gemacht werden. + Such-Chronik löschen. Kann nicht rückgängig gemacht werden. - + &Quit &Verlassen - + Ctrl+Q Ctrl+Q - + Bye Tschüss - + &Website &Webseite - + %1 on the Web %1 im Internet - + Make a &donation - Eine Spen&den machen + Eine Spen&de machen + + + + + &Downloads + &Downloads - + + Show details about video downloads + Details über Video-Downloads zeigen + + + + Download the current video + Video herunterladen + + + + Do you want to exit %1 with a download in progress? + Wollen Sie %1 mit einem aktivem Download beenden? + + + + If you close %1 now, this download will be cancelled. + Wenn Sie %1 beenden, wird das Herunterladen abgebrochen. + + + + Close and cancel download + Beenden und Herunterladen abbrechen + + + + Wait for download to finish + Warten, bis das Herunterladen abgeschlossen ist + + + Maximum video definition set to %1 - Maximale video Definition wurde auf %1 gesetzt + Maximale Videoauflösung wurde auf %1 gesetzt - &Donate via PayPal - Spen&den via PayPal + + Downloads complete + Downloads abgeschlossen - + Please support the continued development of %1 - Bitte unterstüte die fortwährende Entwicklung von %1 + Bitte unterstützen Sie die fortwährende Entwicklung von %1 - + &About &Über - + Info about %1 Informationen über %1 - + Search Suche - + Mute volume - Audio ausschalten + Ton stumm schalten - + Ctrl+M Strg+M - + Press %1 to raise the volume, %2 to lower it %1 drücken um die Lautstärke zu erhöhen, %2 um sie zu verringern - + Remaining time: %1 Verbleibende Zeit: %1 - High Definition video is enabled - High Definition Video ist eingeschaltet - - - High Definition video is not enabled - High Definition Video ist nicht eingeschaltet - - - The current video is in High Definition - Das derzeitige Video ist in High Definition - - - The current video is not in High Definition - Das derzeitige Video ist nicht in High Definition - - - + Your privacy is now safe - Deine Privatsphäre ist nun geschützt - - - No Video playing - Es wird kein Video abgespielt + Ihre Privatsphäre ist nun geschützt - You must first play the video you intent to download ! - Du musst das Video erst abspielen ! - - - Save video as... - Video speichern unter... - - - minitube video.mp4 - minitube video.mp4 - - - Downloading: - Herunterladen: - - - Abort Download - Herunterladen abbrechen - - - File creation failed - Das anlegen der Datei ist fehlgeschlagen - - - Download failed - Herunterladen fehlgeschlagen - - - + Volume at %1% Lautstärke %1% - + Volume is muted - Audio ist ausgeschaltet + Ton ist stumm geschaltet - + Volume is unmuted - Audio eingeschaltet - - - &Search - &Suche + Stummschaltung deaktiviert - + &Application &Anwendung - + &Playlist &Abspielliste - + &Video &Video - + &Help &Hilfe - - + + Opening %1 Öffne %1 - + Fatal error: %1 Schwerer Fehler: %1 - + Error: %1 Fehler: %1 - + &Play &Abspielen - + Resume playback Wiedergabe fortsetzen - + Exit &Full Screen Vollbildmodus &verlassen @@ -492,56 +609,126 @@ MediaView - + Most relevant Die bedeutsamsten - + Most recent Die neusten - + Most viewed Meist gesehen - + You can now paste the YouTube link into another application - Du kann den YouTube Link nun in einer anderen Anwendung einfügen + Sie können nun den YouTube Link in einer anderen Anwendung einfügen - + You can now paste the video stream URL into another application - Die kannst die Video URL nun in einer anderen Anwendung einfügen + Sie können nun die Video URL in einer anderen Anwendung einfügen - + The link will be valid only for a limited time. Der Link wird nur eine beschränkte Zeit gültig sein. - + + This is just the demo version of %1. + Dies ist nur eine Demoversion von %1. + + + + It allows you to test the application and see if it works for you. + Es gibt Ihnen die Möglichkeit das Programm zu testen und zu sehen, ob es funktioniert. + + + + Continue + Fortfahren + + + + Get the full version + Volle Version herunterladen + + + + Downloading %1 + Lade %1 herunter + + + You're watching "%1" - Du betrachtest "%1" + Sie betrachten "%1" NetworkAccess - + Network error: %1 - Netzwerk Fehler: %1 + Netzwerk-Fehler: %1 PrettyItemDelegate - + %1 views %1 mal betrachtet + + + %1 of %2 (%3) ? %4 + %1 von %2 (%3) ? %4 + + + + Preparing + Initialisiere + + + + Failed + Fehlgeschlagen + + + + Completed + Abgeschlossen + + + + Stopped + Abgebrochen + + + + Stop downloading + Herunterladen abbrechen + + + + Show in %1 + + + + + Open parent folder + Beinhaltenden Ordner öffnen + + + + Restart downloading + Herunterladen neustarten + SearchLineEdit @@ -554,51 +741,40 @@ SearchView - + Welcome to <a href='%1'>%2</a>, Willkommen bei <a href='%1'>%2</a>, - + Enter a keyword to start watching videos. Schlüsselwort eingeben um die Wiedergabe zu starten. - + Watch Anschauen - + Recent keywords - Aktuelle Schlüsselwörter + Kürzlich verwendete Schlüsselwörter - + A new version of %1 is available. Please <a href='%2'>update to version %3</a> - Eine neue Version von %1 ist verfügbar. Bitte <a href='%2'>auf Version %3 aktuallisieren</a> + Eine neue Version von %1 ist verfügbar. Bitte <a href='%2'>auf Version %3 aktualisieren</a> Make yourself comfortable - Mach es Dir gemütlich - - - - SettingsView - - Preferences - Einstellungen - - - &Close - S&chließen + Machen Sie es sich gemütlich Video - + Network error: %1 for %2 Netzwerk Fehler: %1 für %2 diff --git a/locale/el_GR.ts b/locale/el_GR.ts index 6e630b2..a4dd34a 100644 --- a/locale/el_GR.ts +++ b/locale/el_GR.ts @@ -77,6 +77,152 @@ Καθαρισμός + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + δευτερόλεπτα + + + minutes + λεπτά + + + %4 %5 remaining + απομένουν %4 %5 + + + + DownloadManager + + %n Download(s) + + %n Λήψεις + + + + + This is just the demo version of %1. + Αυτή είναι απλά η δοκιμαστική έκδοση του %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Μπορεί να κατεβάσει βίντεο μικρότερα από %1 λεπτά ώστε να δοκιμάσετε τη λειτουργία κατεβάσματος. + + + Continue + Συνέχεια + + + Get the full version + Αποκτήστε την πλήρη έκδοση + + + + DownloadSettings + + Change location... + Αλλάξτε τοποθεσία... + + + Choose the download location + Επιλέξτε την τοποθεσία λήψης + + + Download location changed. + Η τοποθεσία λήψης άλλαξε. + + + Current downloads will still go in the previous location. + Τα ήδη ληφθέντα θα παραμείνουν στην προηγούμενη τοποθεσία. + + + Downloading to: %1 + Λήψη στο: %1 + + + + DownloadView + + Downloads + Λήψεις + + + + GlobalShortcuts + + Play + Αναπαραγωγή + + + Pause + Παύση + + + Play/Pause + Αναπαραγωγή/Παύση + + + Stop + Διακοπή + + + Stop playing after current track + Διακοπή αναπαραγωγής μετά το τρέχον κομμάτι + + + Next track + Επόμενο κομμάτι + + + Previous track + Προηγούμενο κομμάτι + + + Increase volume + Αύξηση έντασης + + + Decrease volume + Μείωση έντασης + + + Mute + Σίγαση + + + Seek forward + Αναζήτηση μπροστά + + + Seek backward + Αναζήτηση πίσω + + ListModel @@ -394,6 +540,42 @@ Maximum video definition set to %1 H μέγιστη ανάλυση βίντεο τέθηκε σε %1 + + &Downloads + &Λήψεις + + + Show details about video downloads + Εμφάνιση λεπτομερειών για τις λήψεις βίντεο + + + &Download + &Λήψη + + + Download the current video + Λήψη του τρέχοντος βίντεο + + + Do you want to exit %1 with a download in progress? + Θέλετε να κλείσετε το %1 ενώ βρίσκεται μια λήψη σε εξέλιξη; + + + If you close %1 now, this download will be cancelled. + Αν κλείσετε το %1 τώρα, η λήψη θα ακυρωθεί. + + + Close and cancel download + Κλείσιμο και ακύρωση λήψης + + + Wait for download to finish + Αναμονή ολοκλήρωσης λήψης + + + Downloads complete + Οι λήψεις ολοκληρώθηκαν + MediaView @@ -425,6 +607,26 @@ The link will be valid only for a limited time. Ο σύνδεμος θα είναι έγκυρος μόνο για περιορισμένο χρονικό διάστημα. + + This is just the demo version of %1. + Αυτή είναι απλά μια δοκιμαστική έκδοση του %1. + + + It allows you to test the application and see if it works for you. + Σαε επιτρέπει να δοκιμάσετε την εφαρμογή και να δείτε αν σας κάνει. + + + Continue + Συνέχεια + + + Get the full version + Αποκτήστε την πλήρη έκδοση + + + Downloading %1 + Λήψη %1 + NetworkAccess @@ -439,6 +641,43 @@ %1 views Προβολές %1 + + %1 of %2 (%3) ? %4 + needed description of what this variables represent so it can be translated.. + + + + Preparing + Προετοιμάζεται + + + Failed + Απέτυχε + + + Completed + Ολοκληρώθηκε + + + Stopped + Διακόπηκε + + + Stop downloading + Διακοπή λήψης + + + Show in %1 + Εμφάνιση σε %1 + + + Open parent folder + Άνοιγμα γονικού φακέλου + + + Restart downloading + Επανεκκίνηση λήψης + SearchLineEdit diff --git a/locale/empty.ts b/locale/empty.ts new file mode 100644 index 0000000..3bdeda8 --- /dev/null +++ b/locale/empty.ts @@ -0,0 +1,780 @@ + + + + + AboutView + + + There's life outside the browser! + + + + + Version %1 + + + + + %1 is Free Software but its development takes precious time. + + + + + Please <a href='%1'>donate</a> to support the continued development of %2. + + + + + Report bugs and send in your ideas to %1 + + + + + Icon designed by %1. + + + + + Compact mode contributed by %1. + + + + + HTTP proxy support contributed by %1. + + + + + Translated by %1 + + + + + Released under the <a href='%1'>GNU General Public License</a> + + + + + &Close + + + + + About + + + + + What you always wanted to know about %1 and never dared to ask + + + + + ClearButton + + + Clear + + + + + DownloadItem + + + bytes + + + + + KB + + + + + MB + + + + + bytes/sec + + + + + KB/sec + + + + + MB/sec + + + + + seconds + + + + + minutes + + + + + %4 %5 remaining + + + + + DownloadManager + + + This is just the demo version of %1. + + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + + Continue + + + + + Get the full version + + + + + %n Download(s) + + + + + + + DownloadSettings + + + Change location... + + + + + Choose the download location + + + + + Download location changed. + + + + + Current downloads will still go in the previous location. + + + + + Downloading to: %1 + + + + + DownloadView + + + + Downloads + + + + + GlobalShortcuts + + + Play + + + + + Pause + + + + + Play/Pause + + + + + Stop + + + + + Stop playing after current track + + + + + Next track + + + + + Previous track + + + + + Increase volume + + + + + Decrease volume + + + + + Mute + + + + + Seek forward + + + + + Seek backward + + + + + ListModel + + + Searching... + + + + + Show %1 More + + + + + No videos + + + + + No more videos + + + + + LoadingWidget + + + Error + + + + + MainWindow + + + &Stop + + + + + Stop playback and go back to the search view + + + + + S&kip + + + + + Skip to the next video + + + + + + &Pause + + + + + + Pause playback + + + + + + &Full Screen + + + + + Go full screen + + + + + &Compact mode + + + + + Hide the playlist and the toolbar + + + + + Open the &YouTube page + + + + + Go to the YouTube video page and pause playback + + + + + Copy the YouTube &link + + + + + Copy the current video YouTube link to the clipboard + + + + + Copy the video stream &URL + + + + + Copy the current video stream URL to the clipboard + + + + + &Remove + + + + + Remove the selected videos from the playlist + + + + + Move &Up + + + + + Move up the selected videos in the playlist + + + + + Move &Down + + + + + Move down the selected videos in the playlist + + + + + &Clear recent keywords + + + + + Clear the search history. Cannot be undone. + + + + + &Quit + + + + + Ctrl+Q + + + + + Bye + + + + + &Website + + + + + %1 on the Web + + + + + Make a &donation + + + + + Please support the continued development of %1 + + + + + &About + + + + + Info about %1 + + + + + Search + + + + + Mute volume + + + + + Ctrl+M + + + + + + &Downloads + + + + + Show details about video downloads + + + + + &Download + + + + + Download the current video + + + + + &Application + + + + + &Playlist + + + + + &Video + + + + + &Help + + + + + Press %1 to raise the volume, %2 to lower it + + + + + + Opening %1 + + + + + Do you want to exit %1 with a download in progress? + + + + + If you close %1 now, this download will be cancelled. + + + + + Close and cancel download + + + + + Wait for download to finish + + + + + Fatal error: %1 + + + + + Error: %1 + + + + + &Play + + + + + Resume playback + + + + + Exit &Full Screen + + + + + Remaining time: %1 + + + + + Volume at %1% + + + + + Volume is muted + + + + + Volume is unmuted + + + + + Maximum video definition set to %1 + + + + + Your privacy is now safe + + + + + Downloads complete + + + + + MediaView + + + Most relevant + + + + + Most recent + + + + + Most viewed + + + + + You can now paste the YouTube link into another application + + + + + You can now paste the video stream URL into another application + + + + + The link will be valid only for a limited time. + + + + + This is just the demo version of %1. + + + + + It allows you to test the application and see if it works for you. + + + + + Continue + + + + + Get the full version + + + + + Downloading %1 + + + + + You're watching "%1" + + + + + NetworkAccess + + + Network error: %1 + + + + + PrettyItemDelegate + + + %1 views + + + + + %1 of %2 (%3) ? %4 + + + + + Preparing + + + + + Failed + + + + + Completed + + + + + Stopped + + + + + Stop downloading + + + + + Show in %1 + + + + + Open parent folder + + + + + Restart downloading + + + + + SearchLineEdit + + + Search + + + + + SearchView + + + Welcome to <a href='%1'>%2</a>, + + + + + Enter a keyword to start watching videos. + + + + + Watch + + + + + Recent keywords + + + + + A new version of %1 is available. Please <a href='%2'>update to version %3</a> + + + + + Make yourself comfortable + + + + + Video + + + Network error: %1 for %2 + + + + diff --git a/locale/en_US.ts b/locale/en_US.ts new file mode 100644 index 0000000..c7098f9 --- /dev/null +++ b/locale/en_US.ts @@ -0,0 +1,15 @@ + + + + + DownloadManager + + + %n Download(s) + + 1 Download + %n Downloads + + + + diff --git a/locale/es.ts b/locale/es.ts index 9441085..7928752 100644 --- a/locale/es.ts +++ b/locale/es.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutView @@ -74,6 +76,151 @@ Limpiar + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -387,6 +534,42 @@ Maximum video definition set to %1 Resolución máxima de video fijada en %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -418,6 +601,26 @@ The link will be valid only for a limited time. El enlace es válido sólo por un tiempo limitado. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -432,6 +635,42 @@ %1 views %1 visualizaciones + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/es_AR.ts b/locale/es_AR.ts index fb8955f..70225ff 100644 --- a/locale/es_AR.ts +++ b/locale/es_AR.ts @@ -72,6 +72,152 @@ Limpiar + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -368,6 +514,42 @@ Maximum video definition set to %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -399,6 +581,26 @@ The link will be valid only for a limited time. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -413,6 +615,42 @@ %1 views %1-visitas + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/es_ES.ts b/locale/es_ES.ts index f0626ea..ab98bef 100644 --- a/locale/es_ES.ts +++ b/locale/es_ES.ts @@ -76,6 +76,152 @@ Limpiar + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -388,6 +534,42 @@ Maximum video definition set to %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -419,6 +601,26 @@ The link will be valid only for a limited time. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -433,6 +635,42 @@ %1 views %1-visualizaciones + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/fi_FI.ts b/locale/fi_FI.ts index 787cf9d..061d14d 100644 --- a/locale/fi_FI.ts +++ b/locale/fi_FI.ts @@ -6,11 +6,11 @@ AboutView There's life outside the browser! - Elämää on muuallakin kuin selaimessa! + Selaimen ulkopuolellakin on elämää! Version %1 - Versio numero: %1 + Versionumero: %1 %1 is Free Software but its development takes precious time. @@ -18,11 +18,11 @@ Please <a href='%1'>donate</a> to support the continued development of %2. - Olisi mukaavaa jos tukisit %2 kehitystä tekemällä <a href='%1'>lahjoituksen</a>. + Voit tukea %2n kehityksen jatkumista tekemällä <a href='%1'>lahjoituksen</a>. Report bugs and send in your ideas to %1 - Kerro virheistä/ongelmista ja jaa ideoitasi osoitteeseen %1 + Ilmoita bugit ja kerro ideasi osoitteeseen %1 Icon designed by %1. @@ -34,7 +34,7 @@ HTTP proxy support contributed by %1. - HTTP välityspalvelin tuen teki %1. + HTTP-välityspalvelintuen teki %1. Translated by %1 @@ -42,7 +42,7 @@ Released under the <a href='%1'>GNU General Public License</a> - Julkaistu <a href='%1'>GNU General Public License</a> lisenssin alla + Julkaistu <a href='%1'>GNU General Public License</a> -lisenssillä &Close @@ -54,7 +54,7 @@ What you always wanted to know about %1 and never dared to ask - Mitä olet aina halunnut tietää %1sta muttet ole koskaan kehdannut kysyä + Mitä olet aina halunnut tietää %1sta, muttet ole koskaan kehdannut kysyä @@ -64,6 +64,152 @@ Tyhjennä + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -98,7 +244,7 @@ Stop playback and go back to the search view - Pysäytä taista ja palaa hakuruuttun + Pysäytä toisto ja palaa hakuruutuun S&kip @@ -110,11 +256,11 @@ &Pause - &Stoppaa + &Keskeytä Pause playback - Pysäytä toistaminen + Keskeytä toisto &Full Screen @@ -122,7 +268,7 @@ Go full screen - Vaihda kokoruutu tilaan + Siirry kokoruututilaan &Compact mode @@ -134,27 +280,27 @@ Open the &YouTube page - Avaa &Youtube sivusto + Avaa &Youtube -sivu Go to the YouTube video page and pause playback - Pysäytä toisto ja mene YouTube sivulle + Keskeytä toisto ja mene videon YouTube -sivulle Copy the YouTube &link - Kopio YouTube &linkki + Kopio YouTube -&linkki Copy the current video YouTube link to the clipboard - Kopio nykyisen videon YouTube linkki + Kopio nykyisen videon YouTube -linkki leikepöydälle Copy the video stream &URL - Kopio videovirran osoite (&URL) + Kopioi videovirran osoite (&URL) Copy the current video stream URL to the clipboard - Kopio nykyisen videvirran osoite (URL) + Kopioi nykyisen videvirran osoite (URL) leikepöydälle &Remove @@ -162,35 +308,35 @@ Remove the selected videos from the playlist - Poista valittu video listalta + Poista valitut videot toistolistalta Move &Up - Siirrä &Ylös päin + Siirrä &Ylös Move up the selected videos in the playlist - Siirrä valittu video ylemmäksi listalla + Siirrä valitut videot ylemmäksi toistolistalla Move &Down - Sirrä &Alas päin + Sirrä &Alas Move down the selected videos in the playlist - Siirrä valittu video alemmaksi listalla + Siirrä valitut videot alemmaksi toistolistalla &Clear recent keywords - &Poista viimeisimmät haut + &Poista viimeisimmät hakusanat Clear the search history. Cannot be undone. - Tyhjennä haku historia. Tätä toimintoa ei voi kumota. + Tyhjennä hakuhistoria. Tätä toimintoa ei voi kumota. &Quit - &Poistu + &Lopeta Ctrl+Q @@ -198,11 +344,11 @@ Bye - Heippa + Näkemiin &Website - &Nettisivu + &Nettisivusto %1 on the Web @@ -214,7 +360,7 @@ Please support the continued development of %1 - Tue %1n jatkuvaa kehitystä + Tue %1n jatkokehitystä &About @@ -222,7 +368,7 @@ Info about %1 - Tiotoja %1sta + Tietoja %1sta Search @@ -238,11 +384,11 @@ &Application - &Ohjelma + &Sovellus &Playlist - &Soittolista + &Toistolista &Video @@ -254,15 +400,15 @@ Press %1 to raise the volume, %2 to lower it - Paina %1ta nostaaksesi tai %2ta laskeaksesi äänen voimakkuutta + Paina näppäinyhdistelmää %1 nostaaksesi tai %2 laskeaksesi äänenvoimakkuutta Opening %1 - Avataan %1ta/tä + Avataan kohdetta %1 Fatal error: %1 - Kauhia Virhe: %1 + Kohtalokas virhe: %1 Error: %1 @@ -286,7 +432,7 @@ Volume at %1% - Äänen tasa %1% + Äänentaso: %1% Volume is muted @@ -298,22 +444,58 @@ Maximum video definition set to %1 - Suurin videon laatu on rajoiteetu %1aan/ään + Korkein videonlaatu on rajoitettu tarkkuteen %1 Your privacy is now safe Yksityisyytesi on nyt turvattu + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView Most relevant - Olennaisin + Osuvin Most recent - Uusin + Viimeisin Most viewed @@ -321,11 +503,11 @@ You can now paste the YouTube link into another application - Voit nyt liittää YouTube linkin johonkin toiseen ohjelmaan + Voit nyt liittää YouTube-linkin johonkin toiseen sovellukseen You can now paste the video stream URL into another application - Voit nyt liittää videovirran osoitteen(URL) johonkin toiseen ohjelmaan + Voit nyt liittää videovirran osoitteen (URL) johonkin toiseen sovellukseen The link will be valid only for a limited time. @@ -335,12 +517,32 @@ You're watching "%1" Nyt pyörii "%1" + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess Network error: %1 - Verkko virhe: %1 + Verkkovirhe: %1 @@ -349,6 +551,42 @@ %1 views Katsottu %1 kertaa + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit @@ -361,11 +599,11 @@ SearchView Welcome to <a href='%1'>%2</a>, - <a href='%1'>%2en</a> + Tervetuloa <a href='%1'>%2en</a> Enter a keyword to start watching videos. - Anna hakusana alkaaksesi katsella videoita. + Anna hakusana aloittaaksesi videoiden katselu. Watch @@ -388,7 +626,7 @@ Video Network error: %1 for %2 - Verkko virhe: "%1" "%2"lle + Verkkovirhe: "%1" "%2"lle diff --git a/locale/fr_FR.ts b/locale/fr_FR.ts index 6ca78de..042f13a 100644 --- a/locale/fr_FR.ts +++ b/locale/fr_FR.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutView @@ -74,6 +76,151 @@ Effacer + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -350,6 +497,42 @@ Maximum video definition set to %1 Résolution vidéo maximale fixée à %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -381,6 +564,26 @@ The link will be valid only for a limited time. Le lien ne sera valide que pour un temps limité. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -395,6 +598,42 @@ %1 views %1 vues + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/gl.ts b/locale/gl.ts index 27319cf..b4ec53a 100644 --- a/locale/gl.ts +++ b/locale/gl.ts @@ -1,4 +1,6 @@ - + + + UTF-8 AboutView @@ -74,6 +76,151 @@ Limpar + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -390,6 +537,42 @@ Maximum video definition set to %1 Resolución máxima de vídeo fixada en %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -421,6 +604,26 @@ The link will be valid only for a limited time. A ligazón ten validez só por un tempo limitado. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -435,6 +638,42 @@ %1 views %1 visualizacións + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/he_IL.ts b/locale/he_IL.ts index 3474648..63bc5de 100644 --- a/locale/he_IL.ts +++ b/locale/he_IL.ts @@ -14,7 +14,7 @@ This is a "Technology Preview" release, do not expect it to be perfect. - הפצה זו הנה "הצגה טכנולוגית מקדימה", אל תצפו ממנה להיות מושלמת. + הפצה זו הנה "הצגה טכנולוגית מקדימה", אל תצפו ממנה להיות מושלמת. Report bugs and send in your ideas to %1 @@ -26,7 +26,7 @@ Please <a href='%1'>donate via PayPal</a> to support the continued development of %2. - אנא <a href='%1'>תרמו באמצעות PayPal</a> כדי לתמוך בהמשך הפיתוח של %2. + אנא <a href='%1'>תרמו באמצעות PayPal</a> כדי לתמוך בהמשך הפיתוח של %2. Icon designed by %1. @@ -42,7 +42,7 @@ Released under the - שוחרר תחת תנאי + שוחרר תחת תנאי @@ -70,7 +70,7 @@ Windows version built by %1 - הגרסה ל־Windows נבנתה על ידי %1 + הגרסה ל־Windows נבנתה על ידי %1 Please <a href='%1'>donate</a> to support the continued development of %2. @@ -84,6 +84,152 @@ מחיקה + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -118,7 +264,7 @@ Go to the previous view - מעבר אל התצוגה הקודמת + מעבר אל התצוגה הקודמת &Stop @@ -162,11 +308,11 @@ &YouTube - &YouTube + &YouTube Open the YouTube video page - פתיחת עמוד הווידאו ב־YouTube + פתיחת עמוד הווידאו ב־YouTube &Remove @@ -214,7 +360,7 @@ &Donate via PayPal - &תרומה באמצעות PayPal + &תרומה באמצעות PayPal Please support the continued development of %1 @@ -230,7 +376,7 @@ &Search - &חיפוש + &חיפוש &Application @@ -274,7 +420,7 @@ &Back - &חזרה + &חזרה Search @@ -310,19 +456,19 @@ High Definition video is enabled - האפשרות לצפיה באיכות גבוהה פעילה + האפשרות לצפיה באיכות גבוהה פעילה High Definition video is not enabled - האפשרות לצפיה באיכות גבוהה אינה פעילה + האפשרות לצפיה באיכות גבוהה אינה פעילה The current video is in High Definition - סרטון הווידאו הנוכחי הנו באיכות גבוהה (HD) + סרטון הווידאו הנוכחי הנו באיכות גבוהה (HD) The current video is not in High Definition - סרטון הווידאו הנוכחי אינו באיכות גבוהה (HD) + סרטון הווידאו הנוכחי אינו באיכות גבוהה (HD) &Clear recent keywords @@ -368,6 +514,42 @@ Maximum video definition set to %1 איכות הנגינה המירבית מוגדרת ל־%1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -399,6 +581,26 @@ The link will be valid only for a limited time. הקישור יהיה תקף לזמן מוגבל בלבד. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -413,6 +615,42 @@ %1 views %1 צפיות + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit @@ -452,7 +690,7 @@ SettingsView Preferences - העדפות + העדפות diff --git a/locale/hr_HR.ts b/locale/hr_HR.ts index a53d5d2..0c7ebd2 100644 --- a/locale/hr_HR.ts +++ b/locale/hr_HR.ts @@ -1,32 +1,28 @@ - + UTF-8 AboutView There's life outside the browser! - Postoji život izvan preglednika! + Postoji život izvan web preglednika! Version %1 Verzija %1 - This is a "Technology Preview" release, do not expect it to be perfect. - Ovo je "Technology Preview"izdanje, te ne očekujte da bude savršeno. - - - Report bugs and send in your ideas to %1 - Prijavite sve bugove i posaljite svoje ideje na %1 + %1 is Free Software but its development takes precious time. + %1 je besplatan program ali njegov razvoj zahtijeva dosta dragocjenog vremena. - %1 is Free Software but its development takes precious time. - %1 je besplatan program ali njegov razvoj uzima dragocjeno vrijeme. + Please <a href='%1'>donate</a> to support the continued development of %2. + Molimo Vas da <a href='%1'>donirate pomoću PayPala</a> kako biste osigurali kontinuirani razvoj %2 programa. - Please <a href='%1'>donate via PayPal</a> to support the continued development of %2. - Molimo <a href='%1 '>donirajte preko PayPal-a</a> za podršku i kontinuiran razvoj %2. + Report bugs and send in your ideas to %1 + Prijavite greške te šaljite svoje ideje i prijedloge na %1 Icon designed by %1. @@ -34,23 +30,19 @@ Compact mode contributed by %1. - Kompaktni način pridonio je %1. + Kompaktni način prikaza omogućio je %1. HTTP proxy support contributed by %1. - HTTP proxy podršku je pridonio %1. - - - Windows version built by %1 - Windows verziju uradio je %1 + HTTP proxy podršku omogućio je %1. Translated by %1 - Preveo je %1 + Minitube su preveli: %1 Released under the <a href='%1'>GNU General Public License</a> - Objavljeno je pod <a href='%1'>GNU General Public License</a> + Program je objavljen pod <a href='%1'>GNU General Public Licencom</a> &Close @@ -58,15 +50,11 @@ About - O + O programu What you always wanted to know about %1 and never dared to ask - Što ste oduvijek željeli znati o %1 a nikad se niste usudili pitati - - - Please <a href='%1'>donate</a> to support the continued development of %2. - + Sve što ste željeli znati o %1, a niste se usudili pitati @@ -76,15 +64,160 @@ Očisti + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel Searching... - Pretraživanje... + Tražim... Show %1 More - Pokaži još jedan %1 + Prikaži još %1 videa No videos @@ -99,34 +232,26 @@ LoadingWidget Error - Greška + Pogreška MainWindow - - &Back - &Natrag - - - Go to the previous view - Idi na prethodni prikaz - &Stop - &Stani + &Zaustavi Stop playback and go back to the search view - Zaustavi playback i vrati se na pretraživanje + Zaustavi prikazivanje videa i vrati se na pretraživanje S&kip - Preskoči + P&reskoči Skip to the next video - Preskoči na sljedeći video + Preskoči na slijedeći video &Pause @@ -134,7 +259,7 @@ Pause playback - Pauziraj playback + Pauziraj izvođenje videa &Full Screen @@ -142,23 +267,39 @@ Go full screen - Gledaj preko cijelog ekrana + Gledaj video preko cijelog ekrana &Compact mode - &Kompaktan način + &Kompaktni način Hide the playlist and the toolbar - Sakrij naslove i alatnu traku + Sakrij listu izvođenja i alatnu traku + + + Open the &YouTube page + &YouTube web stranica + + + Go to the YouTube video page and pause playback + Otvori video na YouTube web stranici i pauziraj izvođenje videa + + + Copy the YouTube &link + Kopiraj &YouTube poveznicu + + + Copy the current video YouTube link to the clipboard + Kopiraj YouTube poveznicu videa koji se izvodi u međuspremnik - &YouTube - &YouTube + Copy the video stream &URL + Kopiraj web &adresu videa - Open the YouTube video page - Otvori YouTube video stranicu + Copy the current video stream URL to the clipboard + Kopiraj web adresu videa koji se izvodi u međuspremnik &Remove @@ -166,27 +307,35 @@ Remove the selected videos from the playlist - Ukloni odabrane snimke sa playliste + Ukloni označene video isječke sa liste izvođenja Move &Up - Premjesti gore + Premjesti &gore Move up the selected videos in the playlist - Premjesti gore selektirane snimke u playlistu + Premjesti odabrane video isječke prema gore u listi izvođenja Move &Down - Premjesti &Dolje + Premjesti &dolje Move down the selected videos in the playlist - Premjesti dolje selektirane snimke u playlistu + Premjesti odabrane video isječke prema dolje u listi izvođenja + + + &Clear recent keywords + &Obriši povijest pretraživanja + + + Clear the search history. Cannot be undone. + Obriši povijest pretraživanja. Ova akcija se ne može poništiti. &Quit - &Odustani + &Zatvori program Ctrl+Q @@ -194,7 +343,7 @@ Bye - Pozdrav + Doviđenja &Website @@ -205,24 +354,24 @@ %1 na internetu - &Donate via PayPal - &Donirajte preko PayPal-a + Make a &donation + Napravi &donaciju Please support the continued development of %1 - Molimo potporu u daljnjem razvoju %1 + Molimo Vas da podržite kontinuirani razvoj %1 &About - &O + &O programu Info about %1 - Info o %1 + Informacije o %1 Search - Pretraga + Traži Mute volume @@ -232,9 +381,13 @@ Ctrl+M Ctrl+M + + &Application + &Program + &Playlist - &Playlista + &Lista izvođenja &Video @@ -246,31 +399,31 @@ Press %1 to raise the volume, %2 to lower it - Pritisnite %1 za povećati zvuk, %2 za smanjiti zvuk + Pritisni %1 za pojačavanje zvuka, %2 za stišavanje Opening %1 - Otvaranje %1 + Otvaram %1 Fatal error: %1 - Fatalna greška: %1 + Fatalna pogreška: %1 Error: %1 - Greška: %1 + Pogreška: %1 &Play - &Pusti + &Pokreni Resume playback - Nastavi playback + Nastavi izvođenje Exit &Full Screen - Izlaz&Cijeli ekran + &Prekini prikaz preko cijelog ekrana Remaining time: %1 @@ -278,7 +431,7 @@ Volume at %1% - Jačina zvuka je na %1% + Jačina zvuka %1% Volume is muted @@ -289,67 +442,47 @@ Zvuk je uključen - High Definition video is enabled - Visoka rezolucija videa je uključena - - - High Definition video is not enabled - Visoka rezolucija videa je isključena - - - The current video is in High Definition - Odabrani video je u visokoj rezoluciji - - - The current video is not in High Definition - Odabrani video nije u visokoj rezoluciji - - - &Clear recent keywords - - - - &Application - + Maximum video definition set to %1 + Maksimalna video rezolucija je postavljena na %1 - Clear the search history. Cannot be undone. - + Your privacy is now safe + Vaša privatnost je sada sigurna - Your privacy is now safe + &Downloads - Open the &YouTube page + Show details about video downloads - Go to the YouTube video page and pause playback + &Download - Copy the YouTube &link + Download the current video - Copy the current video YouTube link to the clipboard + Do you want to exit %1 with a download in progress? - Copy the video stream &URL + If you close %1 now, this download will be cancelled. - Copy the current video stream URL to the clipboard + Close and cancel download - Make a &donation + Wait for download to finish - Maximum video definition set to %1 + Downloads complete @@ -367,20 +500,40 @@ Most viewed Najgledaniji + + You can now paste the YouTube link into another application + Možete zalijepiti YouTube poveznicu u drugu aplikaciju + + + You can now paste the video stream URL into another application + Možete zalijepiti web adresu video isječka u drugu aplikaciju + + + The link will be valid only for a limited time. + Poveznica će vrijediti samo neko vrijeme. + You're watching "%1" Gledate "%1" - You can now paste the YouTube link into another application + This is just the demo version of %1. - You can now paste the video stream URL into another application + It allows you to test the application and see if it works for you. - The link will be valid only for a limited time. + Continue + + + + Get the full version + + + + Downloading %1 @@ -388,28 +541,64 @@ NetworkAccess Network error: %1 - Greška u mreži:%1 + Greška na mreži: %1 PrettyItemDelegate %1 views - %1 gledano + %1 pregleda + + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + SearchLineEdit Search - Pretraga + Traži SearchView Welcome to <a href='%1'>%2</a>, - Dobro došli <a href='%1'>%2</a> + Dobrodošli na <a href='%1'>%2</a>, Enter a keyword to start watching videos. @@ -425,25 +614,18 @@ A new version of %1 is available. Please <a href='%2'>update to version %3</a> - Nova verzija %1 je dostupna. Molimo <a href='%2'>nadogradite verziju %3</a> + Nova verzija %1 je dostupna. Molimo <a href='%2'>nadogradite na verziju %3</a> Make yourself comfortable - Osjećajte se udobno - - - - SettingsView - - Preferences - Postavke + Udobno se smjestite i opustite se Video Network error: %1 for %2 - Greška u mreži:%1 za %2 + Greška na mreži: %1 za %2 diff --git a/locale/hu_HU.ts b/locale/hu_HU.ts index 8c30751..df570c6 100644 --- a/locale/hu_HU.ts +++ b/locale/hu_HU.ts @@ -76,6 +76,151 @@ Törlés + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -352,6 +497,42 @@ Maximum video definition set to %1 Maximum videó minőség beállítása %1-ra + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -383,6 +564,26 @@ The link will be valid only for a limited time. A link korlátozott ideig érvényes + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -397,6 +598,42 @@ %1 views %1x megtekintve + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/it_IT.ts b/locale/it_IT.ts index c886beb..1b802d6 100644 --- a/locale/it_IT.ts +++ b/locale/it_IT.ts @@ -34,7 +34,7 @@ Compact mode contributed by %1. - Modalità compatta sviluppata da %1 + Modalità compatta sviluppata da %1. Translated by %1 @@ -58,7 +58,7 @@ HTTP proxy support contributed by %1. - Supporto per i proxy HTTP svilupparo da %1 + Supporto per i proxy HTTP svilupparo da %1. Windows version built by %1 @@ -76,6 +76,152 @@ Cancella + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + secondi + + + minutes + minuti + + + %4 %5 remaining + %4 %5 al termine + + + + DownloadManager + + %n Download(s) + + 1 download + %n download + + + + This is just the demo version of %1. + Questa è solo la versione demo di %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Puoi scaricare solo video più corti di %1 minuti, così puoi testare la funzionalità dei download. + + + Continue + Continua + + + Get the full version + Compra la versione completa + + + + DownloadSettings + + Change location... + Cambia destinazione... + + + Choose the download location + Scegli la destinazione dei download + + + Download location changed. + La destinazione dei download è cambiata. + + + Current downloads will still go in the previous location. + I download già in corso andranno comunque nella destinazione precedente. + + + Downloading to: %1 + Scarica in: %1 + + + + DownloadView + + Downloads + Download + + + + GlobalShortcuts + + Play + Play + + + Pause + Pausa + + + Play/Pause + Play/Pausa + + + Stop + Stop + + + Stop playing after current track + Ferma al termine del video corrente + + + Next track + Prossima traccia + + + Previous track + Traccia precedente + + + Increase volume + Aumenta il volume + + + Decrease volume + Diminuisci il volume + + + Mute + Senza audio + + + Seek forward + Salta in avanti + + + Seek backward + Salta indietro + + ListModel @@ -146,7 +292,7 @@ &Compact mode - Modalità compatta + Modalità &compatta Hide the playlist and the toolbar @@ -318,7 +464,7 @@ Clear the search history. Cannot be undone. - &Cancella le ultime ricerche. L'azione non potrà essere annullata. + Cancella le ultime ricerche. L'azione non potrà essere annullata. Your privacy is now safe @@ -350,12 +496,48 @@ Make a &donation - Fai una donazione + Fai una &donazione Maximum video definition set to %1 La definizione video massima è impostata a %1 + + &Downloads + &Download + + + Show details about video downloads + Mostra informazioni sui download + + + &Download + &Download + + + Download the current video + Scarica il video corrente + + + Do you want to exit %1 with a download in progress? + Vuoi uscire da %1 con un download in corso? + + + If you close %1 now, this download will be cancelled. + Se chiudi %1 adesso, i download verranno annullati. + + + Close and cancel download + Chiudi e annulla i download + + + Wait for download to finish + Aspetta che i download siano completi + + + Downloads complete + I download sono completi + MediaView @@ -387,6 +569,26 @@ The link will be valid only for a limited time. Il link rimarrà valido per un periodo di tempo limitato. + + This is just the demo version of %1. + Questa è solo la versione demo di %1. + + + It allows you to test the application and see if it works for you. + Ti permette di testare l'applicazione e verificare che funzioni sul tuo computer. + + + Continue + Continua + + + Get the full version + Compra la versione completa + + + Downloading %1 + Scarica in: %1 + NetworkAccess @@ -401,6 +603,42 @@ %1 views %1 visualizzazioni + + %1 of %2 (%3) ? %4 + %1 di %2 (%3) ? %4 + + + Preparing + In preparazione + + + Failed + Fallito + + + Completed + Completato + + + Stopped + Fermo + + + Stop downloading + Interrompi il download + + + Show in %1 + Mostra nel %1 + + + Open parent folder + Mostra nella cartella + + + Restart downloading + Prova a scaricare di nuovo + SearchLineEdit diff --git a/locale/ja_JP.ts b/locale/ja_JP.ts index 7ae44c7..ea2aeef 100644 --- a/locale/ja_JP.ts +++ b/locale/ja_JP.ts @@ -72,6 +72,151 @@ クリア + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -332,6 +477,42 @@ Maximum video definition set to %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -363,6 +544,26 @@ The link will be valid only for a limited time. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -377,6 +578,42 @@ %1 views %1回 閲覧 + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/lat.ts b/locale/lat.ts index 4c46643..4fb799c 100644 --- a/locale/lat.ts +++ b/locale/lat.ts @@ -14,7 +14,7 @@ This is a "Technology Preview" release, do not expect it to be perfect. - Šis ir priekšapskates izlaidums, negaidiet no tā brīnumus. + Šis ir priekšapskates izlaidums, negaidiet no tā brīnumus. Report bugs and send in your ideas to %1 @@ -26,7 +26,7 @@ Please <a href='%1'>donate via PayPal</a> to support the continued development of %2. - Lūdzu, <a href='%1'>ziedojiet ar PayPal</a>, lai atbalstītu %2 turpmāku izstrādi. + Lūdzu, <a href='%1'>ziedojiet ar PayPal</a>, lai atbalstītu %2 turpmāku izstrādi. Icon designed by %1. @@ -42,7 +42,7 @@ Windows version built by %1 - Windows versiju izveidoja %1 + Windows versiju izveidoja %1 Translated by %1 @@ -66,7 +66,7 @@ Please <a href='%1'>donate</a> to support the continued development of %2. - Lūdzu, <a href='%1'>ziedojiet</a>, lai atbalstītu %2 turpmāku izstrādi. + Lūdzu, <a href='%1'>ziedojiet</a>, lai atbalstītu %2 turpmāku izstrādi. @@ -76,6 +76,153 @@ Dzēst + + DownloadItem + + bytes + baiti + + + KB + KB + + + MB + MB + + + bytes/sec + baiti sekundē + + + KB/sec + KB/s + + + MB/sec + MB/s + + + seconds + sekundes + + + minutes + minūtes + + + %4 %5 remaining + %4 %5 paliek + + + + DownloadManager + + %n Download(s) + + %n Lejupielāde(s) + %n Lejupielāde(s) + %n Lejupielāde(s) + + + + This is just the demo version of %1. + Šī ir %1 demo versija. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Tā spēj lejuplādēt tikai par %1 minūtēm īsākus klipus lai notestētu lejupielādes funkcionālitāti. + + + Continue + Turpināt + + + Get the full version + Novilkt pilnu versiju + + + + DownloadSettings + + Change location... + Mainīt mērķa mapi... + + + Choose the download location + Izvēlieties mērķa mapi + + + Download location changed. + Mērķa mape ir mainīta. + + + Current downloads will still go in the previous location. + Esošās lejupielādes tiks saglabātas iepriekšējā mapē. + + + Downloading to: %1 + Lejuplādēju iekš: %1 + + + + DownloadView + + Downloads + Lejupielādes + + + + GlobalShortcuts + + Play + Atskaņot + + + Pause + Apturēt + + + Play/Pause + Atskaņot / Apturēt + + + Stop + Pārtraukt + + + Stop playing after current track + Pārtraukt atskaņošanu pēc šī klipa + + + Next track + Nākošais klips + + + Previous track + Iepriekšējais klips + + + Increase volume + Skaļāk + + + Decrease volume + Klusāk + + + Mute + Izslēgt skaņu + + + Seek forward + Pārtīt uz priekšu + + + Seek backward + Pārtīt atpakaļ + + ListModel @@ -106,11 +253,11 @@ MainWindow &Back - Atpakaļ + Atpakaļ Go to the previous view - Atgriezties iepriekšējā skatā + Atgriezties iepriekšējā skatā &Stop @@ -154,11 +301,11 @@ &YouTube - &YouTube + &YouTube Open the YouTube video page - Atvērt YouTube vietni + Atvērt YouTube vietni &Remove @@ -206,7 +353,7 @@ &Donate via PayPal - Ziedojiet ar PayPal + Ziedojiet ar PayPal Please support the continued development of %1 @@ -218,7 +365,7 @@ Info par %1 - Ziņas par %1 + Ziņas par %1 Search @@ -294,19 +441,19 @@ High Definition video is enabled - Augstā izšķirtspēja ir ieslēgta + Augstā izšķirtspēja ir ieslēgta High Definition video is not enabled - Augstā izšķirtspēja nav ieslēgta + Augstā izšķirtspēja nav ieslēgta The current video is in High Definition - Šis ir augstās izšķirtspējas video + Šis ir augstās izšķirtspējas video The current video is not in High Definition - Šis nav augstās izšķirtspējas video + Šis nav augstās izšķirtspējas video &Clear recent keywords @@ -326,7 +473,7 @@ Open the &YouTube page - Atvērt &YouTube vietni + Atvērt &YouTube vietni Go to the YouTube video page and pause playback @@ -342,11 +489,11 @@ Copy the video stream &URL - Nokopēt video plūsmas &URL + Nokopēt video plūsmas &URL Copy the current video stream URL to the clipboard - Nokopēt esošās video plūsmas URL starpliktuvē + Nokopēt esošās video plūsmas URL starpliktuvē Make a &donation @@ -356,6 +503,42 @@ Maximum video definition set to %1 Klipa maksimālā izšķirtspēja ir %1 + + &Downloads + Lejupielādes + + + Show details about video downloads + Rādīt klipu lejupielāžu detaļas + + + &Download + Lejuplādēt + + + Download the current video + Lejuplādēt šo klipu + + + Do you want to exit %1 with a download in progress? + Vai vēlaties iziet no %1 neskatoties uz notiekošo lejupielādi? + + + If you close %1 now, this download will be cancelled. + Ja aizvērsit %1 tagad, šī lejupielāde tiks atcelta. + + + Close and cancel download + Aizvērt un atcelt lejupielādi + + + Wait for download to finish + Pagaidīt līdz lejupielādes beigām + + + Downloads complete + Lejupielādes pabeigtas + MediaView @@ -381,12 +564,32 @@ You can now paste the video stream URL into another application - Tagad varat ielīmēt video plūsmas URL citā programmā + Tagad varat ielīmēt video plūsmas URL citā programmā The link will be valid only for a limited time. Norāde būs derīga tikai ierobežotu laiku + + This is just the demo version of %1. + Šī ir %1 demo versija. + + + It allows you to test the application and see if it works for you. + Tā ļauj notestēt programmu un noskaidrot vai tā jums der. + + + Continue + Turpināt + + + Get the full version + Novilkt pilnu versiju + + + Downloading %1 + Lejuplādēju %1 + NetworkAccess @@ -401,6 +604,42 @@ %1 views %1 skatījumi + + %1 of %2 (%3) ? %4 + %1 no %2 (%3) ? %4 + + + Preparing + Topošās + + + Failed + Neizdevušās + + + Completed + Pabeigtas + + + Stopped + Apturētas + + + Stop downloading + Pārtraukt lejupielādi + + + Show in %1 + Rādīt %1 + + + Open parent folder + Atvērt mapi līmeni augstāk + + + Restart downloading + Atsākt lejupielādi + SearchLineEdit @@ -440,7 +679,7 @@ SettingsView Preferences - Uzstādījumi + Uzstādījumi diff --git a/locale/locale.pri b/locale/locale.pri index 72c6f7c..77a2f13 100644 --- a/locale/locale.pri +++ b/locale/locale.pri @@ -4,6 +4,7 @@ INCLUDEPATH += $$PWD DEPENDPATH += $$PWD TRANSLATIONS += \ + en_US.ts \ it_IT.ts \ pt_BR.ts \ ru_RU.ts \ @@ -27,7 +28,8 @@ TRANSLATIONS += \ ar.ts \ pt_PT.ts \ fi_FI.ts \ - bg_BG.ts + bg_BG.ts \ + zh_CN.ts isEmpty(QMAKE_LRELEASE) { win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe diff --git a/locale/nb_NO.ts b/locale/nb_NO.ts index d7b7293..a45220c 100644 --- a/locale/nb_NO.ts +++ b/locale/nb_NO.ts @@ -76,6 +76,152 @@ Nullstill + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -352,6 +498,42 @@ Maximum video definition set to %1 Maksimum video definisjon innstilling til %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -383,6 +565,26 @@ The link will be valid only for a limited time. Denne linken vil kun være gyldig i en begrenset tid. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -397,6 +599,42 @@ %1 views %1 visninger + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/nl_NL.ts b/locale/nl_NL.ts index 206ca0c..35ba018 100644 --- a/locale/nl_NL.ts +++ b/locale/nl_NL.ts @@ -64,6 +64,152 @@ Wis + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -304,6 +450,42 @@ Your privacy is now safe Uw privacy is nu veilig + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -335,6 +517,26 @@ You're watching "%1" U kijkt naar "%1" + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -349,6 +551,42 @@ %1 views %1 bekeken + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/pl_PL.ts b/locale/pl_PL.ts index f73d312..bcde0ea 100644 --- a/locale/pl_PL.ts +++ b/locale/pl_PL.ts @@ -76,6 +76,153 @@ Wyczyść + + DownloadItem + + bytes + bajtów + + + KB + KB + + + MB + MB + + + bytes/sec + bajtów/s + + + KB/sec + KB/s + + + MB/sec + MB/s + + + seconds + sekund + + + minutes + minut + + + %4 %5 remaining + Pozostało %4 %5 + + + + DownloadManager + + %n Download(s) + + + + + + + + This is just the demo version of %1. + To tylko wersja demo %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Program pobiera tylko filmy krótsze od %1 minut w celu przetestowania funkcji. + + + Continue + Kontynuuj + + + Get the full version + Zdobądź pełną wersję + + + + DownloadSettings + + Change location... + Zmień położenie + + + Choose the download location + Wybierz położenie pobierań + + + Download location changed. + Udało się zmienić położenie pobranych filmów. + + + Current downloads will still go in the previous location. + Pobrane filmy nadal będą zapisywane w poprzedniej lokalizacji. + + + Downloading to: %1 + Pobieranie do: %1 + + + + DownloadView + + Downloads + Pobrane filmy + + + + GlobalShortcuts + + Play + Odtwórz + + + Pause + Wstrzymaj + + + Play/Pause + Odtwórz/Wstrzymaj + + + Stop + Stop + + + Stop playing after current track + Zakończ odtwarzanie po tym utworze + + + Next track + Następny utwór + + + Previous track + Poprzedni utwór + + + Increase volume + Zwiększ głośność + + + Decrease volume + Zmniejsz głośność + + + Mute + Wycisz + + + Seek forward + Przewiń do przodu + + + Seek backward + Przewiń do tyłu + + ListModel @@ -352,6 +499,42 @@ Maximum video definition set to %1 Aktualne ustawienie jakości wideo to %1 + + &Downloads + &Pobrane pliku + + + Show details about video downloads + Pokaż szczegóły pobranych filmów + + + &Download + &Pobierz + + + Download the current video + Pobierz aktualnie odtwarzany film + + + Do you want to exit %1 with a download in progress? + Czy chcesz zamknąć %1 z uruchomionym procesem pobierania? + + + If you close %1 now, this download will be cancelled. + Jeśli zamkniesz %1, proces pobierania zostanie anulowany. + + + Close and cancel download + Zamknij i anuluj pobieranie + + + Wait for download to finish + Zaczekaj do końca pobierania + + + Downloads complete + Pobieranie zakończone + MediaView @@ -383,6 +566,26 @@ The link will be valid only for a limited time. Link będzie ważny tylko przez określony czas. + + This is just the demo version of %1. + To tylko wersja demo %1. + + + It allows you to test the application and see if it works for you. + Pozwala przetestować aplikację i sprawdzić, czy działa. + + + Continue + Kontynuuj + + + Get the full version + Zdobądź pełną wersję. + + + Downloading %1 + Pobieranie %1 + NetworkAccess @@ -397,6 +600,42 @@ %1 views %1 wyświetleń + + %1 of %2 (%3) ? %4 + %1 z %2 (%3) ? %4 + + + Preparing + Przygotowywanie + + + Failed + Nie udało się + + + Completed + Zakończono + + + Stopped + Zatrzymano + + + Stop downloading + Zatrzymaj pobieranie + + + Show in %1 + Pokaż w %1 + + + Open parent folder + Otwórz nadrzędny folder + + + Restart downloading + Restartuj pobieranie + SearchLineEdit @@ -444,7 +683,7 @@ Use high quality video when available - Użyj wysokiej jakości wideo jeśli jest to możliwe + Użyj wysokiej jakości wideo, jeśli jest to możliwe &Saved recent keywords diff --git a/locale/pt_BR.ts b/locale/pt_BR.ts index 5db5d34..bc1237e 100644 --- a/locale/pt_BR.ts +++ b/locale/pt_BR.ts @@ -76,6 +76,152 @@ Limpar + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -392,6 +538,42 @@ Maximum video definition set to %1 Máxima definição de vídeo definida para %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -423,6 +605,26 @@ The link will be valid only for a limited time. O link só será válido por um tempo limitado. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -437,6 +639,42 @@ %1 views %1 exibições + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/pt_PT.ts b/locale/pt_PT.ts index 1b7f7ba..7742623 100644 --- a/locale/pt_PT.ts +++ b/locale/pt_PT.ts @@ -64,6 +64,155 @@ Limpar + + DownloadItem + + bytes + bytes + + + KB + KB + + + MB + MB + + + bytes/sec + bytes/seg + + + KB/sec + KB/sec + + + MB/sec + MB/seg + + + seconds + segundos + + + minutes + minutos + + + %4 %5 remaining + %4 %5 restante + + + + DownloadManager + + %n Download(s) + + %n Transferência + %n Transferências + + + + This is just the demo version of %1. + Isto é apenas uma versão de demonstração de %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Apenas pode transferir vídeos mais curtos que %1 minuto(s) de forma a testar a funcionalidade de transferência. + + + Continue + Continuar + + + Get the full version + Transfira a versão completa + + + + DownloadSettings + + Change location... + soa melhor assim :) + Mudar pasta de destino... + + + Choose the download location + Escolha a pasta de destino da transferência + + + Download location changed. + A pasta de destino da transferência foi actualizada. + + + Current downloads will still go in the previous location. + A pasta de transferência actual irá manter-se na mesma pasta. + + + Downloading to: %1 + A transferir para: %1 + + + + DownloadView + + Downloads + Transferências + + + + GlobalShortcuts + + Play + vale a pena traduzir? + Iniciar + + + Pause + Pausa + + + Play/Pause + Iniciar/Pausar + + + Stop + vale a pena traduzir? + Parar + + + Stop playing after current track + Parar assim que terminar o vídeo ou música corrente + + + Next track + Próximo vídeo/música + + + Previous track + Vídeo/música anterior + + + Increase volume + Aumentar volume + + + Decrease volume + Diminuir volume + + + Mute + Silêncio + + + Seek forward + Avançar + + + Seek backward + Retroceder + + ListModel @@ -304,6 +453,42 @@ Your privacy is now safe A sua privacidade está agora assegurada + + &Downloads + &Transferências + + + Show details about video downloads + Mostar detalhes sobre a transferência de vídeos + + + &Download + &Transferência + + + Download the current video + Transferir o vídeo actual + + + Do you want to exit %1 with a download in progress? + Deseja sair %1 com uma transferência activa? + + + If you close %1 now, this download will be cancelled. + Se fechar %1, a transferência irá ser cancelada. + + + Close and cancel download + Fechar e cancelar a transferência + + + Wait for download to finish + Espere que a transferência termine + + + Downloads complete + Transferência completa + MediaView @@ -335,6 +520,26 @@ You're watching "%1" Está a assistir a "%1" + + This is just the demo version of %1. + Isto é apenas uma versão de demonstração de %1. + + + It allows you to test the application and see if it works for you. + Permite testes a aplicacção e verificar como funciona. + + + Continue + Continuar + + + Get the full version + Transfira a versão completa + + + Downloading %1 + Transferir: %1 + NetworkAccess @@ -349,6 +554,42 @@ %1 views %1 visualizações + + %1 of %2 (%3) ? %4 + %1 de %2 (%3) ? %4 + + + Preparing + A preparar + + + Failed + Falhou + + + Completed + Completo + + + Stopped + Parado + + + Stop downloading + Parar a transferência + + + Show in %1 + Mostrar em %1 + + + Open parent folder + Abrir pasta anterior + + + Restart downloading + Recomeçar a transferência + SearchLineEdit diff --git a/locale/ro_RO.ts b/locale/ro_RO.ts index d8f2ed3..3ede0d8 100644 --- a/locale/ro_RO.ts +++ b/locale/ro_RO.ts @@ -76,6 +76,153 @@ Şterge + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -352,6 +499,42 @@ Maximum video definition set to %1 Rezoluţia maxima a videoclipului este setată la %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -383,6 +566,26 @@ The link will be valid only for a limited time. Link-ul va fi valid doar pentru o perioadă limitată de timp. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -397,6 +600,42 @@ %1 views %1 vizualizări + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/ru_RU.ts b/locale/ru_RU.ts index bf0f394..3fba019 100644 --- a/locale/ru_RU.ts +++ b/locale/ru_RU.ts @@ -76,6 +76,153 @@ Очистить + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -392,6 +539,42 @@ Maximum video definition set to %1 Максимальное разрешение видео: %1 + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -423,6 +606,26 @@ The link will be valid only for a limited time. Адрес будет существовать ограниченное время. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -437,6 +640,42 @@ %1 views %1 просмотров + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/tr_TR.ts b/locale/tr_TR.ts index 1564f7e..f256759 100644 --- a/locale/tr_TR.ts +++ b/locale/tr_TR.ts @@ -76,6 +76,151 @@ Temizle + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + ListModel @@ -174,7 +319,7 @@ &Download - &Herunterladen + &Herunterladen Download this video @@ -412,6 +557,38 @@ Maximum video definition set to %1 En yüksek video tanımı %1 olarak ayarlı + + &Downloads + + + + Show details about video downloads + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + MediaView @@ -443,6 +620,26 @@ The link will be valid only for a limited time. Bağlantı kısıtlı bir süre için geçerli olacak. + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + NetworkAccess @@ -457,6 +654,42 @@ %1 views %1 görüntüleme + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + SearchLineEdit diff --git a/locale/uk.ts b/locale/uk.ts index 4ba4b57..f64ff8e 100644 --- a/locale/uk.ts +++ b/locale/uk.ts @@ -6,7 +6,7 @@ AboutView There's life outside the browser! - За межами браузера також є життя! + За межами веб-переглядача також є життя! Version %1 @@ -22,7 +22,7 @@ %1 is Free Software but its development takes precious time. - %1 є Вільним Програмним Забезпеченням але на його розробку було затрачено коштовний час. + %1 — вільне програмне забезпечення, але на його розробку було затрачено коштовний час. Please <a href='%1'>donate via PayPal</a> to support the continued development of %2. @@ -34,15 +34,15 @@ Translated by %1 - Переклад %1 + Перекладено %1 Released under the <a href='%1'>GNU General Public License</a> - Випущено під <a href='%1'>Загальною громадською ліцензією GNU</a> + Випущено за <a href='%1'>Загальною громадською ліцензією GNU</a> &Close - Пове&рнутися + &Закрити About @@ -50,7 +50,7 @@ What you always wanted to know about %1 and never dared to ask - Все що ви завжди хотіли знати про %1 але не наважувались запитати + Все що ви завжди хотіли знати про %1, але не наважувались запитати Compact mode contributed by %1. @@ -76,11 +76,158 @@ Очистити + + DownloadItem + + bytes + байт + + + KB + КБ + + + MB + МБ + + + bytes/sec + байт/сек + + + KB/sec + КБ/сек + + + MB/sec + МБ/сек + + + seconds + сек + + + minutes + хв + + + %4 %5 remaining + до завершення %4 %5 + + + + DownloadManager + + %n Download(s) + + %n завантаження + %n завантаження + %n завантажень + + + + This is just the demo version of %1. + Це демонстраційна версія %1. + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + З метою тестування ви можете завантажити відео тривалістю до %1 хв. + + + Continue + Продовжити + + + Get the full version + Отримати повнофункціональну версію + + + + DownloadSettings + + Change location... + Змінити теку для завантаження... + + + Choose the download location + Оберіть теку для завантаження + + + Download location changed. + Теку завантаження змінено. + + + Current downloads will still go in the previous location. + Поточні завантаження все ще буде збережено в попередньому місці. + + + Downloading to: %1 + Завантажується в %1 + + + + DownloadView + + Downloads + Завантаження + + + + GlobalShortcuts + + Play + Грати + + + Pause + Призупинити + + + Play/Pause + Грати/Призупинити + + + Stop + Зупинити + + + Stop playing after current track + Зупинити по завершенні поточного + + + Next track + Наступний + + + Previous track + Попередній + + + Increase volume + Підвищити гучність + + + Decrease volume + Знизити гучність + + + Mute + Приглушити + + + Seek forward + Шукати наступне + + + Seek backward + Шукати попереднє + + ListModel Searching... - Шукаю... + Пошук... Show %1 More @@ -158,7 +305,7 @@ Go full screen - Перехід в повноекранний режим + Перехід у повноекранний режим Alt+Return @@ -178,11 +325,11 @@ &Remove - &Видалити + &Вилучити Remove the selected videos from the playlist - Видалити обрані відео з переліку композицій + Вилучити вибрані відео зі списку Move &Up @@ -190,7 +337,7 @@ Move up the selected videos in the playlist - Зсунути обране відео на позицію вгору в переліку композицій + Зсунути вибране відео вгору по списку Ctrl+Up @@ -202,7 +349,7 @@ Move down the selected videos in the playlist - Зсунути обране відео на позицію вниз в переліку композицій + Зсунути вибране відео вниз по списку Ctrl+Down @@ -218,11 +365,11 @@ Bye - Хай щастить + На все добре &Website - Домашн&я сторінка програми + &Сайт Minitube on the Web @@ -258,7 +405,7 @@ &Playlist - Перелік &композицій + &Список &Video @@ -266,19 +413,19 @@ &Help - &Допомога + &Довідка Opening %1 - Відкриваю %1 + Відкриття %1 &Play - Відтворюв&ати + Гр&ати Resume playback - Продовжити відтворення + Відновити відтворення Exit &Full Screen @@ -290,7 +437,7 @@ Hide the playlist and the toolbar - Приховати перелік композицій та панель інструментів + Сховати список і панель інструментів Fatal error: %1 @@ -326,11 +473,11 @@ Press %1 to raise the volume, %2 to lower it - %1 щоб приглушити гучність, %2 щоб відновити + Натисніть %1, щоб приглушити гучність, та %2 щоб відновити її Remaining time: %1 - Час до завершення: %1 + Залишилось часу: %1 High Definition video is enabled @@ -350,7 +497,7 @@ &Clear recent keywords - Очистити недавн&і терміни пошуку + Очистити недавн&ій пошук Clear the search history. Cannot be undone. @@ -392,6 +539,42 @@ Maximum video definition set to %1 Режим чіткості відео %1 + + &Downloads + &Завантаження + + + Show details about video downloads + Показати деталі про завантажувані відео + + + &Download + &Завантажити + + + Download the current video + Завантажити поточне відео + + + Do you want to exit %1 with a download in progress? + Триває завантаження, бажаете закрити %1? + + + If you close %1 now, this download will be cancelled. + Якщо закрити %1 негайно, всі завантаження буде скасовано. + + + Close and cancel download + Скасувати та закрити + + + Wait for download to finish + Дочекатися завершення + + + Downloads complete + Завантаження завершено + MediaView @@ -423,6 +606,26 @@ The link will be valid only for a limited time. Посилання буде дійсне тільки протягом обмеженого часу. + + This is just the demo version of %1. + Це демонстраційна версія %1. + + + It allows you to test the application and see if it works for you. + Ми маєте змогу протестувати програму та перевірити працездатність. + + + Continue + Продовжити + + + Get the full version + Отримати повнофункціональну версію + + + Downloading %1 + Завантаження %1 + NetworkAccess @@ -435,7 +638,43 @@ PrettyItemDelegate %1 views - переглядів %1 + %1 переглядів + + + %1 of %2 (%3) ? %4 + %1 з %2 (%3) ? %4 + + + Preparing + Готується + + + Failed + Невдача + + + Completed + Завершено + + + Stopped + Зупинено + + + Stop downloading + Зупинити завантаження + + + Show in %1 + Відтворити в %1 + + + Open parent folder + Перейти до теки з відео + + + Restart downloading + Завантажити заново @@ -449,11 +688,11 @@ SearchView Welcome to <a href='%1'>%2</a>, - Вітаємо в <a href='%1'>%2</a>, + Ласкаво просимо до <a href='%1'>%2</a>, Enter a keyword to start watching videos. - Введіть терміни для пошуку відео. + Введіть фрази для пошуку відео. Watch @@ -465,11 +704,11 @@ A new version of %1 is available. Please <a href='%2'>update to version %3</a> - Наявна нова версія %1. Будь ласка <a href='%2'> обновіть програму до версії %3</a> + Випущено нову версію %1. Будь ласка, <a href='%2'> оновіть програму до версії %3</a> Make yourself comfortable - Влаштовуйтеся зручніше + Влаштовуйтеся якнайзручніше diff --git a/locale/zh_CN.ts b/locale/zh_CN.ts new file mode 100644 index 0000000..6b29757 --- /dev/null +++ b/locale/zh_CN.ts @@ -0,0 +1,631 @@ + + + +UTF-8 + + AboutView + + There's life outside the browser! + 浏览器之外,生活亦精彩! + + + Version %1 + 版本 %1 + + + %1 is Free Software but its development takes precious time. + %1是自由软件。其开发也同样要耗用宝贵时间的。 + + + Please <a href='%1'>donate</a> to support the continued development of %2. + 欢迎您的慷慨<a href='%1'>捐赠</a>支持我们继续开发%2。 + + + Report bugs and send in your ideas to %1 + 软件错误和建议请发给 %1 + + + Icon designed by %1. + 图标设计:%1。 + + + Compact mode contributed by %1. + 简洁模式贡献者:%1。 + + + HTTP proxy support contributed by %1. + HTTP代理支持贡献者:%1。 + + + Translated by %1 + 翻译:%1 + + + Released under the <a href='%1'>GNU General Public License</a> + 本软件遵循<a href='%1'>GNU通用公共许可证</a>予以发布 + + + &Close + 关闭(&C) + + + About + 关于 + + + What you always wanted to know about %1 and never dared to ask + 您对 %s 的期望都有什么,还请不吝赐教 + + + + ClearButton + + Clear + 清除 + + + + DownloadItem + + bytes + + + + KB + + + + MB + + + + bytes/sec + + + + KB/sec + + + + MB/sec + + + + seconds + + + + minutes + + + + %4 %5 remaining + + + + + DownloadManager + + %n Download(s) + + + + + + This is just the demo version of %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + + + + Continue + + + + Get the full version + + + + + DownloadSettings + + Change location... + + + + Choose the download location + + + + Download location changed. + + + + Current downloads will still go in the previous location. + + + + Downloading to: %1 + + + + + DownloadView + + Downloads + + + + + GlobalShortcuts + + Play + + + + Pause + + + + Play/Pause + + + + Stop + + + + Stop playing after current track + + + + Next track + + + + Previous track + + + + Increase volume + + + + Decrease volume + + + + Mute + + + + Seek forward + + + + Seek backward + + + + + ListModel + + Searching... + 搜索中…… + + + Show %1 More + 再多显示 %1 + + + No videos + 没有视频 + + + No more videos + 没有更多视频 + + + + LoadingWidget + + Error + 错误 + + + + MainWindow + + &Stop + 停止(&S) + + + Stop playback and go back to the search view + 停止回放并返回搜索视图 + + + S&kip + 跳过(&k) + + + Skip to the next video + 跳至下一视频 + + + &Pause + 暂停(&P) + + + Pause playback + 暂停回放 + + + &Full Screen + 全屏(&F) + + + Go full screen + 全屏播放 + + + &Compact mode + 简洁模式(&C) + + + Hide the playlist and the toolbar + 隐藏播放列表和工具栏 + + + Open the &YouTube page + 打开YouTube页面(&Y) + + + Go to the YouTube video page and pause playback + 打开YouTube视频页面并暂停回放 + + + Copy the YouTube &link + 复制YouTube链接(&l) + + + Copy the current video YouTube link to the clipboard + 复制当前视频的YouTube链接到剪贴板中 + + + Copy the video stream &URL + 复制视频流的URL链接(&U) + + + Copy the current video stream URL to the clipboard + 复制当前视频流的URL到剪贴板中 + + + &Remove + 移除(&R) + + + Remove the selected videos from the playlist + 从播放列表中移除选定的视频 + + + Move &Up + 上移(&U) + + + Move up the selected videos in the playlist + 在播放列表中向上移动选定的视频 + + + Move &Down + 下移(&D) + + + Move down the selected videos in the playlist + 在播放列表中向下移动选定的视频 + + + &Clear recent keywords + 清除最近使用的关键字词(&C) + + + Clear the search history. Cannot be undone. + 清除搜索历史。注意:清除的历史不可恢复。 + + + &Quit + 退出(&Q) + + + Ctrl+Q + + + + Bye + 再会 + + + &Website + 网站(&W) + + + %1 on the Web + %1在网站上 + + + Make a &donation + 敬请捐赠(&d) + + + Please support the continued development of %1 + 请您支持 %1 的可持续发展。 + + + &About + 关于(&A) + + + Info about %1 + 关于 %1 的信息 + + + Search + 搜索 + + + Mute volume + 静音 + + + Ctrl+M + + + + &Application + 应用程序(&A) + + + &Playlist + 播放列表(&P) + + + &Video + 视频(&V) + + + &Help + 帮助(&H) + + + Press %1 to raise the volume, %2 to lower it + 按住 %1 提高音量,%2 降低音量 + + + Opening %1 + 正在打开 %1 + + + Fatal error: %1 + 严重错误:%1 + + + Error: %1 + 错误:%1 + + + &Play + 播放(&P) + + + Resume playback + 继续回放 + + + Exit &Full Screen + 退出全屏(&F) + + + Remaining time: %1 + 剩余时间:%1 + + + Volume at %1% + 音量:%1% + + + Volume is muted + 已设为静音 + + + Volume is unmuted + 静音已解除 + + + Maximum video definition set to %1 + 最大视频定义设置为%1 + + + Your privacy is now safe + 您的隐私已受保护 + + + &Downloads + + + + Show details about video downloads + + + + &Download + + + + Download the current video + + + + Do you want to exit %1 with a download in progress? + + + + If you close %1 now, this download will be cancelled. + + + + Close and cancel download + + + + Wait for download to finish + + + + Downloads complete + + + + + MediaView + + Most relevant + 相关最多 + + + Most recent + 最近 + + + Most viewed + 观看最多 + + + You can now paste the YouTube link into another application + 您现在可以把YouTube的链接粘贴到其他应用了 + + + You can now paste the video stream URL into another application + 您现在可以把视频流的链接粘贴到其他应用了 + + + The link will be valid only for a limited time. + 此链接仅能保持短时间的有效性。 + + + You're watching "%1" + 您正在观看“%1” + + + This is just the demo version of %1. + + + + It allows you to test the application and see if it works for you. + + + + Continue + + + + Get the full version + + + + Downloading %1 + + + + + NetworkAccess + + Network error: %1 + 网络错误:%1 + + + + PrettyItemDelegate + + %1 views + %1 人次观看 + + + %1 of %2 (%3) ? %4 + + + + Preparing + + + + Failed + + + + Completed + + + + Stopped + + + + Stop downloading + + + + Show in %1 + + + + Open parent folder + + + + Restart downloading + + + + + SearchLineEdit + + Search + 搜索 + + + + SearchView + + Welcome to <a href='%1'>%2</a>, + 欢迎访问<a href='%1'>%2</a>, + + + Enter a keyword to start watching videos. + 请输入一个关键字词以开始观看视频。 + + + Watch + 观看 + + + Recent keywords + 最新关键字词 + + + A new version of %1 is available. Please <a href='%2'>update to version %3</a> + %1已有新版本。请<a href='%2'>更新到版本%3</a> + + + Make yourself comfortable + 请您安逸享受 + + + + Video + + Network error: %1 for %2 + 网络错误:%1。可能原因:%2 + + + diff --git a/minitube.icns b/minitube.icns deleted file mode 100644 index 00532783bc9bb34b4618f8f5f07f662bcec787c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40342 zcmeHvXLMCZmhL&aR}#?#6Kycg2HSuM5<&=}j55kuBBOv%MkoPQ=Uyd{Ku99zi~VRC%QJE%Y5$JY+*vav$!7nSZu#y;zI9`D)uxKFQf1@Qzh79kxlAd}OwWoN8TUa=%;=`8Q>migu+#6^V#`}ugz z3w7}PZm~~RLR@5MaDb=t?7-RX-^F>S#l}U42YEO-&I+8h;QL6gIIl&Eg8Y1Zyxl@) zF8DsgJ$_+u=%k3K$ncPWh#3oh7qB2XX=Q5qn)H+vOP0=9@cqJBt{(30%){Q@-NWe< z_rG(gm^RR5>b#aIGpBzxeY!Gj&~)!P?^a9ij(=nPIMZ0$*WY}tbLhD8u{Ptzj;7Wz zzID=;s!f&UXx)>)Us%4m+*F*KwlpT#+ttze+pL&H5n*90l!X-ddk1{CEb+*m-8;9} z)oiJ%tnu^wZt0R8in5`&U~NujD)aaFE-7id!Z#Eb=4Yj@SnucdeQe@3Zer^TvQm>* ztoL>OJ|eL^w`6^BL4N+)EWU95?-s>X=C5ap*~~W-nSJK}&M$W7mik?L_wC(PzqJ}L8o&1?C1Hk)ahVK+U&_w8!=J@$rqobB-OeOvb4 zUAA>=%~ri>=s0t^X=6cFa$-b)``npxzfDii&SBX+%QrJ4a^d%h8z0`kfA8*{+g-PA zJXq=aed31OZRcCho@s7uICgQl%lEPC@0@RMYi&8xbmGXxWzN5gEa__NINx@*>E!Vv zmzFyHZc)j#)9n1zbFHl{O;?vX{or4Cqow`A#Y>kibey}k#OVjGqAzYg`2346zxe#Y zonPa5_td?+b}M`AckkX40 z&0~xchW2z@uG5;;k|Yn1tUr_Zwk=!L&z8D^QKSB;``^3u&tJM9P59Tp{ORBH&mX)0 z@y&m=sQ-rv|HtC{KmM)1L;hd>UH|;K`ybx^qlNtc{?Y&VU;q3+_0K>5@BcPnvgIc= zohIqPQr0c~dB?v=e_`G7pZ~Ip{=>R$8iFxs2 zwVA2QSk{L4#fcl@ zW1}O(Ll;p~7J4n1H*1CG#Mn{0xy5Q6o{mGH1lA1$t&Ib{QLs~gVDzm76ro!e!lL>?&AIM$mCHglD&f$g@s2( zMX~6FsHg}uGk9UD`y|4T2wgFHS!zIdWOQtNVp7uLq@+Y)iNMubec;kDNh<>)qGA&k zFI~Q3<%;D?7bnCq8(WoD!ms_#d6#=qt0 z?a4eU+_}eK&#CW|(5MBGZ@f`EcJP~Thm6?O9W~$kEtff4orcbJnEQq=Y#QwB@^PTg zmW4xoB1-b!^B7(5RPvfC4K)p}95QO~>z{roIlnI*mb@cf7A$aeosU6RId_oLOb5qE zDjqjknPQkc`J<02KOFec|S=Hi@Rp+R4tdX3utTV2*5# z?BvAeGUuW5=6TFcqzSWj!>p2Byq?uIyUX!+bThZ55ot;(IgZ9g|F zoNa`P#p|+CQ{WJ&er6=5Q`oZX>D#vDo6M!9X2rlt*5$CQ@#HvG)@03$pa+sNrf;iC z$z5AeSX5ZR)=eN8Xu|5+Oi>>mm;Tw-nyi9?!s3$k8`#DP8^{uc1=;mleN^g<>e~Db z8<_$jtZYIlnPTJmbvrV|`w?NQW^S%8R?KA;m7A+r^@OU;l`xl5vP-KET0X0?w%Al! zv8j6NHdZ@f+t%t$6{V(*>b(-@twf_X zWwNZn*$H#Q(WXeZ*vZpOQ_4P8rVROH`X}KdcXmg)`o1;KaqFC+b3dCgK9J_jJlCmV z0b2uyL>z6O<31Ks#(SDHyymsnM|v+B;`{+7hEMc-H#ae3=2bcmn)}&w#~3OeKSlZ2 zX3CVwn?D*b<>Sd84Efo!#c(P(EYut#hlaASQQ_fYrs%87$C77Gb{<=oK#^ct^76&; zF%cnwzFuxF+UjymOqJU=E_a-5JbrL@U3EDx%F9Sux;P^Nt4nyn!JyvN#nolr+&PZ3 z)#YVc@|FPi35hI;EoMvDQnrjQADr$LE7pyoq>kIAx0IXw#>VT{t{-0%BZhxr zp{oG3!NS9=iAP;o>iY|I&r7TKT517YoogEw_iZ5sBSq!5DnockKAqw zh!}<8ot_tc>;C!9cJ=iZ647w{*zrSMO#$IF{8O@{Ndc-pcNW!%vW^~8>qBXDugr|O zb?-dkvo^bP=USRho;bmdkE8d4X|-6I9&_u)nU2m27dkuJ+s>Y5%}z~?jSWX{Hw6Zv zK0Glk_SUtNXIfg%K|pIO{htmB+Z{2J@cdqSxdxz5bMu*Vk^gXpUB63CC zjjppmzj*1ga^;Q7m&g*W_qE!PW%1YVoWFGW%C+k^l$&qDu2(K!YJZ^CMg}g9zjhn7 zSFhjfy3OvqdAsZ8^{baJoqy0EBu6exh`aXa!RMd<=8G@CRK6Pd<(FUl=JU@VJUS)X z73CST>J)3PY8u+y+;lKJkk$~_XeVFpu?b7dV0Ryfkl|QJ=J~!cYujf-W;(s;hbMxa z=1&g`hK(C#E6sZsGr%+4na#I#ahc~l*QsL8 zAjdiL=7hgTE6GR7WWz@vefVMJ2hxY^1KamrzLKPiVAM##sEzSOADL-**3ezJbaPrTn>|8o2G+vmhf$6toj(*4Ijzv%PFZZ36n|GDpwwfOg+ zyEogcs;S)cqEBT_l>GYWmwd*Ikqj@I+@jnjHIFu9fxa}UEo689rTh2N&h8(jy6%6H zws!xsw7I)X8g6`_cRl#kuRs6ImtTJM@asp9zA1aW@S8`EzJB=CmtX$o^I!k!!F{Y$ zSf;LBy>jVdCwAJ{i=S?4JazK;u_K2M9@w`RQC@u=1$h*Rl!~|waan%mqDjUwsT?9+ zH%>R*x(^v}tt8@`$B&;pF+F8Zd>?CqgdFVovE?VHeGv;-89@cAE&ERX{(JUa@Na+n?Ne1ImJ--eYhNET3X#W;9yvt8^0Okf067Z*a{NqN1wy%$ znbdUi*6lm@?*Hmu$1#{+kFwDL$gpfi_K0kQ;CDkwG4|B?c?hrxV09Xz*cHo{EnS?H zm=G5m6CD|e&ETToKx`Nn(mnti0oVES<|4pxnC%#{CWl^1OG%o`Rk7D^-0He>_x`Qc zqlXUeC!src)Kh4`6|p~TB!p7Hj7SzieQr)xR>qput7$I{p-Uh%9ztmc8cITGC+Xwu z>EZ6?Nz6RH4|py3_s^ODzeV@!4mlX?AW2XsRxA3AMC= zOuG*on4Q~6qGsB1#QccGg+vk6_nLMkOuHnBBxDgQaLNL!}bZir*P61jk1=-4=6&) zzFsLDA`B#gZ8z4}TZ@pYnWY39NMI%#h_8D=#lA69Skbb6vs;>sH8w&jHS1CAQ13bLTD%+*nszR||N#riO2owlHWf zZ-#+brBuPn?FG2WY+{PU850da-!0QSM06fX_Zw1@lUK2o#ub=k%lJ~mlEsUYSfXu0 zLVSE&9E&x?L`O&QNMi&NKS&)LLqZlU3T8pZK+FYy?q`E^4)Za3dwF>xh&8%13~f~w z=1;FI3?Fp<{{8#*31PMn25C%{#uJT@M#79FEQ&oN%@)!ij`fHmdCbGc-F+id#i9Fk zaq1X`68mIoSdT0twG2(`6-Lr@VLa48E#q3tR8ic=ph~iHcXz`kd%b8H+|g34X}T=q zJ`CnnT(cru`Z8JJVb77}yHJzGJxJDiqzyD#%X(yC!jTz`7;JlcdW>YLU8c5+t3Add zZP8;|m!VxfUB>(jNWY=aM9a7bhz7R>CB>RJSaFHgG;$y$j_sB9=)39Az{xOAq({pLVHD$ zMZ%C664KCZNt(3lH*a;3v;li|@7^WssPH)qGn z*<6)Cfs!Tx$&;(1Av>h)FBl9z?VW5%g4^7x9(+Wc8vaEHAbh^vZs}6Z_r1&=_4>ZP z%az;QEjl&=%UBJYl0t+%aQpW9dZ1gbg)j3zy^Ep2+uO~lMhB-zSp%n(lQ2xZZJmJr z*$bbIw}*3W4|055jE3BfbQU2GpqS?8FLTVt#(Ta)oem6*qcvb;&^ig&9uaKq^Ow&T zt~2(u&iMGa&)Kd6Lt!15a&rW1M=^}BvW2&J$pEnvuwKqPbyR2@rKw9PKVjion{6+Q zV!~ONU1%uc7*I{YuLY^0g&$BCI664&=s`scuA!bqqLEOI*sIhe^>&&R!=vq^qCiPS zMntf19%chnw#XP9926AD0u28CUe0We$x(6W8OF4g&`?_dD|D@qw(6LsSRNxqD^bSC z$cRWl+JuFL@{j>ozkwL&=gQ}roRm4-kvWv*xI&m~;x@|%t{tw7J z&JY_H8>_?^;gup0McE+SU}1*P&>$~mzS%{Y$DJ9Vl!-`AyBIPYY!c z+Z!Xn*a2Nmg4X7EV;uH*u`I@b@GP1|*}=Nu;Xz)e1!h-eK6hb&mgml8P+LXiI%Z>2 zQ!`->1f8_S$;B@+X|XBE1{x~~cJUNp#=;(hV&F)D93JH3VRA2ZQx6(wy`lWVSzrSo@E}2J9lG1 zmFLfA&{lSKwt_r)>QnAzZ2l0}1wMfx5itoMFB1Vf2s`YA*y!+(V1Mr# zFU6C4Fo4RmF0%PHNb_1Do;Y#x6d?}44r8;+{Q0h~YyopaxaHyDxzN|oj|Uh7{d~N= z>wOe&?!^&1%Q$5MEe%9IT7exqe&U2sugY$-tLuUVZf?w7_V8ey%!_+-A7x>!uYzEN zdowTQNfqu!5sp~F96fsMxPaMgzX=$m3m*6KV&2S$FXX-^zb*bIKkmyBj52Sk@U->7 z;TJbIE1<(ijvghT!J9X2suWG~Box`lhb?5j+>iU40;&Q{0URM9^JNRE!rP8^B!IKR zI&|pp5yFzNO|tXw1dun>F%T!s{Fpxv;DM%~O~Ixh9>@b2b{tx?Z0jw;6Du?%xDN@< zHdR(s5R{J(LTg_Gm~4L*zyev25^P>n7GhqcAOOdAateM>(vCbMAg%EBgHR*9A%H6v zV7}-)=5GiH2m}}lW{Z@N(oiJ~fABQ;9%LZ@#r*C4$b$jY3UTkgefvdwu_YV`<$&i8 z7M=wff`YIxiUSo&SWUPhjs>wr26A33Z~#RW0?`U@&z`+|32!v*UP(DZ3k)Q%MT_A5 zz@M>jC1OjY0{4Y~hYlATM&Z8%rk}4B;x0tRggAyataJpR4_s&{5!Wn&MJiEM@QVyC zjD?SYS0w+9T@ATK!1`HXVw1d!Fj?s+vkIuHM|i~U0SCtjl$cF$U<@vXMUGT=OFg&* zYX!P}$Bvx@Iu2~AiIfzWIwYudK(ZJXtHf2rD{wUUcl7IUj>3Hjm4(KEfmXQn_1m`# zWlf`$zMz7Hgr{OLa%?P%WAUa0bD{~pm&H**%t+cR3-n%aOK7Q<)d`J}6Nz-}hdmxNK|hY6jQ8L=gxzO=%|VXqp(p2WbRYtT?TDvFQ+9G{SoNGCl6 zWx5GrEL-vhg(rz{o3vNdv`44HHX$Ka=+#@cY$f!!k*wGdf*!<}P}PRk0-KoxQq&7nBJ347VH<;&R$wz3R+ zdA4E#Z9;_%v_hmq^fqA0wh{p6wOQb=pH!kMufaoim<6f}beu_8$yTvsa|%mlt0ro@ zYBj2bp{NyVCsQw2HUT-LO(fwxUySsGi-((#uziOy39Nn|r! z5cN9s2|C@fF%phIkQn|A<+2Q!Xi&{MW}2HR@&nFkinND4F2 zBZl4wer@r9fpMI% z$7wnUTPGF#_=*0_cJ12y{K=DlZzoTltd~i-EKmO6gWnIpfAlhzW6XW`-GKvth%^iw z`0l%Uv3*uncJ`!6g9beet&B7b8Z>E=Uc)mD6DABE{4fCJg9lHTpqH~X#*FdfQQ;*j z#*f!4>{qW&Pai!RHLfVy#DnqL=+Szugf2CV9EsXFJ+&i8@<>H8ff`{c#?)cMpv4TW za?qe*!+4}g;@u|6eig>ukRbyHJ|r6u@W6pXhVV$U#8Asu$^!@f-X8zaOW1Oo6?S&N zx0UVes7USx(_^4X@}q%AmV)ClOA>s^kCOh4CDp-Uaor!Wb^F@Am#*X272im_Lx0kVCTSN5k03dS$FBAtV)~prLu@uI=CMk z21t|IZNy**dQLkRl@tCRNHf9C+0H8Ky5A#5W#`OK{lS;1gc-@{!vf;a#dBCdA?8^Y zaNXLhsL8e}J2%?ay{_w?DoLdQpMWp>*7Vz;Z@+!2F=c2JC`TOs6>UHE9J&oggc_!?j)I;0?mPZ{$amlMl5<}X%c+r^&m|u% zIZjLRF^_n%BnLZC+-ow+Nfw4+7}uA#%Obk-FKjl{kLT~H9hGG8AbjVz;cDWC-%0+IzOn3}ALT_z~O z>n%sY&ytPQ<9;d;iDT?SD4n7!=^+KPK?@B^oKZ{bGDx?vP&A&gp$Sz11O&3g^a!04BLvHUdwcDP@F|D@qyv_Dp z8xC5XB!hw-onrD(}w2L&CR@tH`+8boWlNVHYmtvaHWgoKL?XH8=9K1=Wa9t zvj??@*wnQ(UywU3VEK9Z#fmD;HUiU*FdI&t6uQE+I&G<=D$kj-z}`A62v*g!7o<*BB?)#;M$iNL5>bhnn`Dr| zpy#BGd;?oAmz1z#UL=7-VC!V$+Sf`*6tf&T8#fzlGc!+~I;kmc#kZpK_yrqm{n;j7 z34A8-Imk;5Uq;|zDS(pzCIoO2z_M7T;UrGti6-==ZpEnM{3$ zN#Ml{P2g%1NCH=zKoX1@Cr%vKMD$^7H4(g1+RU*r*IMu_K3^}DSi#GAx`|j82mbLB z$B&C9pc8a174z>N4RFFIepKLd(E~z#>|ccXTng;_lb%z>Z>_98@ zj$mcacC?raRy}Pokc135{V3C9fB@5E&~Xp7D{%1hIb-Q(bT(N^PETh?q{E^mFqJNa z&a#jc`;PXG_DZB{Sot#ps%J{SY(S9=mTow5`0ycB29DQgExC3B)EZ<+9jx63BK{h$ z!7`-`P67@eI&@G7fTeWqPLOHT;q7vzhW;}<8%`+$VFydLOG#UO=-?r>4KR}~g3i%W z8_}(t|N?TRAlB>vl z*grv(0ogz+;B$Hx+qRdu3nP#-QmcA!dwIS~M30ft&&%c7n0cOu=sRZgb-<9Fosqgl z$3*O-Q*IY7UA|11wpgp%%B>fdXPtka)dg-LBc(>i>_g)Twu8t8=L^>a(O%OqQ0nwgf6G|UiEk`fzAe)@bD@rRjH$=qTvN&e^mQ+B5yUo|VYOST0$iT!8hG z=Syo@o?#8{itOlt>m}nrL!Bo$=^Sgd>JJ>dk#XH)gS@_k>7cw2NrH8@`T5ytDJiC8 zWmUC~Ne9d{6+uFs6Dqb!XKC&mao9=0pG;AS0z^fJV}&*a`5C3DrWBscSC#2lp!9Ss z&`+&|WoSi+$dDv8D2j;=XyMi<6Ure3VI@XndkVA5Rx4>rDi^6Ku7gnmM^g;M(^&$u zr)U$$q;S^D#$!}uOO{uyQYW*7UAG1X8taT`^Y(D25=oB_)0B zMpKz>X{k8Lg{9H}9braAvE{f0yEdmZ+nl9ja^Zt1btR{!TH%3SY9_qbD5_3NTfKTs zUJ)-Vqd5onU=+{{`%xNk^ z!s3leDJz#%aGansaqM~v)^5!+NjSW@i_u54teC~{5?&O_khosw@}S5;tM zrvMD!bE!f_vO>Xik`si&&&XL&LjW)UuzbEwDJUy67nKz%1$-R?5Xw~`Da#7w2(G0N z%0OIkIg_1@wosOAEl}7xR-hCrMYY9Bks@M2mQNLVMmkfGZH03f3>D!FIDO{yX@DRk zT}xrnI?QTb$clKesbtG~lL%e8I@LwgWXMAr(h3V}=wZT=u)RP%DT8x2@D9LX#jJ#{ zH*eUq(Tv51VY5K4gR+rmsLk57c~)2la6OB#*y%ydloKQzM7BlbbKocV2ELKJQYqtN z`=L3b0fm$R#ZjNNR&coPbwH?w8#x0sup%f$+m`k62B5)Z@ES~bBst-a^bLnS9l;_< zD?A*T+b7g(9@-={qcmqp$$Df&X~_ZzT#>2DtYDgwI}+>IU>uD@PFjVu0^ALDiU5Z- zV*`o1a~d2J*=Qg%M)_MauC^VH4Ybz-mpQ3Gy#%=m@)(%6zfLPBPSOfbEwG`p z6>=R&DnjNBqk)Q*M(rCFl+yUD61$$wN>y34B96GS%2A*&!4V2*%^a|X6>e>9T^-?0 z#Gd?=P*?PMFK#8SIp9z$E-9L~@U13s%5~gkB7zYRTjImomgqPKv5mkd(9T@b8Sa_v z0F_l_9LTMfw*Yz*4$cA(JHT}FBJdipaIBWsnd^BS zUDU)074DZ&;WLr=2TF#0STZ9X}?z0X<9|tTscHfPqE=Fz?tdGtN=Jy>lndnL~`) zmR>37bPQSQ5(^qpg})GgCqLzL%p0xrT5+grxQ^b4YudK z_w)*lRvJ3=VK8cj4h5~Gg;au8Lb7$IBIo+2ag!Rqc!dbTw>~LuYp-23lQ$0L9e~Wqs@Xll2##v z95e_-*`Pss8Tcf7d(dh2_EaLsBeq;x0q!WeROOC96oWg`zVRj7mhvTBC%o+iAq}ea zs#edEOpD8wm>2UT;+J}=Z|YzPro>H2rbLxl5(l_$>&Wpnf>WZy1@}eS^I0Qelm4U3 zk?j=IEif&(aV5y3hhLXHTKM%tK^f6aB%NQO`>__+pPs`R(JdQrMnoLs=VgSw2Qo)v zjY@Ca)z}>E;@CH)$Lt$l+_4gZgdF^e%ZqQ0^>9Y&6?SnapTyu-HZmf0*64Lx_u8At z(A}piYF~Wy@F8xffd=EaJ{Itpm@pDX*VJBkeN4NhX2}@|8cdaym60B+vqod=LJq2A ziXg-^n(8Sok;%B&^=)u3Po>`?6Yc9`M#~#(eQ7FE13c6D)?AD%9x zrmRYGR(DpJSCOPb^7Ce!xc1hU!U0_FeCj0ICgm*$8bqf2u*MopX?B+e;!G%o0Eqk)?Eqa$uM_2jY1)K(=(sG_7#t{X4i zRZH~yFw{TX@rQCQp6e||K3OY8hF04s1MXf=Y0r%sVg|KRWTf?Eu3E~=&EHBG+lHs$ zVcApZTQmMjpGr^IQv$=I`_HCvGoc#2u`3c(h#6Z_l&1kIrSZgfgNF8VaVgl`_fbrvJO<=o}(;Q5n z(kL~shgt_Bv9ITj|_!a={O2H|H+ zFbHolHOdVQTy0ICd^1fEvI)!zkNXowRT^1?0V~Z{!X~&Lq-U*Z>JbWmDqs3Z3{Zc7 zP&I);^xGqXArKhSPj-ybU;u)u2Ga97gdhMkh?iSbX;d2IQxBO60cWG%D!EGcWrRIo zkiJ9gc^2isIK{q_z7+OAQ+iM+iw_hDGn~J4oGOjHft`}RVk$Qi^i~@Kv00d zzLdTYTJ*_Ci;TQLkS_{|7mak@XaL2F9fuu`MSqFk;!u%#Q_&&^47WCtl$25pO>1J`=1Q6scduRW% zT_ZP~sOovW_u7X@(c^Xa-X~9J>ObFmuqM2}MSmapX+4!GGV=63IcoO8_d&-uoT$;? z?{kSm$t+LEjHo~2wvw;q!%~~)+{%js@Gpds#!njFEZ=m zRq`_AGA)f}Xl`yizFmKjZjEa)MGjrOs9VeOMVscPlRNeIATL6DPuu|!@9{oXw!w)2 zMfhokbe+_&yXQ>=GuoTTW48)l@`P!w83f3A=qsN)$Aq6Z;V^~a%$eqs{6y*To_>OC z9YW;7A)Gz2dE6;Lr1QMp0LH7GpO@Mg)(d`4YE{nJ;g@jmQ#cK!C(S2J$IEqX5aj4k zA`=cMjJU^gCz>L)tAC~Kgjp(<9-G#)&8(s9l1m8e zY@;y-*!3}Mgac|;P8*0>F`uhAYi_O7)?!)$<;F%U6+}W?n1bO&ei}z~T1;n4TeqAm zZKY90M|NmVHCeqU64>f{&FnP8Tgq7uiS=z}tpE6T3yp6XM|~`{#jk%I)|!mBSPREn z{G6$6*Lf30BzaPXH)Y)Pv3yS?rbR0sV-%s|LhUd742b$N!^<24*xXUmX%>Tqw=n@A&QFrr`Iv=z9GSQ4s!?tt;5t= z4^KqP3d3(x(fcy4R9U_)lFWEpLX@Y!%P@&}r|ClJ#j;DKI6+0D7i9uNZf&(f5GiG{ z_BS?Q-$*vS5ASe+Uo>B;x@^A0v7E3T3^)oa1d%>g5ze)V_vH=&z%C*Ryj*j|gg_4e z1_)I^6S=L;3IoZo9l{FV$d3Raw+kKQ3s8bx;+OfAimTGKimUtzzl`q}Q9&BfW9O}q zL~@ucg78^5B{6l`1$Gh96GGc7{Hpm{#dY&F4m5U|3Ta}I%do+Zh*_bDlrYe2u}S}i zl){-B$c9q#<;x6M{F-vT>V|Ti1CL#yLf{$b$HK^yS)z#)Fu(?2m;VUdE}pqyxQHKe zg&J3`u&eAEzs_&e+~ha-b#{$irNYaGOP4M}K|0IRVF_oTl&Bc+j|LLhg$sSK;}6|g(~U*LM1J&F-4{qI@;q0bG}yFYI_NUKItbggGyADO=n>X1l*2QmE z-Ql-c7rR9TH*Bw8zjo~^3~Nuoq_GvO$mjx=e?3@jK52>SDL~9n)QQ z&vcjHVYjK^mhH`(_?bFbdC=9Xs@4Fv#1@%c0XG(S-Dgp#{1W!9;)c1whDgpCIGr@Z{NOi=PtD7_sbse z`|O_W-Me@23wx|<fM%CvQRU%=G8uM3QSd<%x z86q_0tFJ68MD|$Z1@tvZBG%EO1n2vTEla>b;#U?d9+JR+{^+QK;2dE7kF)e|w#1Q6 zpN=H+^yzw;l#P=kpL~KO^CzF^Wh~2>J$drr!9Ro}m5j>_+LCV%GCTAA_mTSzsSGy^ z8S?)7dJSJ=c;_8ti~~?Ubm%+p=;ds+F@54hRQQOBi4*k-`_$C5wDIFbk~tiScRRd> z`wN;NDVe1h#*9Jjd=#m*W5)1s?S{fCWAez6(85Wp95Mvg7s9nHGhL1uM)w!U2K4G6 zy1x*vW|{eNdGKK5m%5th9$!t@HIQ~UnK)JKC?F5OClSJdy;{rU&J53DO* z)%Sk+ss&z^y{+Z++rQubWC81O@v6S}kH7x$*FXOH=ijUHH`a3c{ZGID>GwbV{>R!c zysGd0{-@vn^!uNF|MRN+jkTP9|I_b(`u$J8|FQN9uj+fh|LONX{r;!l|GX-HV=brO z|MdHxe*e?&f2{q&tNPyWfBOATzyIm?Kd;K)Sj*}6KmGov-~aUcA8Wtxs=oL8pML-I zU)lfIsoih)s^*)uoME=4fXy)L@>lhJ+%OsP2aSDI@~q{&Gu9sRN4#xa{;Ixz@-`0Q z+m8L{RmroKGwY+VHqxMp)2z#1)pwU^6YZqe-ktrb^%>M!8|6H6F`~n{*PxwCr`Tton9Dae%XU?-e8Y9-fPo{kO3w)-0 z_Q~5r#QOivJMaDipLafbXRHzOZHA5eWj+(f4TgA0vKuz+wO`;f>~#@-K>>rE?Jw}L Zv!m#*|MOql0;$V0qF{j`9=MJ8{{X7qOxOSb diff --git a/minitube.ico b/minitube.ico deleted file mode 100644 index 9a3acbe747912c44801fae5653e9e4353e6e4bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 B(Axk2 diff --git a/minitube.pro b/minitube.pro index 09f3649..bea0df2 100755 --- a/minitube.pro +++ b/minitube.pro @@ -1,19 +1,16 @@ -INCLUDEPATH += /usr/include/phonon CONFIG += release TEMPLATE = app +VERSION = 1.2 +DEFINES += APP_VERSION="$$VERSION" +INCLUDEPATH += /usr/include/phonon # TODO Saner string behaviour # DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII QT_STRICT_ITERATORS TARGET = minitube -mac { - TARGET = Minitube - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 -} QT += network \ xml \ phonon include(src/qtsingleapplication/qtsingleapplication.pri) -include(src/thlibrary/thlibrary.pri) HEADERS += src/MainWindow.h \ src/SearchView.h \ src/MediaView.h \ @@ -25,7 +22,7 @@ HEADERS += src/MainWindow.h \ src/searchlineedit.h \ src/urllineedit.h \ src/spacer.h \ - src/Constants.h \ + src/constants.h \ src/iconloader/qticonloader.h \ src/faderwidget/FaderWidget.h \ src/ListModel.h \ @@ -41,8 +38,17 @@ HEADERS += src/MainWindow.h \ src/videoareawidget.h \ src/googlesuggest.h \ src/videowidget.h \ - src/flickcharm.h \ - src/videodefinition.h + src/videodefinition.h \ + src/fontutils.h \ + src/thlibrary/thblackbar.h \ + src/globalshortcuts.h \ + src/globalshortcutbackend.h \ + src/downloadmanager.h \ + src/downloaditem.h \ + src/downloadview.h \ + src/downloadmodel.h \ + src/downloadlistview.h \ + src/downloadsettings.h SOURCES += src/main.cpp \ src/MainWindow.cpp \ src/SearchView.cpp \ @@ -68,8 +74,18 @@ SOURCES += src/main.cpp \ src/videoareawidget.cpp \ src/googlesuggest.cpp \ src/videowidget.cpp \ - src/flickcharm.cpp \ - src/videodefinition.cpp + src/videodefinition.cpp \ + src/constants.cpp \ + src/fontutils.cpp \ + src/thlibrary/thblackbar.cpp \ + src/globalshortcuts.cpp \ + src/globalshortcutbackend.cpp \ + src/downloadmanager.cpp \ + src/downloaditem.cpp \ + src/downloadview.cpp \ + src/downloadmodel.cpp \ + src/downloadlistview.cpp \ + src/downloadsettings.cpp RESOURCES += resources.qrc DESTDIR = build/target/ OBJECTS_DIR = build/obj/ @@ -84,13 +100,10 @@ include(locale/locale.pri) # deploy DISTFILES += CHANGES \ COPYING -mac { - CONFIG += x86 \ - ppc - QMAKE_INFO_PLIST = Info.plist - ICON = minitube.icns -} -unix { +unix:!mac { + QT += dbus + HEADERS += src/gnomeglobalshortcutbackend.h + SOURCES += src/gnomeglobalshortcutbackend.cpp isEmpty(PREFIX):PREFIX = /usr BINDIR = $$PREFIX/bin INSTALLS += target @@ -103,11 +116,13 @@ unix { desktop \ iconsvg \ icon16 \ + icon22 \ icon32 \ icon48 \ icon64 \ icon128 \ - icon256 + icon256 \ + icon512 translations.path = $$PKGDATADIR translations.files += $$DESTDIR/locale desktop.path = $$DATADIR/applications @@ -116,6 +131,8 @@ unix { iconsvg.files += data/minitube.svg icon16.path = $$DATADIR/icons/hicolor/16x16/apps icon16.files += data/16x16/minitube.png + icon22.path = $$DATADIR/icons/hicolor/22x22/apps + icon22.files += data/22x22/minitube.png icon32.path = $$DATADIR/icons/hicolor/32x32/apps icon32.files += data/32x32/minitube.png icon48.path = $$DATADIR/icons/hicolor/48x48/apps @@ -126,5 +143,9 @@ unix { icon128.files += data/128x128/minitube.png icon256.path = $$DATADIR/icons/hicolor/256x256/apps icon256.files += data/256x256/minitube.png + icon256.path = $$DATADIR/icons/hicolor/512x512/apps + icon256.files += data/256x256/minitube.png + icon512.path = $$DATADIR/icons/hicolor/512x512/apps + icon512.files += data/512x512/minitube.png } -win32:RC_FILE = minitube.rc +mac|win32:include(local/local.pri) diff --git a/minitube.rc b/minitube.rc deleted file mode 100644 index 2c1795b..0000000 --- a/minitube.rc +++ /dev/null @@ -1,2 +0,0 @@ -IDI_ICON1 ICON DISCARDABLE "minitube.ico" - diff --git a/resources.qrc b/resources.qrc index 639421a..53d1d4d 100755 --- a/resources.qrc +++ b/resources.qrc @@ -1,10 +1,5 @@ images/app.png - images/view-fullscreen.png - images/media-playback-pause.png - images/media-playback-start.png - images/media-playback-stop.png - images/media-skip-forward.png diff --git a/src/AboutView.cpp b/src/AboutView.cpp index e9357ea..961c867 100644 --- a/src/AboutView.cpp +++ b/src/AboutView.cpp @@ -1,10 +1,11 @@ #include "AboutView.h" -#include "Constants.h" +#include "constants.h" AboutView::AboutView(QWidget *parent) : QWidget(parent) { QBoxLayout *aboutlayout = new QHBoxLayout(this); aboutlayout->setAlignment(Qt::AlignCenter); + aboutlayout->setMargin(30); aboutlayout->setSpacing(30); QLabel *logo = new QLabel(this); @@ -16,15 +17,15 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) { layout->setSpacing(30); aboutlayout->addLayout(layout); - QString info = "

" + QString(Constants::APP_NAME) + "

" + QString info = "

" + QString(Constants::APP_NAME) + "

" "

" + tr("There's life outside the browser!") + "

" "

" + tr("Version %1").arg(Constants::VERSION) + "

" + QString("
").arg(Constants::WEBSITE) + - +#if !defined(APP_MAC) && !defined(Q_WS_WIN) "

" + tr("%1 is Free Software but its development takes precious time.").arg(Constants::APP_NAME) + "
" + tr("Please donate to support the continued development of %2.") .arg(QString(Constants::WEBSITE).append("#donate"), Constants::APP_NAME) + "

" - +#endif "

" + tr("Report bugs and send in your ideas to %1") .arg(QString("%1").arg(Constants::EMAIL)) + "

" @@ -45,7 +46,7 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) { "Yaron Shahrabani (he_IL), " "Oleksandr Korneta (uk), " "Inga Muste (lat), " - "Srecko Belaic (hr_HR), " + "Srecko Belaic & Zvonimir Đeri (hr_HR), " "Miguel Anxo Bouzada (es, gl), " "Guillaume Betous & Mathieu Dimanche (fr_FR), " "Krisztián Horváth (hu_HU), " @@ -57,13 +58,15 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) { "Sderawi (ar), " "Daniel Rodrigues (pt_PT), " "Jesse Jaara (fi_FI), " - "Tsvyatko Makazchiev (bg_BG)" + "Tsvyatko Makazchiev (bg_BG), " + "Changtai Liang (zh_CN)" ) + "

" - +#if !defined(APP_MAC) && !defined(Q_WS_WIN) "

" + tr("Released under the GNU General Public License") .arg("http://www.gnu.org/licenses/gpl.html") + "

" - - "

© 2009-2010 " + Constants::ORG_NAME + "

"; +#endif + "

© 2009-2010 " + Constants::ORG_NAME + "

" + "";; QLabel *infoLabel = new QLabel(info, this); infoLabel->setOpenExternalLinks(true); infoLabel->setWordWrap(true); diff --git a/src/AboutView.h b/src/AboutView.h index ba5fb7f..d411733 100644 --- a/src/AboutView.h +++ b/src/AboutView.h @@ -3,7 +3,7 @@ #include #include "View.h" -#include "Constants.h" +#include "constants.h" class AboutView : public QWidget, public View { diff --git a/src/Constants.h b/src/Constants.h deleted file mode 100755 index 8ba79e8..0000000 --- a/src/Constants.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef CONSTANTS_H -#define CONSTANTS_H - -#include - -namespace Constants { - static const char *VERSION = "1.0"; - static const char *APP_NAME = "Minitube"; - static const char *ORG_NAME = "Flavio Tordini"; - static const char *ORG_DOMAIN = "flavio.tordini.org"; - static const char *WEBSITE = "http://flavio.tordini.org/minitube"; - static const char *EMAIL = "flavio.tordini@gmail.com"; - static const QString USER_AGENT = QString(APP_NAME) + " " + VERSION + " (" + WEBSITE + ")"; -} - -#endif diff --git a/src/ListModel.cpp b/src/ListModel.cpp index e7592ec..761e5a4 100755 --- a/src/ListModel.cpp +++ b/src/ListModel.cpp @@ -78,29 +78,7 @@ QVariant ListModel::data(const QModelIndex &index, int role) const { case ActiveTrackRole: return video == m_activeVideo; case Qt::DisplayRole: - case Qt::StatusTipRole: return video->title(); - /* - case Qt::ToolTipRole: - - QString tooltip; - if (!element.firstChildElement().text().isEmpty()) { - tooltip.append(QString("").append(element.firstChildElement().text()).append("
")); - } - if (!fromDate.isEmpty()) { - tooltip.append("Pubblicato il ").append(fromDate); - } - if (!toDate.isEmpty()) { - tooltip.append("
Scadenza: ").append(toDate); - } - tooltip.append("
Tipo: ").append(typeName) - .append("
Id: ").appen QFont boldFont; - boldFont.setBold(true);d(id); - return tooltip; - */ - - // case StreamUrlRole: - // return video->streamUrl(); } return QVariant(); @@ -112,8 +90,6 @@ void ListModel::setActiveRow( int row) { m_activeRow = row; m_activeVideo = videoAt(row); - // setStateOfRow( row, Item::Played ); - int oldactiverow = m_activeRow; if ( rowExists( oldactiverow ) ) @@ -268,6 +244,7 @@ void ListModel::removeIndexes(QModelIndexList &indexes) { QList originalList(videos); QList delitems; foreach (QModelIndex index, indexes) { + if (index.row() >= originalList.size()) continue; Video* video = originalList.at(index.row()); int idx = videos.indexOf(video); if (idx != -1) { @@ -377,20 +354,21 @@ QModelIndex ListModel::indexForVideo(Video* video) { } void ListModel::move(QModelIndexList &indexes, bool up) { - QList movedVideos; foreach (QModelIndex index, indexes) { int row = index.row(); + if (row >= videos.size()) continue; // qDebug() << "index row" << row; Video *video = videoAt(row); movedVideos << video; } - int counter = 1; + int end=up ? -1 : rowCount()-1, mod=up ? -1 : 1; foreach (Video *video, movedVideos) { int row = rowForVideo(video); + if (row+mod==end) { end=row; continue; } // qDebug() << "video row" << row; removeRows(row, 1, QModelIndex()); @@ -401,7 +379,6 @@ void ListModel::move(QModelIndexList &indexes, bool up) { videos.insert(row, video); endInsertRows(); - counter++; } emit needSelectionFor(movedVideos); diff --git a/src/ListModel.h b/src/ListModel.h index c4c078f..c84b605 100755 --- a/src/ListModel.h +++ b/src/ListModel.h @@ -8,7 +8,11 @@ enum DataRoles { ItemTypeRole = Qt::UserRole, VideoRole, - ActiveTrackRole + ActiveTrackRole, + DownloadItemRole, + HoveredItemRole, + DownloadButtonHoveredRole, + DownloadButtonPressedRole }; enum ItemTypes { diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 31398c4..c87c398 100755 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1,19 +1,30 @@ #include "MainWindow.h" #include "spacer.h" -#include "Constants.h" +#include "constants.h" #include "iconloader/qticonloader.h" #include "global.h" #include "videodefinition.h" +#include "fontutils.h" +#include "globalshortcuts.h" +#ifdef Q_WS_X11 +#include "gnomeglobalshortcutbackend.h" +#endif +#ifdef APP_MAC +// #include "local/mac/mac_startup.h" +#endif +#include "downloadmanager.h" MainWindow::MainWindow() : + aboutView(0), + downloadView(0), mediaObject(0), audioOutput(0), - aboutView(0), m_fullscreen(false) { // views mechanism history = new QStack(); views = new QStackedWidget(this); + setCentralWidget(views); // views searchView = new SearchView(this); @@ -24,7 +35,6 @@ MainWindow::MainWindow() : views->addWidget(mediaView); toolbarSearch = new SearchLineEdit(this); - toolbarSearch->setFont(qApp->font()); toolbarSearch->setMinimumWidth(toolbarSearch->fontInfo().pixelSize()*15); connect(toolbarSearch, SIGNAL(search(const QString&)), searchView, SLOT(watch(const QString&))); @@ -43,20 +53,32 @@ MainWindow::MainWindow() : // mediaView init stuff thats needs actions mediaView->initialize(); - // restore window position - readSettings(); - - // cool toolbar on the Mac - // this is too buggy to be enabled - // setUnifiedTitleAndToolBarOnMac(true); - // event filter to block ugly toolbar tooltips qApp->installEventFilter(this); + // restore window position + readSettings(); + // show the initial view showWidget(searchView); - setCentralWidget(views); + // Global shortcuts + GlobalShortcuts &shortcuts = GlobalShortcuts::instance(); +#ifdef Q_WS_X11 + if (GnomeGlobalShortcutBackend::IsGsdAvailable()) + shortcuts.setBackend(new GnomeGlobalShortcutBackend(&shortcuts)); +#endif +#ifdef APP_MAC + // mac::MacSetup(); +#endif + connect(&shortcuts, SIGNAL(PlayPause()), pauseAct, SLOT(trigger())); + connect(&shortcuts, SIGNAL(Stop()), this, SLOT(stop())); + connect(&shortcuts, SIGNAL(Next()), skipAct, SLOT(trigger())); + + connect(DownloadManager::instance(), SIGNAL(statusMessageChanged(QString)), + SLOT(updateDownloadMessage(QString))); + connect(DownloadManager::instance(), SIGNAL(finished()), + SLOT(downloadsFinished())); } MainWindow::~MainWindow() { @@ -77,30 +99,34 @@ void MainWindow::createActions() { QMap *actions = The::globalActions(); - stopAct = new QAction(QtIconLoader::icon("media-playback-stop", QIcon(":/images/media-playback-stop.png")), tr("&Stop"), this); + stopAct = new QAction(QtIconLoader::icon("media-playback-stop"), tr("&Stop"), this); stopAct->setStatusTip(tr("Stop playback and go back to the search view")); stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_Escape) << QKeySequence(Qt::Key_MediaStop)); + stopAct->setEnabled(false); actions->insert("stop", stopAct); connect(stopAct, SIGNAL(triggered()), this, SLOT(stop())); - skipAct = new QAction(QtIconLoader::icon("media-skip-forward", QIcon(":/images/media-skip-forward.png")), tr("S&kip"), this); + skipAct = new QAction(QtIconLoader::icon("media-skip-forward"), tr("S&kip"), this); skipAct->setStatusTip(tr("Skip to the next video")); skipAct->setShortcuts(QList() << QKeySequence(Qt::CTRL + Qt::Key_Right) << QKeySequence(Qt::Key_MediaNext)); skipAct->setEnabled(false); actions->insert("skip", skipAct); connect(skipAct, SIGNAL(triggered()), mediaView, SLOT(skip())); - pauseAct = new QAction(QtIconLoader::icon("media-playback-pause", QIcon(":/images/media-playback-pause.png")), tr("&Pause"), this); + pauseAct = new QAction(QtIconLoader::icon("media-playback-pause"), tr("&Pause"), this); pauseAct->setStatusTip(tr("Pause playback")); pauseAct->setShortcuts(QList() << QKeySequence(Qt::Key_Space) << QKeySequence(Qt::Key_MediaPlay)); pauseAct->setEnabled(false); actions->insert("pause", pauseAct); connect(pauseAct, SIGNAL(triggered()), mediaView, SLOT(pause())); - fullscreenAct = new QAction(QtIconLoader::icon("view-fullscreen", QIcon(":/images/view-fullscreen.png")), tr("&Full Screen"), this); + fullscreenAct = new QAction(QtIconLoader::icon("view-fullscreen"), tr("&Full Screen"), this); fullscreenAct->setStatusTip(tr("Go full screen")); fullscreenAct->setShortcut(QKeySequence(Qt::ALT + Qt::Key_Return)); fullscreenAct->setShortcutContext(Qt::ApplicationShortcut); +#if QT_VERSION >= 0x040600 + fullscreenAct->setPriority(QAction::LowPriority); +#endif actions->insert("fullscreen", fullscreenAct); connect(fullscreenAct, SIGNAL(triggered()), this, SLOT(fullscreen())); @@ -170,7 +196,7 @@ void MainWindow::createActions() { quitAct->setShortcuts(QList() << QKeySequence(tr("Ctrl+Q")) << QKeySequence(Qt::CTRL + Qt::Key_W)); quitAct->setStatusTip(tr("Bye")); actions->insert("quit", quitAct); - connect(quitAct, SIGNAL(triggered()), this, SLOT(quit())); + connect(quitAct, SIGNAL(triggered()), this, SLOT(close())); siteAct = new QAction(tr("&Website"), this); siteAct->setShortcut(QKeySequence::HelpContents); @@ -211,13 +237,17 @@ void MainWindow::createActions() { addAction(volumeDownAct); volumeMuteAct = new QAction(this); + volumeMuteAct->setIcon(QtIconLoader::icon("audio-volume-high")); volumeMuteAct->setStatusTip(tr("Mute volume")); - volumeMuteAct->setShortcuts(QList() << QKeySequence(tr("Ctrl+M")) << QKeySequence(Qt::Key_VolumeMute)); + volumeMuteAct->setShortcuts(QList() + << QKeySequence(tr("Ctrl+M")) + << QKeySequence(Qt::Key_VolumeMute)); actions->insert("volume-mute", volumeMuteAct); - connect(volumeMuteAct, SIGNAL(triggered()), this, SLOT(volumeMute())); + connect(volumeMuteAct, SIGNAL(triggered()), SLOT(volumeMute())); addAction(volumeMuteAct); QAction *definitionAct = new QAction(this); + definitionAct->setIcon(QtIconLoader::icon("video-display")); definitionAct->setShortcuts(QList() << QKeySequence(Qt::CTRL + Qt::Key_D)); /* QMenu *definitionMenu = new QMenu(this); @@ -230,6 +260,37 @@ void MainWindow::createActions() { connect(definitionAct, SIGNAL(triggered()), SLOT(toggleDefinitionMode())); addAction(definitionAct); + QAction *action; + + /* + action = new QAction(tr("&Autoplay"), this); + action->setStatusTip(tr("Automatically start playing videos")); + action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_P)); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), SLOT(setAutoplay(bool))); + actions->insert("autoplay", action); + */ + + action = new QAction(tr("&Downloads"), this); + action->setStatusTip(tr("Show details about video downloads")); + action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_J)); + action->setCheckable(true); + action->setIcon(QtIconLoader::icon("go-down")); + action->setVisible(false); + connect(action, SIGNAL(toggled(bool)), SLOT(toggleDownloads(bool))); + actions->insert("downloads", action); + + action = new QAction(tr("&Download"), this); + action->setStatusTip(tr("Download the current video")); + action->setShortcut(QKeySequence::Save); + action->setIcon(QtIconLoader::icon("go-down")); + action->setEnabled(false); +#if QT_VERSION >= 0x040600 + action->setPriority(QAction::LowPriority); +#endif + connect(action, SIGNAL(triggered()), mediaView, SLOT(downloadVideo())); + actions->insert("download", action); + // common action properties foreach (QAction *action, actions->values()) { @@ -264,7 +325,7 @@ void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&Application")); // menus->insert("file", fileMenu); fileMenu->addAction(clearAct); -#ifndef Q_WS_MAC +#ifndef APP_MAC fileMenu->addSeparator(); #endif fileMenu->addAction(quitAct); @@ -282,12 +343,18 @@ void MainWindow::createMenus() { viewMenu->addAction(pauseAct); viewMenu->addAction(skipAct); viewMenu->addSeparator(); + viewMenu->addAction(The::globalActions()->value("download")); + viewMenu->addSeparator(); viewMenu->addAction(webPageAct); viewMenu->addAction(copyPageAct); viewMenu->addAction(copyLinkAct); viewMenu->addSeparator(); viewMenu->addAction(compactViewAct); viewMenu->addAction(fullscreenAct); +#ifdef APP_MAC + extern void qt_mac_set_dock_menu(QMenu *); + qt_mac_set_dock_menu(viewMenu); +#endif helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(siteAct); @@ -297,24 +364,18 @@ void MainWindow::createMenus() { void MainWindow::createToolBars() { + setUnifiedTitleAndToolBarOnMac(true); + mainToolBar = new QToolBar(this); -#if QT_VERSION < 0x040600 || defined(Q_WS_MAC) - mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); +#if QT_VERSION < 0x040600 | defined(APP_MAC) + mainToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); #else mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); #endif mainToolBar->setFloatable(false); mainToolBar->setMovable(false); - QFont smallerFont; - smallerFont.setPointSize(smallerFont.pointSize()*.85); - QFontInfo fontInfo(smallerFont); - if (fontInfo.pixelSize() < 10) { - smallerFont.setPixelSize(10); - } - mainToolBar->setFont(smallerFont); - -#ifdef Q_WS_MAC +#ifdef APP_MAC mainToolBar->setIconSize(QSize(32, 32)); #endif @@ -322,30 +383,50 @@ void MainWindow::createToolBars() { mainToolBar->addAction(pauseAct); mainToolBar->addAction(skipAct); mainToolBar->addAction(fullscreenAct); + mainToolBar->addAction(The::globalActions()->value("download")); + + mainToolBar->addWidget(new Spacer()); + + QFont smallerFont = FontUtils::small(); + currentTime = new QLabel(mainToolBar); + currentTime->setFont(smallerFont); + mainToolBar->addWidget(currentTime); + + mainToolBar->addWidget(new Spacer()); seekSlider = new Phonon::SeekSlider(this); seekSlider->setIconVisible(false); - Spacer *seekSliderSpacer = new Spacer(mainToolBar, seekSlider); - seekSliderSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - mainToolBar->addWidget(seekSliderSpacer); + seekSlider->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + mainToolBar->addWidget(seekSlider); + + mainToolBar->addWidget(new Spacer()); + + totalTime = new QLabel(mainToolBar); + totalTime->setFont(smallerFont); + mainToolBar->addWidget(totalTime); + + mainToolBar->addWidget(new Spacer()); + + mainToolBar->addAction(volumeMuteAct); volumeSlider = new Phonon::VolumeSlider(this); + volumeSlider->setMuteVisible(false); // qDebug() << volumeSlider->children(); // status tip for the volume slider QSlider* volumeQSlider = volumeSlider->findChild(); if (volumeQSlider) volumeQSlider->setStatusTip(tr("Press %1 to raise the volume, %2 to lower it").arg( volumeUpAct->shortcut().toString(QKeySequence::NativeText), volumeDownAct->shortcut().toString(QKeySequence::NativeText))); - // status tip for the mute button - QToolButton* muteToolButton = volumeSlider->findChild(); - if (muteToolButton) - muteToolButton->setStatusTip(volumeMuteAct->statusTip()); // this makes the volume slider smaller volumeSlider->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - mainToolBar->addWidget(new Spacer(mainToolBar, volumeSlider)); + mainToolBar->addWidget(volumeSlider); + + mainToolBar->addWidget(new Spacer()); toolbarSearch->setStatusTip(searchFocusAct->statusTip()); - mainToolBar->addWidget(new Spacer(mainToolBar, toolbarSearch)); + mainToolBar->addWidget(toolbarSearch); + + mainToolBar->addWidget(new Spacer()); addToolBar(mainToolBar); } @@ -356,14 +437,11 @@ void MainWindow::createStatusBar() { // also remove excessive spacing statusBar()->setStyleSheet("::item{border:0 solid} QToolBar {padding:0;spacing:0;margin:0}"); - currentTime = new QLabel(this); - statusBar()->addPermanentWidget(currentTime); - - totalTime = new QLabel(this); - statusBar()->addPermanentWidget(totalTime); - QToolBar *toolBar = new QToolBar(this); - toolBar->setToolButtonStyle(Qt::ToolButtonTextOnly); + toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + toolBar->setIconSize(QSize(16, 16)); + toolBar->addAction(The::globalActions()->value("downloads")); + // toolBar->addAction(The::globalActions()->value("autoplay")); toolBar->addAction(The::globalActions()->value("definition")); statusBar()->addPermanentWidget(toolBar); @@ -373,17 +451,24 @@ void MainWindow::createStatusBar() { void MainWindow::readSettings() { QSettings settings; restoreGeometry(settings.value("geometry").toByteArray()); +#ifdef APP_MAC + if (!isMaximized()) + move(x(), y() + mainToolBar->height() + 8); +#endif setDefinitionMode(settings.value("definition", VideoDefinition::getDefinitionNames().first()).toString()); audioOutput->setVolume(settings.value("volume", 1).toDouble()); audioOutput->setMuted(settings.value("volumeMute").toBool()); } void MainWindow::writeSettings() { - // do not save geometry when in full screen - if (m_fullscreen) - return; + QSettings settings; - settings.setValue("geometry", saveGeometry()); + + // do not save geometry when in full screen + if (!m_fullscreen) { + settings.setValue("geometry", saveGeometry()); + } + settings.setValue("volume", audioOutput->volume()); settings.setValue("volumeMute", audioOutput->isMuted()); mediaView->saveSplitterState(); @@ -426,16 +511,21 @@ void MainWindow::showWidget ( QWidget* widget ) { copyPageAct->setEnabled(widget == mediaView); copyLinkAct->setEnabled(widget == mediaView); aboutAct->setEnabled(widget != aboutView); + The::globalActions()->value("download")->setEnabled(widget == mediaView); + The::globalActions()->value("downloads")->setChecked(widget == downloadView); // toolbar only for the mediaView - mainToolBar->setVisible(widget == mediaView && !compactViewAct->isChecked()); + /* mainToolBar->setVisible( + (widget == mediaView && !compactViewAct->isChecked()) + || widget == downloadView + ); */ setUpdatesEnabled(true); QWidget *oldWidget = views->currentWidget(); views->setCurrentWidget(widget); -#ifdef Q_WS_MAC +#ifdef APP_MAC // crossfade only on OSX // where we can be sure of video performance fadeInWidget(oldWidget, widget); @@ -480,19 +570,28 @@ void MainWindow::quit() { } void MainWindow::closeEvent(QCloseEvent *event) { + if (DownloadManager::instance()->activeItems() > 0) { + QMessageBox msgBox; + msgBox.setIconPixmap(QPixmap(":/images/app.png").scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + msgBox.setText(tr("Do you want to exit %1 with a download in progress?").arg(Constants::APP_NAME)); + msgBox.setInformativeText(tr("If you close %1 now, this download will be cancelled.").arg(Constants::APP_NAME)); + msgBox.setModal(true); + + msgBox.addButton(tr("Close and cancel download"), QMessageBox::RejectRole); + QPushButton *waitButton = msgBox.addButton(tr("Wait for download to finish"), QMessageBox::ActionRole); + + msgBox.exec(); + + if (msgBox.clickedButton() == waitButton) { + event->ignore(); + return; + } + + } quit(); QWidget::closeEvent(event); } -/* -void MainWindow::showSettings() { - if (!settingsView) { - settingsView = new SettingsView(this); - views->addWidget(settingsView); - } - showWidget(settingsView); -}*/ - void MainWindow::showSearch() { showWidget(searchView); currentTime->clear(); @@ -522,23 +621,26 @@ void MainWindow::stateChanged(Phonon::State newState, Phonon::State /* oldState case Phonon::PlayingState: pauseAct->setEnabled(true); - pauseAct->setIcon(QtIconLoader::icon("media-playback-pause", QIcon(":/images/media-playback-pause.png"))); + pauseAct->setIcon(QtIconLoader::icon("media-playback-pause")); pauseAct->setText(tr("&Pause")); pauseAct->setStatusTip(tr("Pause playback") + " (" + pauseAct->shortcut().toString(QKeySequence::NativeText) + ")"); skipAct->setEnabled(true); + // stopAct->setEnabled(true); break; case Phonon::StoppedState: pauseAct->setEnabled(false); skipAct->setEnabled(false); + // stopAct->setEnabled(false); break; case Phonon::PausedState: skipAct->setEnabled(true); pauseAct->setEnabled(true); - pauseAct->setIcon(QtIconLoader::icon("media-playback-start", QIcon(":/images/media-playback-start.png"))); + pauseAct->setIcon(QtIconLoader::icon("media-playback-start")); pauseAct->setText(tr("&Play")); pauseAct->setStatusTip(tr("Resume playback") + " (" + pauseAct->shortcut().toString(QKeySequence::NativeText) + ")"); + // stopAct->setEnabled(true); break; case Phonon::BufferingState: @@ -547,6 +649,7 @@ void MainWindow::stateChanged(Phonon::State newState, Phonon::State /* oldState pauseAct->setEnabled(false); currentTime->clear(); totalTime->clear(); + // stopAct->setEnabled(true); break; default: @@ -561,8 +664,6 @@ void MainWindow::stop() { void MainWindow::fullscreen() { - setUpdatesEnabled(false); - // No compact view action when in full screen compactViewAct->setVisible(m_fullscreen); compactViewAct->setChecked(false); @@ -576,17 +677,17 @@ void MainWindow::fullscreen() { // workaround: prevent focus on the search bar // it steals the Space key needed for Play/Pause - mainToolBar->setEnabled(m_fullscreen); + toolbarSearch->setEnabled(m_fullscreen); // Hide anything but the video mediaView->setPlaylistVisible(m_fullscreen); statusBar()->setVisible(m_fullscreen); -#ifndef Q_WS_MAC +#ifndef APP_MAC menuBar()->setVisible(m_fullscreen); #endif -#ifdef Q_WS_MAC +#ifdef APP_MAC // make the actions work when video is fullscreen (on the Mac) QMap *actions = The::globalActions(); foreach (QAction *action, actions->values()) { @@ -599,20 +700,33 @@ void MainWindow::fullscreen() { #endif if (m_fullscreen) { - // use setShortucs instead of setShortcut + + // Exit full screen + + // use setShortcuts instead of setShortcut // the latter seems not to work fullscreenAct->setShortcuts(QList() << QKeySequence(Qt::ALT + Qt::Key_Return)); fullscreenAct->setText(tr("&Full Screen")); stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_Escape) << QKeySequence(Qt::Key_MediaStop)); +#ifdef APP_MAC + setCentralWidget(views); + views->showNormal(); + show(); + mediaView->setFocus(); +#else mainToolBar->show(); if (m_maximized) showMaximized(); else showNormal(); +#endif - // Make sure the window has focus (Mac) + // Make sure the window has focus activateWindow(); } else { + + // Enter full screen + stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_MediaStop)); fullscreenAct->setShortcuts(QList() << QKeySequence(Qt::Key_Escape) << QKeySequence(Qt::ALT + Qt::Key_Return)); fullscreenAct->setText(tr("Exit &Full Screen")); @@ -622,44 +736,44 @@ void MainWindow::fullscreen() { // geometry won't be saved writeSettings(); +#ifdef APP_MAC + hide(); + views->setParent(0); + QTimer::singleShot(0, views, SLOT(showFullScreen())); +#else mainToolBar->hide(); showFullScreen(); +#endif + } m_fullscreen = !m_fullscreen; - setUpdatesEnabled(true); } void MainWindow::compactView(bool enable) { - setUpdatesEnabled(false); - - mainToolBar->setVisible(!enable); - mainToolBar->setEnabled(!enable); mediaView->setPlaylistVisible(!enable); statusBar()->setVisible(!enable); -#ifndef Q_WS_MAC +#ifndef APP_MAC menuBar()->setVisible(!enable); #endif - // ensure focus does not end up to the search box - // as it would steal the Space shortcut - // toolbarSearch->setEnabled(!enable); - if (enable) { - stopAct->setShortcut(QString("")); - QList shortcuts; - // for some reason it is important that ESC comes first - shortcuts << QKeySequence(Qt::CTRL + Qt::Key_Return) << QKeySequence(Qt::Key_Escape); - compactViewAct->setShortcuts(shortcuts); + stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_MediaStop)); + compactViewAct->setShortcuts( + QList() << QKeySequence(Qt::CTRL + Qt::Key_Return) + << QKeySequence(Qt::Key_Escape)); + + // ensure focus does not end up to the search box + // as it would steal the Space shortcut + mediaView->setFocus(); } else { - compactViewAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return)); - stopAct->setShortcut(QKeySequence(Qt::Key_Escape)); + compactViewAct->setShortcuts(QList() << QKeySequence(Qt::CTRL + Qt::Key_Return)); + stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_Escape) << QKeySequence(Qt::Key_MediaStop)); } - setUpdatesEnabled(true); } void MainWindow::searchFocus() { @@ -707,7 +821,7 @@ void MainWindow::totalTimeChanged(qint64 time) { totalTime->clear(); return; } - totalTime->setText("/ " + formatTime(time)); + totalTime->setText(formatTime(time)); } QString MainWindow::formatTime(qint64 time) { @@ -748,10 +862,13 @@ void MainWindow::volumeChanged(qreal newVolume) { } void MainWindow::volumeMutedChanged(bool muted) { - if (muted) + if (muted) { + volumeMuteAct->setIcon(QtIconLoader::icon("audio-volume-muted")); statusBar()->showMessage(tr("Volume is muted")); - else + } else { + volumeMuteAct->setIcon(QtIconLoader::icon("audio-volume-high")); statusBar()->showMessage(tr("Volume is unmuted")); + } } void MainWindow::setDefinitionMode(QString definitionName) { @@ -779,13 +896,7 @@ void MainWindow::toggleDefinitionMode() { void MainWindow::showFullscreenToolbar(bool show) { if (!m_fullscreen) return; - - if (show) { - mainToolBar->show(); - } else { - mainToolBar->hide(); - } - mainToolBar->setEnabled(show); + mainToolBar->setVisible(show); } void MainWindow::showFullscreenPlaylist(bool show) { @@ -799,3 +910,40 @@ void MainWindow::clearRecentKeywords() { searchView->updateRecentKeywords(); statusBar()->showMessage(tr("Your privacy is now safe")); } + +/* + void MainWindow::setAutoplay(bool enabled) { + QSettings settings; + settings.setValue("autoplay", QVariant::fromValue(enabled)); + } + */ + +void MainWindow::updateDownloadMessage(QString message) { + The::globalActions()->value("downloads")->setText(message); +} + +void MainWindow::downloadsFinished() { + The::globalActions()->value("downloads")->setText(tr("&Downloads")); + statusBar()->showMessage(tr("Downloads complete")); +} + +void MainWindow::toggleDownloads(bool show) { + + if (show) { + stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_MediaStop)); + The::globalActions()->value("downloads")->setShortcuts( + QList() << QKeySequence(Qt::CTRL + Qt::Key_J) + << QKeySequence(Qt::Key_Escape)); + } else { + The::globalActions()->value("downloads")->setShortcuts( + QList() << QKeySequence(Qt::CTRL + Qt::Key_J)); + stopAct->setShortcuts(QList() << QKeySequence(Qt::Key_Escape) << QKeySequence(Qt::Key_MediaStop)); + } + + if (!downloadView) { + downloadView = new DownloadView(this); + views->addWidget(downloadView); + } + if (show) showWidget(downloadView); + else goBack(); +} diff --git a/src/MainWindow.h b/src/MainWindow.h index 1eb0251..e90dbf8 100755 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -12,6 +12,7 @@ #include "SearchView.h" #include "MediaView.h" #include "AboutView.h" +#include "downloadview.h" class MainWindow : public QMainWindow { @@ -56,6 +57,11 @@ private slots: void showFullscreenToolbar(bool show); void showFullscreenPlaylist(bool show); + // void setAutoplay(bool enabled); + void updateDownloadMessage(QString); + void downloadsFinished(); + void toggleDownloads(bool show); + private: void initPhonon(); void createActions(); @@ -76,6 +82,7 @@ private: SearchView *searchView; MediaView *mediaView; QWidget *aboutView; + QWidget *downloadView; // actions QAction *addGadgetAct; @@ -95,7 +102,6 @@ private: QAction *webPageAct; QAction *copyPageAct; QAction *copyLinkAct; - QAction *downloadAct; QAction *volumeUpAct; QAction *volumeDownAct; QAction *volumeMuteAct; diff --git a/src/MediaView.cpp b/src/MediaView.cpp index 8735f8a..739c595 100644 --- a/src/MediaView.cpp +++ b/src/MediaView.cpp @@ -3,7 +3,8 @@ #include "networkaccess.h" #include "videowidget.h" #include "minisplitter.h" -#include "flickcharm.h" +#include "constants.h" +#include "downloadmanager.h" namespace The { QMap* globalActions(); @@ -81,7 +82,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) { videoAreaWidget = new VideoAreaWidget(this); videoAreaWidget->setMinimumSize(320,240); -#ifdef Q_WS_MAC +#ifdef APP_MAC // mouse autohide does not work on the Mac (no mouseMoveEvent) videoWidget = new Phonon::VideoWidget(this); #else @@ -113,13 +114,12 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) { workaroundTimer->setInterval(3000); connect(workaroundTimer, SIGNAL(timeout()), SLOT(timerPlay())); - // TODO Enable this on touch devices - // FlickCharm *flickCharm = new FlickCharm(this); - // flickCharm->activateOn(listView); - -} - -MediaView::~MediaView() { +#ifdef APP_DEMO + demoTimer = new QTimer(this); + demoTimer->setSingleShot(true); + demoTimer->setInterval(60000); + connect(demoTimer, SIGNAL(timeout()), SLOT(demoMessage())); +#endif } @@ -144,6 +144,10 @@ void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) { void MediaView::search(SearchParams *searchParams) { reallyStopped = false; +#ifdef APP_DEMO + demoTimer->stop(); +#endif + videoAreaWidget->clear(); workaroundTimer->stop(); errorTimer->stop(); @@ -194,7 +198,7 @@ void MediaView::stateChanged(Phonon::State newState, Phonon::State /*oldState*/) // but Phonon on Linux needs a little more help to start playback if (!reallyStopped) mediaObject->play(); -#ifdef Q_WS_MAC +#ifdef APP_MAC // Workaround for Mac playback start problem if (!timerPlayFlag) { workaroundTimer->start(); @@ -269,6 +273,8 @@ void MediaView::activeRowChanged(int row) { QMainWindow* mainWindow = dynamic_cast(window()); if (mainWindow) mainWindow->statusBar()->showMessage(video->title()); + The::globalActions()->value("download")->setEnabled(DownloadManager::instance()->itemForVideo(video) == 0); + // see you in gotStreamUrl... } @@ -276,7 +282,15 @@ void MediaView::activeRowChanged(int row) { void MediaView::gotStreamUrl(QUrl streamUrl) { if (reallyStopped) return; + Video *video = static_cast

%1