From: Jakob Haufe
Date: Mon, 23 Sep 2013 14:00:22 +0000 (+0200)
Subject: Imported Upstream version 2.1.3
X-Git-Tag: upstream/2.1.3^0
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=7cdd5bd476021ec84d54c4ec5be02280e1e9e548;p=minitube
Imported Upstream version 2.1.3
---
diff --git a/CHANGES b/CHANGES
index a3127f8..8d9e128 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,16 +1,43 @@
-2.0 - January ?? 2013
+2.1.2
+- Downloads only enabled on Creative Commons licensed videos
+- Fixed playback of some videos
+
+2.1.1
+- Fixed VEVO videos playback
+- Fixed Ubuntu skin not being used
+
+2.1
+- Channel subscriptions
+- Move window by dragging from inside the video area
+- Faster startup
+- Optimizations and tweaks to the playlist
+- Float on top icon was missing on Mac & Windows
+- Compact mode window fixed aspect ratio on Mac
+- Ubuntu notifications
+- Fixed skipping to the next video
+- Fixed compact mode video cropped with very small window
+- Fixed long words or URLs in the video description causing a window resize
+- Fixed crash when resizing the playlist to a very small width
+
+2.0 - February 1 2013
- YouTube categories and "standard feeds": "Most Popular", "Featured", etc
- Country selection for YouTube categories and feeds
- Autoupdate on Mac and Windows
-- Related videos are now appended to the video when pasting a YouTube link
+- Related videos
+- Related videos are now appended when pasting a YouTube link
+- Bigger and nicer 16:9 thumbnails
- "Show 10 More" with a single click
- Play video in the playlist with a single click on its thumbnail
-- OS X Mountain Lion notifications on video start
+- Disk cache for video thumbnails
+- OS X Notification Center notifications on video start
+- Ubuntu Ambiance theme integration
- Fixed some YouTube links not working when pasted in the searchbox
- Fixed playlist drag'n'drop
- Fixed system language settings detection
- Fixed clicking on channel names not working in some cases
- Fixed incorrect number of downloads in status bar
+- Fixed looping video with Phonon VLC backend on Linux
+- New and updated translations
1.9 - September 27, 2012
- Adapted to YouTube changes
diff --git a/LICENSE.LGPL b/LICENSE.LGPL
deleted file mode 100644
index 5ab7695..0000000
--- a/LICENSE.LGPL
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/empty.ts b/empty.ts
index fba82a1..8d4ee7a 100644
--- a/empty.ts
+++ b/empty.ts
@@ -5,72 +5,72 @@
AboutView
-
+
There's life outside the browser!
-
+
Version %1
-
+
Licensed to: %1
-
+
%1 is Free Software but its development takes precious time.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
-
+
You may want to try my other apps as well:
-
+
%1, a YouTube music player
-
+
%1, a music player
-
+
Translate %1 to your native language using %2
-
+
Icon designed 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
@@ -136,6 +136,97 @@
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -147,47 +238,47 @@
DownloadItem
-
+
bytes
-
+
KB
-
+
MB
-
+
bytes/sec
-
+
KB/sec
-
+
MB/sec
-
+
seconds
-
+
minutes
-
+
%4 %5 remaining
@@ -195,37 +286,37 @@
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
-
+
%1 downloaded in %2
-
+
Download finished
-
+
%n Download(s)
@@ -235,27 +326,27 @@
DownloadSettings
-
+
Change location...
-
+
Choose the download location
-
+
Download location changed.
-
+
Current downloads will still go in the previous location.
-
+
Downloading to: %1
@@ -263,8 +354,8 @@
DownloadView
-
-
+
+
Downloads
@@ -280,62 +371,62 @@
GlobalShortcuts
-
+
Play
-
+
Pause
-
+
Play/Pause
-
+
Stop
-
+
Stop playing after current track
-
+
Next track
-
+
Previous track
-
+
Increase volume
-
+
Decrease volume
-
+
Mute
-
+
Seek forward
-
+
Seek backward
@@ -343,27 +434,37 @@
HomeView
-
+
Search
-
+
Find videos and channels by keyword
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
@@ -371,7 +472,7 @@
LoadingWidget
-
+
Error
@@ -379,426 +480,436 @@
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
-
+
Hide the playlist and the toolbar
-
+
Go to the YouTube video page and pause playback
-
+
Copy the current video YouTube link to the clipboard
-
+
Copy the current video stream URL to the clipboard
-
+
Find other video parts hopefully in the right order
-
+
&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 the search history. Cannot be undone.
-
+
&Quit
-
+
Bye
-
+
&Website
-
+
%1 on the Web
-
+
Please support the continued development of %1
-
+
&About
-
+
Info about %1
-
+
Search
-
+
Mute volume
-
-
+
+
&Downloads
-
+
Show details about video downloads
-
+
&Download
-
+
Download the current video
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
-
+
&Email
-
+
Email
-
+
&Close
-
+
&Float on Top
-
+
&Stop After This Video
-
+
&Report an Issue...
-
+
&Refine Search...
-
+
More...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
-
+
Buy %1...
-
+
&Playback
-
+
&Playlist
-
+
&Video
-
+
&View
-
+
&Share
-
+
&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
-
+
Leave &Full Screen
-
+
%1 version %2 is now available.
-
+
Remind me later
-
+
Update
-
+
Error: %1
-
+
P&revious
-
+
Go back to the previous track
-
+
&Compact Mode
-
+
Open the &YouTube Page
-
+
Copy the YouTube &Link
-
+
Copy the Video Stream &URL
-
+
Find Video &Parts
-
+
&Clear Recent Searches
-
+
Make a &Donation
-
+
&Manually Start Playing
-
+
Manually start playing videos
-
+
Choose your content location
-
+
&Play
-
+
Resume playback
-
+
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
@@ -806,65 +917,75 @@
MediaView
-
+
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
-
+
of
Used in video parts, as in '2 of 3'
-
+
part
This is for video parts, as in 'Cool video - part 1'
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
-
+
Sent from %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
-
+
Downloading %1
@@ -913,52 +1034,52 @@
PlaylistItemDelegate
-
+
%1 views
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
-
+
Completed
-
+
Stopped
-
+
Stop downloading
-
+
Show in %1
-
+
Open parent folder
-
+
Restart downloading
@@ -966,22 +1087,22 @@
PlaylistModel
-
+
Searching...
-
+
Show %1 More
-
+
No videos
-
+
No more videos
@@ -989,109 +1110,109 @@
RefineSearchWidget
-
+
Sort by
-
+
Relevance
-
-
+
+
Date
-
+
View Count
-
+
Rating
-
+
Anytime
-
+
Today
-
+
7 Days
-
+
30 Days
-
+
Duration
-
-
+
+
All
-
+
Short
-
+
Medium
-
+
Long
-
+
Less than 4 minutes
-
+
Between 4 and 20 minutes
-
+
Longer than 20 minutes
-
+
Quality
-
+
High Definition
-
+
720p or higher
-
+
Done
@@ -1099,7 +1220,7 @@
RegionsView
-
+
Done
@@ -1115,48 +1236,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
-
+
Get the full version
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
-
+
a keyword
-
+
a channel
-
+
to start watching videos.
-
+
Watch
-
+
Recent keywords
-
+
Recent channels
@@ -1164,18 +1285,18 @@
SidebarHeader
-
-
+
+
&Back
-
+
Forward to %1
-
+
Back to %1
@@ -1183,12 +1304,12 @@
SidebarWidget
-
+
Refine Search
-
+
Did you mean: %1
@@ -1196,40 +1317,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
-
+
Network error: %1 for %2
@@ -1237,242 +1358,242 @@
YTRegions
-
+
Algeria
-
+
Argentina
-
+
Australia
-
+
Belgium
-
+
Brazil
-
+
Canada
-
+
Chile
-
+
Colombia
-
+
Czech Republic
-
+
Egypt
-
+
France
-
+
Germany
-
+
Ghana
-
+
Greece
-
+
Hong Kong
-
+
Hungary
-
+
India
-
+
Indonesia
-
+
Ireland
-
+
Israel
-
+
Italy
-
+
Japan
-
+
Jordan
-
+
Kenya
-
+
Malaysia
-
+
Mexico
-
+
Morocco
-
+
Netherlands
-
+
New Zealand
-
+
Nigeria
-
+
Peru
-
+
Philippines
-
+
Poland
-
+
Russia
-
+
Saudi Arabia
-
+
Singapore
-
+
South Africa
-
+
South Korea
-
+
Spain
-
+
Sweden
-
+
Taiwan
-
+
Tunisia
-
+
Turkey
-
+
Uganda
-
+
United Arab Emirates
-
+
United Kingdom
-
+
Yemen
-
+
Worldwide
diff --git a/images/badge.png b/images/badge.png
new file mode 100644
index 0000000..82f633a
Binary files /dev/null and b/images/badge.png differ
diff --git a/images/badge3.png b/images/badge3.png
new file mode 100644
index 0000000..8aa475b
Binary files /dev/null and b/images/badge3.png differ
diff --git a/images/badge4.png b/images/badge4.png
new file mode 100644
index 0000000..0515ec2
Binary files /dev/null and b/images/badge4.png differ
diff --git a/images/channels.png b/images/channels.png
new file mode 100644
index 0000000..109043d
Binary files /dev/null and b/images/channels.png differ
diff --git a/images/mark-watched.png b/images/mark-watched.png
new file mode 100644
index 0000000..961d149
Binary files /dev/null and b/images/mark-watched.png differ
diff --git a/images/show-updated.png b/images/show-updated.png
new file mode 100644
index 0000000..732c556
Binary files /dev/null and b/images/show-updated.png differ
diff --git a/images/sort.png b/images/sort.png
new file mode 100644
index 0000000..95fcb55
Binary files /dev/null and b/images/sort.png differ
diff --git a/images/unwatched.png b/images/unwatched.png
new file mode 100644
index 0000000..63da996
Binary files /dev/null and b/images/unwatched.png differ
diff --git a/images/worldwide.png b/images/worldwide.png
index fb5f48b..d676740 100644
Binary files a/images/worldwide.png and b/images/worldwide.png differ
diff --git a/locale/ar.ts b/locale/ar.ts
index ab70e18..512eba2 100644
--- a/locale/ar.ts
+++ b/locale/ar.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
ÙÙا٠ØÙاة خارج اÙÙ
تصÙØ!
-
+
Version %1
اÙÙسخة %1
-
+
Licensed to: %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.
-
+
You may want to try my other apps as well:
Ùد ترغب Ù٠تجرÙب براÙ
ج٠اÙأخر٠أÙضا
-
+
%1, a YouTube music player
%1Ø Ùارئ Ù
ÙسÙÙ٠عÙ٠اÙÙÙتÙÙب
-
+
%1, a music player
%1Ø Ùارئ Ù
ÙسÙÙÙ
-
+
Translate %1 to your native language using %2
ترجÙ
%1 Ø¥ÙÙ Ùغت٠اÙØ£Ù
بإستعÙ
ا٠%2
-
+
Icon designed by %1.
صÙ
Ù
اÙاÙÙÙÙØ© %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Ùشر Ùذا اÙبرÙاÙ
ج تØت رخصة <a href='%1'>GNU General Public License</a>
-
+
&Close
&اÙÙÙ
-
+
About
ع٠اÙبرÙاÙ
ج
-
+
What you always wanted to know about %1 and never dared to ask
Ù
ا اردت Ù
عرÙت٠ع٠%1 Ù ÙÙ
تستطع ا٠تسأÙ
@@ -88,7 +88,7 @@
&Code:
-
+ اÙرÙÙ
اÙ&خاصÙ:
@@ -134,6 +134,95 @@
ÙÙ
بشراء رخصة
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ جÙ
Ùع اÙÙÙدÙÙÙات
+
+
+
+ Unwatched Videos
+ ÙÙدÙÙÙات ÙÙ
تتÙ
Ù
شاÙدتÙا
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+ اÙØ£Ùثر Ù
شاÙدة
+
+
+
+ Sort by
+ ترتÙب بÙ
+
+
+
+ All Videos
+ جÙ
Ùع اÙÙÙدÙÙÙات
+
+
+
+ Unwatched Videos
+ ÙÙدÙÙÙات ÙÙ
تتÙ
Ù
شاÙدتÙا
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Ùا ÙÙجد ÙدÙ٠اشتراÙات. استخدÙ
رÙ
ز اÙÙجÙ
Ø© ÙÙإشترا٠Ù٠اÙÙÙÙات.
+
+
ClearButton
@@ -145,47 +234,47 @@
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 Ù
تبÙÙ
@@ -193,37 +282,37 @@
DownloadManager
-
+
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
اØص٠عÙ٠اÙÙسخة اÙÙاÙ
ÙØ©
-
+
%1 downloaded in %2
%1 ØÙ
Ù ÙÙ %2
-
+
Download finished
اÙتÙ٠اÙتØÙ
ÙÙ
-
+
%n Download(s)
اÙتØÙ
ÙÙ %n اÙتØÙ
ÙÙ %n اÙتØÙ
ÙÙ %n اÙتØÙ
ÙÙ %n اÙتØÙ
ÙÙ %n اÙتØÙ
ÙÙ %n
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
تغÙÙر اÙÙ
ÙÙع...
-
+
Choose the download location
اختر Ù
ÙÙع اÙتØÙ
ÙÙ
-
+
Download location changed.
Ù
ÙÙع اÙتØÙ
Ù٠تغÙر.
-
+
Current downloads will still go in the previous location.
اÙتØÙ
Ù٠سÙتÙ
Ù٠اÙÙ
ÙÙع اÙسابÙ.
-
+
Downloading to: %1
اÙتØÙ
Ù٠اÙÙ:%1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
اÙتØÙ
ÙÙات
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
تشغÙÙ
-
+
Pause
Pause
-
+
Play/Pause
Play/Pause
-
+
Stop
Ø£ÙÙÙ
-
+
Stop playing after current track
اÙÙا٠تشغÙ٠اÙÙ
Ùطع اÙØاÙÙ
-
+
Next track
اÙÙ
Ùطع اÙتاÙÙ
-
+
Previous track
اÙÙ
Ùطع اÙسابÙ
-
+
Increase volume
رÙع اÙصÙت
-
+
Decrease volume
Ø®Ùض اÙصÙت
-
+
Mute
صاÙ
ت
-
+
Seek forward
اÙ
اÙ
-
+
Seek backward
Ø®ÙÙ
@@ -339,27 +428,37 @@
HomeView
-
+
Search
بØØ«
-
+
Find videos and channels by keyword
-
+ جÙد Ù
Ùاطع ÙÙدÙÙ ÙÙÙÙات٠بØسب اÙÙÙÙ
Ø© اÙرئÙسة
-
+
Browse
أستعراض
-
+
Browse videos by category
تصÙØ Ø§ÙÙÙدÙÙÙات Øسب اÙÙئة
-
+
+ Subscriptions
+ اÙإشتراÙات
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
اجع٠ÙÙس٠Ù
رتاØا
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
خطأ
@@ -375,426 +474,436 @@
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
تشغÙ٠شاشة ÙاÙ
ÙØ©
-
+
Hide the playlist and the toolbar
اخÙاء اÙÙائÙ
Ø© ٠شرÙØ· اÙÙ
ÙاÙ
-
+
Go to the YouTube video page and pause playback
اذÙب اÙ٠صÙØØ© ÙÙدÙÙ YouTube Ù ÙÙ٠اÙتشغÙÙ
-
+
Copy the current video YouTube link to the clipboard
Ùسخ رابط YouTube اÙÙ clipboard
-
+
Copy the current video stream URL to the clipboard
Ùسخ رابط اÙÙÙدÙ٠اÙÙ clipboard
-
+
Find other video parts hopefully in the right order
اÙجد أجزاء اÙÙÙدÙ٠اÙأخر٠اÙ
Ùا أ٠تÙÙÙ Ù٠اÙترتÙب اÙصØÙØ
-
+
&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 the search history. Cannot be undone.
Ù
Ø³Ø ØªØ§Ø±ÙØ® اÙبØØ«. Ùا ÙÙ
Ù٠استعادتÙ.
-
+
&Quit
&اÙاÙتÙاء
-
+
Bye
Ù
ع اÙسÙاÙ
Ø©
-
+
&Website
&اÙÙ
ÙÙع
-
+
%1 on the Web
%1 عÙ٠اÙشبÙØ©
-
+
Please support the continued development of %1
âاÙرجاء اÙتبرع ÙÙ
تابعة تطÙÙر %1
-
+
&About
&ع٠اÙبرÙاÙ
ج
-
+
Info about %1
Ù
عÙÙÙ
ات ع٠%1
-
+
Search
اÙبØØ«
-
+
Mute volume
ÙتÙ
اÙصÙت
-
-
+
+
&Downloads
&اÙتØÙ
ÙÙات
-
+
Show details about video downloads
عرض تÙاصÙ٠ع٠تØÙ
ÙÙات اÙÙÙدÙÙ
-
+
&Download
&اÙتØÙ
ÙÙات
-
+
Download the current video
تØÙ
Ù٠اÙÙÙدÙ٠اÙØاÙÙ
-
+
+ &Subscribe to Channel
+ &Subscribe to Channel
+
+
+
Share the current video using %1
شار٠اÙÙÙدÙ٠اÙØاÙ٠باستخداÙ
%1
-
+
&Email
&اÙبرÙد اÙØ¥ÙÙترÙÙÙ
-
+
Email
اÙبرÙد اÙØ¥ÙÙترÙÙÙ
-
+
&Close
&اÙÙÙ
-
+
&Float on Top
&اطÙ٠عÙ٠اÙÙÙ
Ø©
-
+
&Stop After This Video
&Ø£ÙÙ٠اÙعرض اÙتÙÙائ٠بعد اÙÙÙدÙ٠اÙØاÙÙ
-
+
&Report an Issue...
&أبÙغ ع٠Ù
Ø´ÙÙØ©
-
+
&Refine Search...
&Ø®Ùارات اÙبØØ«...
-
+
More...
اÙÙ
زÙد...
-
+
&Related Videos
-
+ Ù
Ùاطع ذات &صÙØ©
-
+
Watch videos related to the current one
+ شاÙد Ù
Ùاطع ÙÙدÙ٠ذات صÙØ© بÙذا
+
+
+
+ Open in &Browser...
-
+
&Application
&اÙبرÙاÙ
ج
-
+
Buy %1...
اشتر٠%1...
-
+
&Playback
&Ùراءة
-
+
&Playlist
&اÙÙائÙ
Ø©
-
+
&Video
&اÙÙÙدÙÙ
-
+
&View
&Ù
شاÙدة
-
+
&Share
&شارÙ
-
+
&Help
&اÙÙ
ساعدة
-
+
Press %1 to raise the volume, %2 to lower it
اضغط %1 ÙرÙع اÙصÙت Ù %2 ÙØ®ÙضÙ
-
-
+
+
Opening %1
جار٠ÙØªØ %1
-
+
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
اÙتظار اÙتÙاء اÙتØÙ
ÙÙ
-
+
Leave &Full Screen
غادر &اÙشاشة اÙÙاÙ
ÙØ©
-
+
%1 version %2 is now available.
%1 اÙإصدار %2 Ù
تÙÙر اÙØ¢Ù.
-
+
Remind me later
Ø°ÙرÙÙ ÙاØÙا
-
+
Update
تØدÙØ«
-
+
Error: %1
خطأ: %1
-
+
P&revious
اÙ&سابÙ
-
+
Go back to the previous track
اÙعÙدة Ø¥Ù٠اÙÙ
جاز اÙسابÙ
-
+
&Compact Mode
&اÙÙاجÙØ© اÙØ®ÙÙÙØ©
-
+
Open the &YouTube Page
Ø£ÙØªØ ØµÙØØ© اÙÙÙدÙ٠عÙÙ &YouTube
-
+
Copy the YouTube &Link
اÙسخ رابط اÙÙÙدÙÙ &Link
-
+
Copy the Video Stream &URL
اÙسخ اÙÙÙدÙÙ ÙعÙÙاÙÙ
-
+
Find Video &Parts
أبØØ« ع٠&أجزاء اÙÙÙدÙ٠اÙØ£ÙخرÙ
-
+
&Clear Recent Searches
&Ù
Ø³Ø ØªØ§Ø±ÙØ® اÙبØØ«
-
+
Make a &Donation
اÙÙÙاÙ
بتبرع
-
+
&Manually Start Playing
&تشغÙ٠اÙÙÙدÙÙÙات ÙدÙÙا
-
+
Manually start playing videos
بدء تشغÙ٠اÙÙÙدÙÙ ÙدÙÙا
-
+
Choose your content location
-
+ اختر Ù
ÙÙع Ù
ØتÙÙاتÙ
-
+
&Play
&اÙتشغÙÙ
-
+
Resume playback
اÙÙ
ا٠اÙتشغÙÙ
-
+
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 complete
اÙتØÙ
Ù٠اÙتÙÙ
@@ -802,65 +911,75 @@
MediaView
-
+
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.
اÙرابط سÙÙÙ٠صاÙØا ÙÙ
دة Ù
ØدÙدة.
-
+
This is just the demo version of %1.
ÙØ°Ù ÙÙست سÙ٠اÙÙسخة اÙتجرÙبÙØ© Ù
Ù %1.
-
+
It allows you to test the application and see if it works for you.
اÙÙا تتÙØ Ù٠تجربة اÙبرÙاÙ
ج.
-
+
Continue
Ù
تابعة
-
+
of
Used in video parts, as in '2 of 3'
Ù
Ù
-
+
part
This is for video parts, as in 'Cool video - part 1'
جزء
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
ØÙÙØ©
-
+
Sent from %1
أرسÙت Ù
Ù %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+ اشتر٠ÙÙ %1
+
+
+
Get the full version
اØص٠عÙ٠اÙÙسخة اÙÙاÙ
ÙØ©
-
+
Downloading %1
جار٠تØÙ
ÙÙ %1
@@ -870,22 +989,22 @@
A new version of %1 is available!
-
+ ÙتÙÙÙر إصدار جدÙد Ù
Ù %1!
%1 %2 is now available. You have %3.
-
+ 1% %2 Ù
تÙÙر اÙØ¢Ù. ÙدÙÙ 3%.
Would you like to download it now?
-
+ أترÙد تÙزÙÙ٠اÙØ¢ÙØ
Skip This Version
-
+ تجاÙز Ùذا اÙإصدار
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%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
اعادة اÙتØÙ
ÙÙ
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
جار٠اÙبØØ«...
-
+
Show %1 More
اظÙر %1 اÙÙ
زÙد
-
+
No videos
Ùا تÙجد ÙÙدÙÙÙات
-
+
No more videos
Ùا ÙÙجد اÙÙ
زÙد Ù
٠اÙÙÙدÙÙÙات
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
ترتÙب بÙ
-
+
Relevance
ذات صÙØ©
-
-
+
+
Date
اÙتارÙØ®
-
+
View Count
عدد اÙÙ
شاÙدات
-
+
Rating
اÙتÙÙÙÙ
-
+
Anytime
ا٠ÙÙت
-
+
Today
اÙÙÙÙ
-
+
7 Days
7 Ø£ÙاÙ
-
+
30 Days
30 ÙÙÙ
-
+
Duration
اÙÙ
دة
-
-
+
+
All
اÙÙÙ
-
+
Short
ÙصÙر
-
+
Medium
Ù
تÙسط
-
+
Long
Ø·ÙÙÙ
-
+
Less than 4 minutes
Ø£ÙÙ Ù
Ù 4 دÙائÙ
-
+
Between 4 and 20 minutes
Ù
ا بÙÙ 4 ا٠20 دÙÙÙØ©
-
+
Longer than 20 minutes
أطÙÙ Ù
Ù 20 دÙÙÙØ©
-
+
Quality
اÙجÙدة
-
+
High Definition
دÙØ© عاÙÙØ©
-
+
720p or higher
720 أ٠أعÙÙ
-
+
Done
Ø¥ÙتÙÙ
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ تÙ
Ù
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Ù
رØبا ب٠ÙÙ <a href='%1'>%2</a>,
-
+
Get the full version
اÙØصÙ٠عÙ٠اÙÙسخة اÙÙاÙ
ÙØ©
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
أدخÙ
-
+
a keyword
ÙÙÙ
Ø© Ù
ÙتاØ
-
+
a channel
ÙÙاة
-
+
to start watching videos.
Ùبدء Ù
شاÙدة أشرطة اÙÙÙدÙÙ
-
+
Watch
شاÙد
-
+
Recent keywords
ÙÙÙ
ات بØØ« سابÙØ©
-
+
Recent channels
اÙÙÙÙات اÙأخÙرة
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&عÙدة
-
+
Forward to %1
-
+ تÙدÙÙ
Ø¥ÙÙ %1
-
+
Back to %1
-
+ عÙد Ø¥ÙÙ %1
SidebarWidget
-
+
Refine Search
Ø®Ùارات اÙبØØ«
-
+
Did you mean: %1
Ù٠تÙصد: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
اÙØ£Ùثر Ø´Ùرة
-
- Featured
-
-
-
-
+
Most Shared
اÙØ£Ùثر Ù
شارÙØ©
-
+
Most Discussed
-
+ اÙØ£Ùثر ÙÙاشÙا
-
+
Top Rated
اÙأعÙ٠تÙÙÙÙ
ا
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Ùا ÙÙ
Ù٠اÙØصÙ٠عÙ٠دÙ٠اÙÙÙدÙÙ %1
-
+
Network error: %1 for %2
خطأ شبÙØ©:%1 اÙÙ %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
اÙجزائر
-
+
Argentina
اÙأرجÙتÙÙ
-
+
Australia
أستراÙÙا
-
+
Belgium
بÙجÙÙا
-
+
Brazil
اÙبرازÙÙ
-
+
Canada
ÙÙدا
-
+
Chile
تشÙÙÙ
-
+
Colombia
ÙÙÙÙÙ
بÙا
-
+
Czech Republic
جÙ
ÙÙرÙØ© اÙتشÙÙ
-
+
Egypt
Ù
صر
-
+
France
ÙرÙسا
-
+
Germany
Ø£ÙÙ
اÙÙا
-
+
Ghana
غاÙا
-
+
Greece
اÙÙÙÙاÙ
-
+
Hong Kong
ÙÙÙغ ÙÙÙغ
-
+
Hungary
ÙÙغارÙا
-
+
India
اÙÙÙد
-
+
Indonesia
Ø¥ÙدÙÙÙسÙا
-
+
Ireland
Ø¥ÙرÙÙدا
-
+
Israel
Israel
-
+
Italy
Ø¥ÙطاÙÙا
-
+
Japan
اÙÙاباÙ
-
+
Jordan
اÙأردÙ
-
+
Kenya
ÙÙÙÙا
-
+
Malaysia
Ù
اÙÙزÙا
-
+
Mexico
اÙÙ
ÙسÙÙ
-
+
Morocco
اÙÙ
غرب
-
+
Netherlands
ÙÙÙÙدا
-
+
New Zealand
ÙÙÙزÙÙÙدا
-
+
Nigeria
ÙÙجÙرÙا
-
+
Peru
بÙرÙ
-
+
Philippines
اÙÙÙبÙÙ
-
+
Poland
بÙÙÙدا
-
+
Russia
رÙسÙا
-
+
Saudi Arabia
اÙÙ
Ù
ÙÙØ© اÙعربÙØ© اÙسعÙدÙØ©
-
+
Singapore
سÙغاÙÙرة
-
+
South Africa
جÙÙب Ø£ÙرÙÙÙا
-
+
South Korea
ÙÙرÙا اÙجÙÙبÙØ©
-
+
Spain
إسباÙÙا
-
+
Sweden
اÙسÙÙد
-
+
Taiwan
تاÙÙاÙ
-
+
Tunisia
تÙÙس
-
+
Turkey
ترÙÙا
-
+
Uganda
Ø£ÙغÙدا
-
+
United Arab Emirates
اÙØ¥Ù
ارات اÙعربÙØ© اÙÙ
تØدة
-
+
United Kingdom
اÙÙ
Ù
ÙÙØ© اÙÙ
تØدة
-
+
Yemen
اÙÙÙ
Ù
-
+
Worldwide
اÙعاÙÙ
diff --git a/locale/ast.ts b/locale/ast.ts
new file mode 100644
index 0000000..41432e7
--- /dev/null
+++ b/locale/ast.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ ¡Hai vida más allá del restolador!
+
+
+
+ Version %1
+ Versión %1
+
+
+
+ Licensed to: %1
+ Llicencia pa: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 ye Software Llibre pero lleva un tiempu valoratible desendolcalu.
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Por favor <a href='%1'>fai una donación</a> pa sofitar el desendolcu continuu de %2.
+
+
+
+ You may want to try my other apps as well:
+ Seique quieras probar tamién les mios otres aplicaciones:
+
+
+
+ %1, a YouTube music player
+ %1, un reproductor de música de YouTube
+
+
+
+ %1, a music player
+ %1, un reproductor de música
+
+
+
+ Translate %1 to your native language using %2
+ Traduz %1 a la to llingua nativa usando %2
+
+
+
+ Icon designed by %1.
+ Iconu diseñáu por %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Lliberáu baxo la <a href='%1'>Llicencia Pública Xeneral GNU</a>
+
+
+
+ &Close
+ &Zarrar
+
+
+
+ About
+ Tocante a
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Lo que siempres quixisti saber sobre %1 y nun t'atrevÃes a entrugar
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ Introduz los detalles de la llicencia
+
+
+
+ &Email:
+ Cor&réu-e:
+
+
+
+ &Code:
+ &Códigu:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Obtén una llicencia de %1
+
+
+
+ This demo has expired.
+ Esta demo caducó
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ La versión completa déxate descargar vÃdeos con duración mayor a %1 minutos y ver videos ensin interrupciones.
+
+
+
+ Without a license, the application will expire in %1 days.
+ Ensin una llicencia, l'aplicación va caducar en %1 dÃes.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Al mercar la versión completa, tamién sofites el trabayu fechu na creación de %1.
+
+
+
+ Use Demo
+ Usar demostración
+
+
+
+ Enter License
+ Introducir llicencia
+
+
+
+ Buy License
+ Mercar llicencia
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
+
+ ClearButton
+
+
+ Clear
+ Llimpiar
+
+
+
+ DownloadItem
+
+
+ bytes
+ bytes
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ bytes/seg
+
+
+
+ KB/sec
+ KB/seg
+
+
+
+ MB/sec
+ KB/seg
+
+
+
+ seconds
+ segundos
+
+
+
+ minutes
+ minutos
+
+
+
+ %4 %5 remaining
+ %4 %5 restantes
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Esto ye namái la versión demo de %1.
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Namái pues descargar vÃdeos de duración menor que %1 minutos pa que puedas probar la función de descarga.
+
+
+
+ Continue
+ Siguir
+
+
+
+ Get the full version
+ Consigui la versión completa
+
+
+
+ %1 downloaded in %2
+ %1 descargáu en %2
+
+
+
+ Download finished
+ Descarga finada
+
+
+
+ %n Download(s)
+ %n Descarga %n Descargues
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Camudar llocalización...
+
+
+
+ Choose the download location
+ Escueyi la llocalización de les descargues
+
+
+
+ Download location changed.
+ Ubicación pa descargues modificada.
+
+
+
+ Current downloads will still go in the previous location.
+ Les descargues en cursu van dir a la llocalización anterior.
+
+
+
+ Downloading to: %1
+ Descargando a: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Descargues
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ Descargando anovamientu...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Reproducir
+
+
+
+ Pause
+ Posar
+
+
+
+ Play/Pause
+ Reproducir/Posar
+
+
+
+ Stop
+ Parar
+
+
+
+ Stop playing after current track
+ Dexar de reproducir tres la pista actual
+
+
+
+ Next track
+ Pista siguiente
+
+
+
+ Previous track
+ Pista anterior
+
+
+
+ Increase volume
+ Xubir volume
+
+
+
+ Decrease volume
+ Baxar volume
+
+
+
+ Mute
+ Callar
+
+
+
+ Seek forward
+ Guetar p'alantre
+
+
+
+ Seek backward
+ Guetar p'atrás
+
+
+
+ HomeView
+
+
+ Search
+ Guetar
+
+
+
+ Find videos and channels by keyword
+ Atopar vÃdeos y canales por pallabres clave
+
+
+
+ Browse
+ Restolar
+
+
+
+ Browse videos by category
+ Guetar vÃdeos por categorÃa
+
+
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
+ Make yourself comfortable
+ Ponte cómodu
+
+
+
+ LoadingWidget
+
+
+ Error
+ Fallu
+
+
+
+ MainWindow
+
+
+ &Stop
+ &Parar
+
+
+
+ Stop playback and go back to the search view
+ Detener la reproducción y volver a la gueta
+
+
+
+ S&kip
+ &Saltar
+
+
+
+ Skip to the next video
+ Omitir videu y saltar al siguiente
+
+
+
+
+ &Pause
+ &Posar
+
+
+
+
+ Pause playback
+ Posar reproducción
+
+
+
+ &Full Screen
+ &Pantalla completa
+
+
+
+ Go full screen
+ Pasar a pantalla completa
+
+
+
+ Hide the playlist and the toolbar
+ Anubrir la llista de reproducción y la barra de ferramientes
+
+
+
+ Go to the YouTube video page and pause playback
+ Dir a la páxina del videu en YouTube y posar la reproducción
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Copiar l'enllaz a YouTube del videu actual nel cartafueyu
+
+
+
+ Copy the current video stream URL to the clipboard
+ Copiar la URL actual del fluxu del videu al cartafueyu
+
+
+
+ Find other video parts hopefully in the right order
+ Alcontrar otres partes de vÃdeos, con suerte nel orde correutu
+
+
+
+ &Remove
+ Desanicia&r
+
+
+
+ Remove the selected videos from the playlist
+ Quitar los vÃdeos seleicionaos de la llista de reproducción
+
+
+
+ Move &Up
+ X&ubir
+
+
+
+ Move up the selected videos in the playlist
+ Mover hacia arriba na llista de reproducción los vÃdeos seleicionaos
+
+
+
+ Move &Down
+ &Baxar
+
+
+
+ Move down the selected videos in the playlist
+ Mover hacia abaxo na llista de reproducción los vÃdeos seleicionaos
+
+
+
+ Clear the search history. Cannot be undone.
+ Llimpiar l'historial de guetes. Nun pue desfacese.
+
+
+
+ &Quit
+ Co&lar
+
+
+
+ Bye
+ Alón
+
+
+
+ &Website
+ Páxina &web
+
+
+
+ %1 on the Web
+ %1 na web
+
+
+
+ Please support the continued development of %1
+ Por favor, sofita'l desendolcu continuu de %1
+
+
+
+ &About
+ Tocante &a
+
+
+
+ Info about %1
+ Información tocante a %1
+
+
+
+ Search
+ Guetar
+
+
+
+ Mute volume
+ Silenciar volume
+
+
+
+
+ &Downloads
+ &Descargues
+
+
+
+ Show details about video downloads
+ Amosar detalles sobre les descargues de vÃdeos
+
+
+
+ &Download
+ &Descargar
+
+
+
+ Download the current video
+ Descargar el videu actual
+
+
+
+ &Subscribe to Channel
+
+
+
+
+ Share the current video using %1
+ Compartir el videu actual usando %1
+
+
+
+ &Email
+ Cor&réu-e:
+
+
+
+ Email
+ Corréu-e
+
+
+
+ &Close
+ &Zarrar
+
+
+
+ &Float on Top
+ &Flotar na parte superior
+
+
+
+ &Stop After This Video
+ &Detener tres d'esti videu
+
+
+
+ &Report an Issue...
+ &Informar de un problema...
+
+
+
+ &Refine Search...
+ &Refinar la gueta...
+
+
+
+ More...
+ Más...
+
+
+
+ &Related Videos
+ VÃdeos &rellacionaos
+
+
+
+ Watch videos related to the current one
+ Ver vÃdeos rellacionaos col actual
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ &Aplicación
+
+
+
+ Buy %1...
+ Mercar %1...
+
+
+
+ &Playback
+ Re&producción
+
+
+
+ &Playlist
+ &Llista de reprod.
+
+
+
+ &Video
+ &Videu
+
+
+
+ &View
+ &Ver
+
+
+
+ &Share
+ &Compartir
+
+
+
+ &Help
+ A&yuda
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Calca %1 pa xubir el volume, %2 pa baxalu
+
+
+
+
+ Opening %1
+ Abriendo %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ ¿Quies salir de %1 con una descarga en cursu?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Si zarres %1 agora, esta descarga va encaboxase.
+
+
+
+ Close and cancel download
+ Zarrar y encaboxar descarga
+
+
+
+ Wait for download to finish
+ Esperar a que fine la descarga
+
+
+
+ Leave &Full Screen
+ Salir de pan&talla completa
+
+
+
+ %1 version %2 is now available.
+ %1 versión %2 yá ta disponible.
+
+
+
+ Remind me later
+ Avisame más sero
+
+
+
+ Update
+ Anovar
+
+
+
+ Error: %1
+ Fallu: %1
+
+
+
+ P&revious
+ A&nterior
+
+
+
+ Go back to the previous track
+ Tornar a la pista anterior
+
+
+
+ &Compact Mode
+ M&ou compautu
+
+
+
+ Open the &YouTube Page
+ Abrir la páxina de &YouTube
+
+
+
+ Copy the YouTube &Link
+ Copiar l'en&llaz de YouTube
+
+
+
+ Copy the Video Stream &URL
+ Copiar la &URL de fluxu del videu
+
+
+
+ Find Video &Parts
+ Alcontrar &partes de vÃdeos
+
+
+
+ &Clear Recent Searches
+ &Llimpiar guetes recientes
+
+
+
+ Make a &Donation
+ Facer una &donación
+
+
+
+ &Manually Start Playing
+ Comenzar la reproducción &manualmente
+
+
+
+ Manually start playing videos
+ Comenzar la reproducción de vÃdeos manualmente
+
+
+
+ Choose your content location
+ Escueyi la llocalización pal contenÃu
+
+
+
+ &Play
+ Re&producir
+
+
+
+ Resume playback
+ Continuar la reproducción
+
+
+
+ Remaining time: %1
+ Tiempu faltante: %1
+
+
+
+ Volume at %1%
+ Volume al %1%
+
+
+
+ Volume is muted
+ Volume silenciáu
+
+
+
+ Volume is unmuted
+ Volume activu
+
+
+
+ Maximum video definition set to %1
+ Resolución máxima de videu afitada en %1
+
+
+
+ Your privacy is now safe
+ La to privacidá agora ta asegurada
+
+
+
+ Downloads complete
+ Descargues completes
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Agora pues apegar la URL del fluxu de videu n'otra aplicación
+
+
+
+ You can now paste the video stream URL into another application
+ L'enllaz ye válidu namái por un tiempu llimitáu.
+
+
+
+ The link will be valid only for a limited time.
+ Esto ye namái la versión de prueba de %1.
+
+
+
+ This is just the demo version of %1.
+ Esto ye namái la versión demo de %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Déxate probar l'aplicación y ver si te funciona.
+
+
+
+ Continue
+ Siguir
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ de
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ parte
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ episodiu
+
+
+
+ Sent from %1
+ Unviáu dende %1
+
+
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
+ Get the full version
+ Consigui la versión completa
+
+
+
+ Downloading %1
+ Descargando %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ Hai disponible una versión nueva de %1.
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 ta disponible agora. Tienes %3.
+
+
+
+ Would you like to download it now?
+ ¿Quies descargala agora?
+
+
+
+ Skip This Version
+ Omitir esta versión
+
+
+
+ Remind Me Later
+ Avisame más sero
+
+
+
+ Install Update
+ Instalar anovamientu
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Apegar
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %1 reproducciones
+
+
+
+ %1 of %2 (%3) â %4
+ %1 de %2 (%3) â %4
+
+
+
+ Preparing
+ Preparando
+
+
+
+ Failed
+ Falló
+
+
+
+ Completed
+ Completáu
+
+
+
+ Stopped
+ Paráu
+
+
+
+ Stop downloading
+ Detener la descarga
+
+
+
+ Show in %1
+ Amosar en %1
+
+
+
+ Open parent folder
+ Abrir carpeta contenedora
+
+
+
+ Restart downloading
+ Reaniciar la descarga
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Guetando...
+
+
+
+ Show %1 More
+ Amosar %1 más
+
+
+
+ No videos
+ Nun hai vÃdeos
+
+
+
+ No more videos
+ Nun hai más vÃdeos
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ Ordenar por
+
+
+
+ Relevance
+ Relevancia
+
+
+
+
+ Date
+ Data
+
+
+
+ View Count
+ Númberu de visites
+
+
+
+ Rating
+ Valoración
+
+
+
+ Anytime
+ Cualquier momentu
+
+
+
+ Today
+ Güei
+
+
+
+ 7 Days
+ 7 dÃes
+
+
+
+ 30 Days
+ 30 dÃes
+
+
+
+ Duration
+ Duración
+
+
+
+
+ All
+ Too
+
+
+
+ Short
+ Curtiu
+
+
+
+ Medium
+ Mediu
+
+
+
+ Long
+ Llargu
+
+
+
+ Less than 4 minutes
+ Menos de 4 minutos
+
+
+
+ Between 4 and 20 minutes
+ Ente 4 y 20 minutos
+
+
+
+ Longer than 20 minutes
+ Mayor de 20 minutos
+
+
+
+ Quality
+ Calidá
+
+
+
+ High Definition
+ Alta definición
+
+
+
+ 720p or higher
+ 720p o mayor
+
+
+
+ Done
+ Fecho
+
+
+
+ RegionsView
+
+
+ Done
+ Fecho
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Guetar
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ BienvenÃu a <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ Consigui la versión completa
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Escribi
+
+
+
+ a keyword
+ una pallabra clave
+
+
+
+ a channel
+ una canal
+
+
+
+ to start watching videos.
+ pa entamar a ver vÃdeos.
+
+
+
+ Watch
+ ver
+
+
+
+ Recent keywords
+ Pallabres clave recientes
+
+
+
+ Recent channels
+ Canales recientes
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ &Atrás
+
+
+
+ Forward to %1
+ Dir a %1
+
+
+
+ Back to %1
+ Regresar a %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ &Refinar la gueta...
+
+
+
+ Did you mean: %1
+ Quixisti dicir: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Más populares
+
+
+
+ Most Shared
+ Más compartÃos
+
+
+
+ Most Discussed
+ Más discutÃos
+
+
+
+ Top Rated
+ Meyor valoraos
+
+
+
+ All Time Popular
+
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Nun pue obtenese'l fluxu de videu pa %1
+
+
+
+ Network error: %1 for %2
+ Fallu de rede: %1 por %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ Algeria
+
+
+
+ Argentina
+ L'Arxentina
+
+
+
+ Australia
+ Australia
+
+
+
+ Belgium
+ Bélxica
+
+
+
+ Brazil
+ El Brasil
+
+
+
+ Canada
+ El Canadá
+
+
+
+ Chile
+ Chile
+
+
+
+ Colombia
+ Colombia
+
+
+
+ Czech Republic
+ República Checa
+
+
+
+ Egypt
+ L'Exiptu
+
+
+
+ France
+ Francia
+
+
+
+ Germany
+ Alemaña
+
+
+
+ Ghana
+ Ghana
+
+
+
+ Greece
+ Grecia
+
+
+
+ Hong Kong
+ Ḥong Kong
+
+
+
+ Hungary
+ HungrÃa
+
+
+
+ India
+ India
+
+
+
+ Indonesia
+ Indonesia
+
+
+
+ Ireland
+ Irlanda
+
+
+
+ Israel
+ Israel
+
+
+
+ Italy
+ Italia
+
+
+
+ Japan
+ Xapón
+
+
+
+ Jordan
+ Xordania
+
+
+
+ Kenya
+ Kenia
+
+
+
+ Malaysia
+ Malasia
+
+
+
+ Mexico
+ Méxicu
+
+
+
+ Morocco
+ Marruecos
+
+
+
+ Netherlands
+ Los PaÃses Baxos
+
+
+
+ New Zealand
+ Nueva Zelanda
+
+
+
+ Nigeria
+ Nixeria
+
+
+
+ Peru
+ Perú
+
+
+
+ Philippines
+ Filipines
+
+
+
+ Poland
+ Polonia
+
+
+
+ Russia
+ Rusia
+
+
+
+ Saudi Arabia
+ Arabia Saudita
+
+
+
+ Singapore
+ Singapur
+
+
+
+ South Africa
+ Sudáfrica
+
+
+
+ South Korea
+ Corea del Sur
+
+
+
+ Spain
+ España
+
+
+
+ Sweden
+ Suecia
+
+
+
+ Taiwan
+ Taiwán
+
+
+
+ Tunisia
+ Tunicia
+
+
+
+ Turkey
+ TurquÃa
+
+
+
+ Uganda
+ Uganda
+
+
+
+ United Arab Emirates
+ Emiratos Ãrabes XunÃos
+
+
+
+ United Kingdom
+ Reinu XunÃu
+
+
+
+ Yemen
+ Yemen
+
+
+
+ Worldwide
+ Tol mundu
+
+
+
\ No newline at end of file
diff --git a/locale/bg_BG.ts b/locale/bg_BG.ts
new file mode 100644
index 0000000..92b2e4a
--- /dev/null
+++ b/locale/bg_BG.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Ðма Ð¶Ð¸Ð²Ð¾Ñ Ð¸ извÑн бÑаÑзеÑа!
+
+
+
+ Version %1
+ ÐеÑÑÐ¸Ñ %1
+
+
+
+ Licensed to: %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.
+
+
+
+ You may want to try my other apps as well:
+
+
+
+
+ %1, a YouTube music player
+
+
+
+
+ %1, a music player
+
+
+
+
+ Translate %1 to your native language using %2
+
+
+
+
+ Icon designed by %1.
+ ÐкониÑе Ñа изÑабоÑени Ð¾Ñ %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Ðздадено е под <a href='%1'>GNU General Public License</a>
+
+
+
+ &Close
+ &ÐаÑваÑÑне
+
+
+
+ About
+ ÐÑноÑно
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Ðакво винаги ÑÑе иÑкали да знаеÑе за %1 , но никога не ÑÑе поÑмÑвали да попиÑаÑе
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+
+
+
+
+ &Email:
+ &ÐлекÑÑонна поÑа
+
+
+
+ &Code:
+ &Ðод:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ ÐолÑ, закÑпеÑе лиÑенз %1
+
+
+
+ This demo has expired.
+
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+
+
+
+
+ Without a license, the application will expire in %1 days.
+
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+
+
+
+
+ Use Demo
+ Ðолзвай демо веÑÑиÑ
+
+
+
+ Enter License
+
+
+
+
+ Buy License
+ ÐакÑпи лиÑенз
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ ÐаÑкиÑай вÑиÑки видео клипове каÑо гледани
+
+
+
+ Show Updated
+ Ðокажи обновени
+
+
+
+ Name
+ Ðме
+
+
+
+ Last Updated
+ ÐоÑледно обновени
+
+
+
+ Last Added
+ ÐоÑледно добавени
+
+
+
+ Last Watched
+ ÐоÑледно гледани
+
+
+
+ Most Watched
+ Ðай-гледани
+
+
+
+ Sort by
+ СоÑÑиÑане по
+
+
+
+ All Videos
+ ÐÑиÑки видео клипове
+
+
+
+ Unwatched Videos
+ Ðегледани видео клипове
+
+
+
+ There are no updated subscriptions at this time.
+ ÐÑма обновени абонаменÑи
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ ÐÑмаÑе абонаменÑи. Ðзполвай звезда за абониÑане кÑм канали
+
+
+
+ ClearButton
+
+
+ Clear
+ ÐзÑиÑÑи
+
+
+
+ DownloadItem
+
+
+ bytes
+ байÑа
+
+
+
+ KB
+ ÐÐ
+
+
+
+ MB
+ ÐÐ
+
+
+
+ bytes/sec
+ байÑа/Ñек
+
+
+
+ KB/sec
+ ÐÐ/Ñек
+
+
+
+ MB/sec
+ ÐÐ/Ñек
+
+
+
+ seconds
+ ÑекÑнди
+
+
+
+ minutes
+ минÑÑи
+
+
+
+ %4 %5 remaining
+ оÑÑÐ°Ð²Ð°Ñ %4 %5
+
+
+
+ DownloadManager
+
+
+ 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.
+
+
+
+
+ Continue
+ ÐÑодÑлжи
+
+
+
+ Get the full version
+ ÐÑлна веÑÑиÑ
+
+
+
+ %1 downloaded in %2
+ %1 изÑеглено за %2
+
+
+
+ Download finished
+ Теглене пÑивÑÑÑено
+
+
+
+ %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
+ изÑеглÑне в: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ ÐзÑеглÑниÑ
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ ÐÑзпÑоизвеждане
+
+
+
+ Pause
+ ÐаÑза
+
+
+
+ Play/Pause
+ ÐÑзпÑоизвеждане/ÐаÑза
+
+
+
+ Stop
+ СпÑи
+
+
+
+ Stop playing after current track
+ СпÑи Ñлед ÑегаÑнаÑа пеÑен
+
+
+
+ Next track
+ СледваÑа пеÑен
+
+
+
+ Previous track
+ ÐÑедиÑна пеÑен
+
+
+
+ Increase volume
+ ÐовиÑи звÑка
+
+
+
+ Decrease volume
+ Ðонижи звÑка
+
+
+
+ Mute
+ ÐаглÑÑи
+
+
+
+ Seek forward
+ ÐÑевÑÑÑане напÑед
+
+
+
+ Seek backward
+ ÐÑевÑÑÑане назад
+
+
+
+ HomeView
+
+
+ Search
+ ТÑÑÑи
+
+
+
+ Find videos and channels by keyword
+ ТÑÑÑене на видео клипове и канали Ñ ÐºÐ»ÑÑови дÑми
+
+
+
+ Browse
+
+
+
+
+ Browse videos by category
+
+
+
+
+ Subscriptions
+ ÐбонаменÑи
+
+
+
+ Channel subscriptions
+ ÐбонаменÑи за канали
+
+
+
+ Make yourself comfortable
+ ÐÑпÑÑнеÑе Ñе
+
+
+
+ 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
+ ÐÑвоÑи в ÑÑл екÑан
+
+
+
+ Hide the playlist and the toolbar
+ СкÑии пÑейлиÑÑаÑа и ÑÑÑлбаÑа
+
+
+
+ Go to the YouTube video page and pause playback
+ ÐÑиди в YouTube видео ÑÑÑаниÑаÑа и Ñложи на паÑза
+
+
+
+ Copy the current video YouTube link to the clipboard
+ ÐоÑÑави вÑÑзка кÑм видеоÑо в YouTube в клипбоÑда
+
+
+
+ Copy the current video stream URL to the clipboard
+ ÐопиÑай URL на гледаноÑо видео в клипбоÑда
+
+
+
+ Find other video parts hopefully in the right order
+
+
+
+
+ &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 the search history. Cannot be undone.
+ ÐзÑиÑÑи иÑÑоÑиÑÑа на ÑÑÑÑене. Ðе е обÑаÑимо.
+
+
+
+ &Quit
+ &ÐзÑ
од
+
+
+
+ Bye
+ Чао
+
+
+
+ &Website
+ &УебÑайÑ
+
+
+
+ %1 on the Web
+ %1 в мÑежаÑа
+
+
+
+ Please support the continued development of %1
+ ÐÐ¾Ð»Ñ Ð¿Ð¾Ð´ÐºÑепеÑе, бÑдеÑиÑе ÑазÑабоÑки на %1
+
+
+
+ &About
+ &ÐÑноÑно
+
+
+
+ Info about %1
+ ÐнÑоÑмаÑÐ¸Ñ Ð·Ð° %1
+
+
+
+ Search
+ ТÑÑÑи
+
+
+
+ Mute volume
+ ÐаглÑÑи звÑка
+
+
+
+
+ &Downloads
+ &ÐзÑеглÑниÑ
+
+
+
+ Show details about video downloads
+
+
+
+
+ &Download
+
+
+
+
+ Download the current video
+
+
+
+
+ &Subscribe to Channel
+
+
+
+
+ Share the current video using %1
+ Сподели ÑегаÑниÑÑ Ð²Ð¸Ð´ÐµÐ¾ клип Ñ %1
+
+
+
+ &Email
+ &ÐлекÑÑонна поÑа
+
+
+
+ Email
+ ÐлекÑÑонна поÑа
+
+
+
+ &Close
+ &ÐаÑваÑÑне
+
+
+
+ &Float on Top
+ &Ðалепи най оÑгоÑе
+
+
+
+ &Stop After This Video
+ &СпÑи Ñлед Ñози видео клип
+
+
+
+ &Report an Issue...
+
+
+
+
+ &Refine Search...
+
+
+
+
+ More...
+ ÐовеÑе...
+
+
+
+ &Related Videos
+
+
+
+
+ Watch videos related to the current one
+
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ &ÐпликаÑиÑ
+
+
+
+ Buy %1...
+ ÐакÑпи %1
+
+
+
+ &Playback
+ &ÐÑзпÑоизвеждане
+
+
+
+ &Playlist
+ &ÐлейлиÑÑа
+
+
+
+ &Video
+ &Ðидео
+
+
+
+ &View
+ &Ðиж
+
+
+
+ &Share
+ &Сподели
+
+
+
+ &Help
+ &ÐомоÑ
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ ÐаÑиÑни %1 за да ÑвелиÑиÑе звÑка, %2 да го намалиÑе
+
+
+
+
+ Opening %1
+ ÐÑваÑÑне %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
+ ÐзÑакайÑе ÑегленеÑо да пÑивÑÑÑи
+
+
+
+ Leave &Full Screen
+ ÐзÑ
од Ð¾Ñ &ЦÑл екÑан
+
+
+
+ %1 version %2 is now available.
+ %1 веÑÑÐ¸Ñ %2 е доÑÑÑпна.
+
+
+
+ Remind me later
+ Ðапомни ми по кÑÑно
+
+
+
+ Update
+ Ðбнови
+
+
+
+ Error: %1
+ ÐÑеÑка: %1
+
+
+
+ P&revious
+ Ð&ÑедиÑно
+
+
+
+ Go back to the previous track
+ ÐÑÑни Ñе на пÑедиÑнаÑа пеÑен
+
+
+
+ &Compact Mode
+ &ÐомпакÑен Ñежим
+
+
+
+ Open the &YouTube Page
+ ÐÑвоÑи в &YouTube ÑÑÑаниÑаÑа
+
+
+
+ Copy the YouTube &Link
+ ÐопиÑай YouTube &вÑÑзкаÑа
+
+
+
+ Copy the Video Stream &URL
+ ÐопиÑай &URL на видео излÑÑванеÑо
+
+
+
+ Find Video &Parts
+
+
+
+
+ &Clear Recent Searches
+
+
+
+
+ Make a &Donation
+ ÐапÑави &даÑение
+
+
+
+ &Manually Start Playing
+ &Ð ÑÑно ÑÑаÑÑиÑане
+
+
+
+ Manually start playing videos
+ Ð ÑÑно вÑзпÑоизвеждане на видео клипове
+
+
+
+ Choose your content location
+ ÐзбеÑи меÑÑонаÑ
ождение
+
+
+
+ &Play
+ &ÐÑзпÑоизвеждане
+
+
+
+ Resume playback
+ ÐÑзÑÑанови вÑзпÑоизвежданеÑо
+
+
+
+ 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 complete
+
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ ÐеÑе можеÑе да вмÑкнеÑе YouTube линка в дÑÑго пÑиложение
+
+
+
+ You can now paste the video stream URL into another application
+ ÐеÑе можеÑе да вмÑкнеÑе URL адÑеÑа на излÑÑванеÑо в дÑÑго пÑиложение
+
+
+
+ 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
+ ÐÑодÑлжи
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ оÑ
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ ÑаÑÑ
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ епизод
+
+
+
+ Sent from %1
+ ÐзпÑаÑено Ð¾Ñ %1
+
+
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
+ Get the full version
+ ÐÑлна веÑÑиÑ
+
+
+
+ Downloading %1
+ изÑеглане %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ ÐоÑÑÑпна е нова веÑÑÐ¸Ñ Ð½Ð° %1
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 е доÑÑÑпна Ñега. Ðие имаÑе %$3
+
+
+
+ Would you like to download it now?
+
+
+
+
+ Skip This Version
+
+
+
+
+ Remind Me Later
+ Ðапомни ми по-кÑÑно
+
+
+
+ Install Update
+ ÐбновеÑе
+
+
+
+ PasteLineEdit
+
+
+ Paste
+
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %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
+ РеÑÑаÑÑиÑай изÑеглÑнеÑо
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ ТÑÑÑÑ...
+
+
+
+ Show %1 More
+ Ðокажи %1 повеÑе
+
+
+
+ No videos
+ ÐÑма видео клипове
+
+
+
+ No more videos
+ ÐÑма повеÑе видео клипове
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ СоÑÑиÑане по
+
+
+
+ Relevance
+
+
+
+
+
+ Date
+ ÐаÑа
+
+
+
+ View Count
+ Ðиж бÑойка
+
+
+
+ Rating
+ ÐлаÑаÑиÑ
+
+
+
+ Anytime
+
+
+
+
+ Today
+ ÐнеÑ
+
+
+
+ 7 Days
+ 7 Ðни
+
+
+
+ 30 Days
+ 30 Ðни
+
+
+
+ Duration
+ ÐÑемеÑÑаене
+
+
+
+
+ All
+ ÐÑиÑки
+
+
+
+ Short
+ ÐÑÑ
+
+
+
+ Medium
+ СÑеден
+
+
+
+ Long
+ ÐÑлÑг
+
+
+
+ Less than 4 minutes
+ Ðо кÑÑ Ð¾Ñ 4 минÑÑи
+
+
+
+ Between 4 and 20 minutes
+ ÐÐµÐ¶Ð´Ñ 4 Ñ 20 минÑÑи
+
+
+
+ Longer than 20 minutes
+ Ðо голÑм Ð¾Ñ 20 минÑÑи
+
+
+
+ Quality
+ ÐаÑеÑÑво
+
+
+
+ High Definition
+ ÐиÑоко каÑеÑÑво
+
+
+
+ 720p or higher
+ 720p или по голÑмо
+
+
+
+ Done
+
+
+
+
+ RegionsView
+
+
+ Done
+
+
+
+
+ SearchLineEdit
+
+
+ Search
+ ТÑÑÑи
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ ÐобÑе доÑли в <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ ÐÑлна веÑÑиÑ
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ ÐапиÑеÑе
+
+
+
+ a keyword
+ клÑÑова дÑма
+
+
+
+ a channel
+ канал
+
+
+
+ to start watching videos.
+ за гледане на видео клипове
+
+
+
+ Watch
+ Ðледай
+
+
+
+ Recent keywords
+ СкоÑоÑни клÑÑови дÑми
+
+
+
+ Recent channels
+ СкоÑоÑни канали
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ &Ðазад
+
+
+
+ Forward to %1
+ ÐапÑед до %1
+
+
+
+ Back to %1
+ Ðазад до %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+
+
+
+
+ Did you mean: %1
+ Ðа не имаÑ
Ñе в пÑедвид: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Ðай-попÑлÑÑни
+
+
+
+ Most Shared
+ Ðай-ÑподелÑни
+
+
+
+ Most Discussed
+ Ðай-обÑÑждани
+
+
+
+ Top Rated
+ Ðай-много глаÑове
+
+
+
+ All Time Popular
+ Ðай-попÑлÑÑни
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+
+
+
+
+ Network error: %1 for %2
+ ÐÑежова гÑеÑка: %1 за %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ ÐлжиÑ
+
+
+
+ Argentina
+ ÐÑженÑина
+
+
+
+ Australia
+ ÐвÑÑÑалиÑ
+
+
+
+ Belgium
+ ÐелгиÑ
+
+
+
+ Brazil
+ ÐÑазилиÑ
+
+
+
+ Canada
+ Ðанада
+
+
+
+ Chile
+ Чили
+
+
+
+ Colombia
+ ÐолÑмбиÑ
+
+
+
+ Czech Republic
+ ЧеÑ
иÑ
+
+
+
+ Egypt
+ ÐгипеÑ
+
+
+
+ France
+ ФÑанÑиÑ
+
+
+
+ Germany
+ ÐеÑманиÑ
+
+
+
+ Ghana
+ Ðана
+
+
+
+ Greece
+ ÐÑÑÑиÑ
+
+
+
+ Hong Kong
+ Хонг Ðонг
+
+
+
+ Hungary
+ УнгаÑиÑ
+
+
+
+ India
+ ÐндиÑ
+
+
+
+ Indonesia
+ ÐндонезиÑ
+
+
+
+ Ireland
+ ÐÑландиÑ
+
+
+
+ Israel
+ ÐзÑаел
+
+
+
+ Italy
+ ÐÑалиÑ
+
+
+
+ Japan
+ ЯпониÑ
+
+
+
+ Jordan
+ ÐоÑданиÑ
+
+
+
+ Kenya
+ ÐениÑ
+
+
+
+ Malaysia
+ ÐалайзиÑ
+
+
+
+ Mexico
+ ÐекÑико
+
+
+
+ Morocco
+ ÐаÑоко
+
+
+
+ Netherlands
+ ХоландиÑ
+
+
+
+ New Zealand
+ Ðова ÐеландиÑ
+
+
+
+ Nigeria
+ ÐигеÑиÑ
+
+
+
+ Peru
+ ÐеÑÑ
+
+
+
+ Philippines
+ ФилипиниÑе
+
+
+
+ Poland
+ ÐолÑа
+
+
+
+ Russia
+ Ð ÑÑиÑ
+
+
+
+ Saudi Arabia
+ СаÑдиÑÑка ÐÑабиÑ
+
+
+
+ Singapore
+ СингапÑÑ
+
+
+
+ South Africa
+ ЮÐÐ
+
+
+
+ South Korea
+ Южна ÐоÑеÑ
+
+
+
+ Spain
+ ÐÑпаниÑ
+
+
+
+ Sweden
+ ШвеÑиÑ
+
+
+
+ Taiwan
+ Тайван
+
+
+
+ Tunisia
+ ТÑниз
+
+
+
+ Turkey
+ ТÑÑÑиÑ
+
+
+
+ Uganda
+ Уганда
+
+
+
+ United Arab Emirates
+ ÐÐÐ
+
+
+
+ United Kingdom
+ ÐеликобÑиÑаниÑ
+
+
+
+ Yemen
+ Ðемен
+
+
+
+ Worldwide
+ Ðа ÑвеÑовно ниво
+
+
+
\ No newline at end of file
diff --git a/locale/ca.ts b/locale/ca.ts
index daadf4b..f91f7ef 100644
--- a/locale/ca.ts
+++ b/locale/ca.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Hi ha vida fora del navegador!
-
+
Version %1
Versió %1
-
+
Licensed to: %1
-
+ Llicenciat a: %1
-
+
%1 is Free Software but its development takes precious time.
%1 és programari lliure, però el seu desenvolupament pren un temps preciós.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Siusplau <a href='%1'>dóna</a> per ajudar al desenvolupament continuat del %2.
-
+
You may want to try my other apps as well:
Ãs possible que també vulgueu provar altres aplicacions meves:
-
+
%1, a YouTube music player
%1, un reproductor de música de YouTube
-
+
%1, a music player
%1, un reproductor de música
-
+
Translate %1 to your native language using %2
Traduïu el %1 al vostre idioma natal utilitzant %2
-
+
Icon designed by %1.
Icona dissenyada per %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Alliberat sota la <a href='%1'>Llicència Pública General de GNU</a>
-
+
&Close
&Tanca
-
+
About
Quant a
-
+
What you always wanted to know about %1 and never dared to ask
El que sempre havÃeu volgut saber sobre el %1 i mai us havÃeu atrevit a preguntar
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Entra els detalls de la teva llicència
&Email:
-
+ &Email:
&Code:
-
+ &Codi:
@@ -111,7 +111,7 @@
Without a license, the application will expire in %1 days.
-
+ Sense llicència, l'aplicació caducarà en %1 dies
@@ -126,11 +126,100 @@
Enter License
-
+ Entra la lliçència
Buy License
+ Comprar llicència
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Ordena per
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/s
-
+
KB/sec
KB/s
-
+
MB/sec
MB/s
-
+
seconds
segons
-
+
minutes
minuts
-
+
%4 %5 remaining
%4 %5 restant
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Aquesta només és la versió de demostració del %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Només pot baixar vÃdeos de menys de %1 minuts per tal que en pugui provar aquesta funció.
-
+
Continue
Continua
-
+
Get the full version
Aconsegueix la versió completa
-
+
%1 downloaded in %2
%1 descarregat en %2
-
+
Download finished
Descà rrega completada
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Canvia la ubicació...
-
+
Choose the download location
Escull la ubicació de les baixades
-
+
Download location changed.
Ubicació de baixades canviada.
-
+
Current downloads will still go in the previous location.
Les baixades actuals encara aniran a la ubicació prèvia.
-
+
Downloading to: %1
Baixant a: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Baixades
@@ -270,68 +359,68 @@
Downloading update...
-
+ Descarregant actualitzacions...
GlobalShortcuts
-
+
Play
Reprodueix
-
+
Pause
Posa en pausa
-
+
Play/Pause
Reprodueix/posa en pausa
-
+
Stop
Atura
-
+
Stop playing after current track
Atura en acabar la peça actual
-
+
Next track
Peça següent
-
+
Previous track
Peça prèvia
-
+
Increase volume
Augmenta el volum
-
+
Decrease volume
Disminuex el volum
-
+
Mute
Silencia
-
+
Seek forward
Cerca endavant
-
+
Seek backward
Cerca enrere
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Cerca
-
+
Find videos and channels by keyword
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Error
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Atura
-
+
Stop playback and go back to the search view
Atura la reproducció i torna a la vista de búsqueda
-
+
S&kip
&Salta
-
+
Skip to the next video
Salta al vÃdeo següent
-
-
+
+
&Pause
&Pausa
-
-
+
+
Pause playback
Pausa la reproducció
-
+
&Full Screen
Pantalla &completa
-
+
Go full screen
Passa a pantalla completa
-
+
Hide the playlist and the toolbar
Amaga la llista de reproducció i la barra d'eines
-
+
Go to the YouTube video page and pause playback
Ves a la pà gina del vÃdeo del YouTube i pausa la reproducció
-
+
Copy the current video YouTube link to the clipboard
Copia l'enllaç del vÃdeo actual del YouTube al porta-retalls
-
+
Copy the current video stream URL to the clipboard
Copia el URL del flux de vÃdeo actual al porta-retalls
-
+
Find other video parts hopefully in the right order
Troba altres parts del vÃdeo, amb sort en l'ordre correcte
-
+
&Remove
&Elimina
-
+
Remove the selected videos from the playlist
Elimina els vÃdeos seleccionats de la llista de reproducció
-
+
Move &Up
Mou &amunt
-
+
Move up the selected videos in the playlist
Mou amunt els vÃdeos seleccionats en la llista de reproducció
-
+
Move &Down
Mou a&vall
-
+
Move down the selected videos in the playlist
Mou avall els vÃdeos seleccionats en la llista de reproducció
-
+
Clear the search history. Cannot be undone.
Neteja l'historial de búsquedes. No es pot desfer.
-
+
&Quit
&Surt
-
+
Bye
Adéu
-
+
&Website
PÃ gina &web
-
+
%1 on the Web
%1 a la xarxa
-
+
Please support the continued development of %1
Siusplau ajuda al desenvolupament continuat del %1
-
+
&About
&Quant a
-
+
Info about %1
Info sobre %1
-
+
Search
Cerca
-
+
Mute volume
Silencia el volum
-
-
+
+
&Downloads
&Baixades
-
+
Show details about video downloads
Mostra detalls de les descà rregues de vÃdeo
-
+
&Download
&Baixa
-
+
Download the current video
Baixa el vÃdeo actual
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
Comparteix el vÃdeo actual fent servir %1
-
+
&Email
&Email
-
+
Email
Correu electrònic
-
+
&Close
&Tanca
-
+
&Float on Top
Manté a &sobre
-
+
&Stop After This Video
&Atura després d'aquest vÃdeo
-
+
&Report an Issue...
&Informa d'un problema...
-
+
&Refine Search...
&Afina la Cerca...
-
+
More...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplicació
-
+
Buy %1...
Compra %1...
-
+
&Playback
&Reproducció
-
+
&Playlist
&Llista de reproducció
-
+
&Video
&VÃdeo
-
+
&View
&Vista
-
+
&Share
&Compartir
-
+
&Help
A&juda
-
+
Press %1 to raise the volume, %2 to lower it
Premeu %1 per pujar el volum, %2 per baixar-lo
-
-
+
+
Opening %1
Obrint %1
-
+
Do you want to exit %1 with a download in progress?
Vol abandonar el %1 amb una baixada en curs?
-
+
If you close %1 now, this download will be cancelled.
Si tanca el %1 ara, aquesta baixada es cancel·larà .
-
+
Close and cancel download
Tanca i cancel·la la baixada
-
+
Wait for download to finish
Espera a acabar la baixada
-
+
Leave &Full Screen
Abandona la Pantalla &Completa
-
+
%1 version %2 is now available.
%1 versió %2 ja està disponible.
-
+
Remind me later
Recorda-m'ho més tard
-
+
Update
Actualitza
-
+
Error: %1
Error: %1
-
+
P&revious
P&revi
-
+
Go back to the previous track
Torna a la pista anterior
-
+
&Compact Mode
&Mode compacte
-
+
Open the &YouTube Page
Obre la pà gina de &YouTube
-
+
Copy the YouTube &Link
Copia l'&enllaç de YouTube
-
+
Copy the Video Stream &URL
Copia el &URL del flux de vÃdeo
-
+
Find Video &Parts
Troba &parts de vÃdeo
-
+
&Clear Recent Searches
&Neteja les búsquedes recents
-
+
Make a &Donation
Fer una &donació
-
+
&Manually Start Playing
Reprodueix vÃdeos &manualment
-
+
Manually start playing videos
Comença a reproduir vÃdeos manualment
-
+
Choose your content location
-
+
&Play
&Reprodueix
-
+
Resume playback
Continua la reproducció
-
+
Remaining time: %1
Temps restant: %1
-
+
Volume at %1%
Volum al %1%
-
+
Volume is muted
El volum està silenciat
-
+
Volume is unmuted
El volum no està silenciat
-
+
Maximum video definition set to %1
Resolució mà xima de vÃdeo fixada a %1
-
+
Your privacy is now safe
La vostra privacitat ara és segura
-
+
Downloads complete
Baixades completes
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Ja podeu enganxar l'enllaç de YouTube en una altra aplicació
-
+
You can now paste the video stream URL into another application
Ja pot enganxar el URL del flux de vÃdeo en una altra aplicació
-
+
The link will be valid only for a limited time.
L'enllaç només serà và lid durant un temps limitat.
-
+
This is just the demo version of %1.
Aquesta només és la versió de demostració del %1.
-
+
It allows you to test the application and see if it works for you.
Us permet probar l'aplicació i veure si us va bé.
-
+
Continue
Continua
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
part
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodi
-
+
Sent from %1
Enviat des de %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Aconseguiu la versió completa
-
+
Downloading %1
Baixant %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ Una nova versió de %1 està disponible
%1 %2 is now available. You have %3.
-
+ %1 %2 estan disponibles. Tu tens %3.
Would you like to download it now?
-
+ T'agradaria descarregar-ho ara?
Skip This Version
-
+ Omet aquesta versió
Remind Me Later
-
+ Recorda-m'ho després
Install Update
-
+ Instal·la Actualització
@@ -903,58 +1022,58 @@
Paste
-
+ Enganxar
PlaylistItemDelegate
-
+
%1 views
%1 visualitzacions
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
-
+
Completed
-
+
Stopped
-
+
Stop downloading
-
+
Show in %1
-
+
Open parent folder
-
+
Restart downloading
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Buscant...
-
+
Show %1 More
-
+
No videos
Cap vÃdeo
-
+
No more videos
Cap més vÃdeo
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Ordena per
-
+
Relevance
Rellevà ncia
-
-
+
+
Date
Data
-
+
View Count
Nombre de vistes
-
+
Rating
Qualificació
-
+
Anytime
Qualsevol data
-
+
Today
Avui
-
+
7 Days
7 dies
-
+
30 Days
30 dies
-
+
Duration
Duració
-
-
+
+
All
Tot
-
+
Short
Curt
-
+
Medium
Mig
-
+
Long
Llarg
-
+
Less than 4 minutes
Menys de 4 minuts
-
+
Between 4 and 20 minutes
Entre 4 i 20 minuts
-
+
Longer than 20 minutes
Més de 20 minuts
-
+
Quality
Qualitat
-
+
High Definition
Alta Definició
-
+
720p or higher
720p o major
-
+
Done
Fet
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Benvinguts al <a href='%1'>%2</a>,
-
+
Get the full version
Aconsegueix la versió completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Introdueix
-
+
a keyword
una paraula
-
+
a channel
un canal
-
+
to start watching videos.
per comencar a veure vÃdeos.
-
+
Watch
Veure
-
+
Recent keywords
Búsquedes recents
-
+
Recent channels
Canals recents
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Enrere
-
+
Forward to %1
-
+
Back to %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Afina la Cerca
-
+
Did you mean: %1
Volieu dir: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
No es pot obtenir flux de vÃdeo per %1
-
+
Network error: %1 for %2
Error de xarxa: %1 per %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
-
+
Argentina
-
+
Australia
-
+
Belgium
-
+
Brazil
-
+
Canada
-
+
Chile
-
+
Colombia
-
+
Czech Republic
-
+
Egypt
-
+
France
-
+
Germany
-
+
Ghana
-
+
Greece
-
+
Hong Kong
-
+
Hungary
-
+
India
-
+
Indonesia
-
+
Ireland
-
+
Israel
-
+
Italy
-
+
Japan
-
+
Jordan
-
+
Kenya
-
+
Malaysia
-
+
Mexico
-
+
Morocco
-
+
Netherlands
-
+
New Zealand
-
+
Nigeria
-
+
Peru
-
+
Philippines
-
+
Poland
-
+
Russia
-
+
Saudi Arabia
-
+
Singapore
-
+
South Africa
-
+
South Korea
-
+
Spain
-
+
Sweden
-
+
Taiwan
-
+
Tunisia
-
+
Turkey
-
+
Uganda
-
+
United Arab Emirates
-
+
United Kingdom
-
+
Yemen
-
+
Worldwide
diff --git a/locale/ca_ES.ts b/locale/ca_ES.ts
deleted file mode 100644
index 9ab70c1..0000000
--- a/locale/ca_ES.ts
+++ /dev/null
@@ -1,1476 +0,0 @@
-
-UTF-8
-
- AboutView
-
-
- There's life outside the browser!
- Hi ha vida fora del navegador!
-
-
-
- Version %1
- Versió %1
-
-
-
- Licensed to: %1
-
-
-
-
- %1 is Free Software but its development takes precious time.
- %1 és Software Lliure però el seu desenvolupament pren un temps molt valuós.
-
-
-
- Please <a href='%1'>donate</a> to support the continued development of %2.
- Si us plau <a href='%1'>doneu</a> per ajudar al desenvolupament continuat del %2.
-
-
-
- You may want to try my other apps as well:
- Potser també voldreu provar les meves altres aplicacions:
-
-
-
- %1, a YouTube music player
- %1, un reproductor de música del YouTube
-
-
-
- %1, a music player
- %1, un reproductor de música
-
-
-
- Translate %1 to your native language using %2
- Traduïu el %1 al vostre idioma natal a través de %2
-
-
-
- Icon designed by %1.
- Icona dissenyada per %1.
-
-
-
- Released under the <a href='%1'>GNU General Public License</a>
- Llançat sota la <a href='%1'>Llicència Pública General de GNU</a>
-
-
-
- &Close
- &Tanca
-
-
-
- About
- Quant a
-
-
-
- What you always wanted to know about %1 and never dared to ask
- El que sempre havÃeu volgut saber sobre el %1 i mai us havÃeu atrevit a preguntar
-
-
-
- ActivationDialog
-
-
- Enter your License Details
-
-
-
-
- &Email:
-
-
-
-
- &Code:
-
-
-
-
- ActivationView
-
-
- Please license %1
- Si us plau, llicencia el %1
-
-
-
- This demo has expired.
- Aquesta demo ha expirat.
-
-
-
- The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
-
-
-
- Without a license, the application will expire in %1 days.
-
-
-
-
- By purchasing the full version, you will also support the hard work I put into creating %1.
- Comprant la versió completa, també donareu suport al dur treball que he posat en la creació del %1.
-
-
-
- Use Demo
- Utilitza la demo
-
-
-
- Enter License
-
-
-
-
- Buy License
-
-
-
-
- ClearButton
-
-
- Clear
- Neteja
-
-
-
- DownloadItem
-
-
- bytes
- bytes
-
-
-
- KB
- KB
-
-
-
- MB
- MB
-
-
-
- bytes/sec
- bytes/seg
-
-
-
- KB/sec
- KB/seg
-
-
-
- MB/sec
- MB/seg
-
-
-
- seconds
- segons
-
-
-
- minutes
- minuts
-
-
-
- %4 %5 remaining
- %4 %5 restant
-
-
-
- DownloadManager
-
-
- This is just the demo version of %1.
- Aquesta només és la versió de demostració del %1.
-
-
-
- It can only download videos shorter than %1 minutes so you can test the download functionality.
- Només pot baixar vÃdeos de menys de %1 minuts per tal que en pugui provar aquesta funció.
-
-
-
- Continue
- Continua
-
-
-
- Get the full version
- Aconseguiu la versió completa
-
-
-
- %1 downloaded in %2
- %1 descarregat en %2
-
-
-
- Download finished
- Descà rrega finalitzada
-
-
-
- %n Download(s)
- %n Baixada %n Baixades
-
-
-
- DownloadSettings
-
-
- Change location...
- Canvieu la ubicació...
-
-
-
- Choose the download location
- Esculliu la ubicació de les baixades
-
-
-
- Download location changed.
- Ubicació de baixades canviada.
-
-
-
- Current downloads will still go in the previous location.
- Les baixades actuals encara aniran a la ubicació prèvia.
-
-
-
- Downloading to: %1
- S'està baixant a: %1
-
-
-
- DownloadView
-
-
-
- Downloads
- Baixades
-
-
-
- DownloadWidget
-
-
- Downloading update...
-
-
-
-
- GlobalShortcuts
-
-
- Play
- Reprodueix
-
-
-
- Pause
- Pausa
-
-
-
- Play/Pause
- Reprodueix/Pausa
-
-
-
- Stop
- Atura
-
-
-
- Stop playing after current track
- Atura en acabar la peça actual
-
-
-
- Next track
- Peça següent
-
-
-
- Previous track
- Peça prèvia
-
-
-
- Increase volume
- Augmenta el volum
-
-
-
- Decrease volume
- Disminuex el volum
-
-
-
- Mute
- Silenci
-
-
-
- Seek forward
- Cerca endavant
-
-
-
- Seek backward
- Cerca enrere
-
-
-
- HomeView
-
-
- Search
- Busca
-
-
-
- Find videos and channels by keyword
-
-
-
-
- Browse
-
-
-
-
- Browse videos by category
-
-
-
-
- Make yourself comfortable
-
-
-
-
- LoadingWidget
-
-
- Error
- Error
-
-
-
- MainWindow
-
-
- &Stop
- &Atura
-
-
-
- Stop playback and go back to the search view
- Atura la reproducció i torna a la vista de búsqueda
-
-
-
- S&kip
- &Salta
-
-
-
- Skip to the next video
- Salta al vÃdeo següent
-
-
-
-
- &Pause
- &Pausa
-
-
-
-
- Pause playback
- Pausa la reproducció
-
-
-
- &Full Screen
- Pantalla &completa
-
-
-
- Go full screen
- Passa a pantalla completa
-
-
-
- Hide the playlist and the toolbar
- Amaga la llista de reproducció i la barra d'eines
-
-
-
- Go to the YouTube video page and pause playback
- Ves a la pà gina del vÃdeo del YouTube i pausa la reproducció
-
-
-
- Copy the current video YouTube link to the clipboard
- Copia l'enllaç del vÃdeo actual del YouTube al porta-retalls
-
-
-
- Copy the current video stream URL to the clipboard
- Copia el URL del flux de vÃdeo actual al porta-retalls
-
-
-
- Find other video parts hopefully in the right order
- Troba altres parts del vÃdeo, amb sort en l'ordre correcte
-
-
-
- &Remove
- &Elimina
-
-
-
- Remove the selected videos from the playlist
- Elimina els vÃdeos seleccionats de la llista de reproducció
-
-
-
- Move &Up
- Mou &amunt
-
-
-
- Move up the selected videos in the playlist
- Mou amunt en la llista de reproducció els vÃdeos seleccionats
-
-
-
- Move &Down
- Mou a&vall
-
-
-
- Move down the selected videos in the playlist
- Mou avall en la llista de reproducció els vÃdeos seleccionats
-
-
-
- Clear the search history. Cannot be undone.
- Neteja l'historial de cerques. No es pot desfer.
-
-
-
- &Quit
- &Surt
-
-
-
- Bye
- Adéu
-
-
-
- &Website
- PÃ gina &web
-
-
-
- %1 on the Web
- %1 en la web
-
-
-
- Please support the continued development of %1
- Si us plau recolzeu el desenvolupament continuat del %1
-
-
-
- &About
- &Quant a
-
-
-
- Info about %1
- Informació sobre el %1
-
-
-
- Search
- Cerca
-
-
-
- Mute volume
- Silencia el volum
-
-
-
-
- &Downloads
- &Baixades
-
-
-
- Show details about video downloads
- Mostra detalls de les descà rregues de vÃdeo
-
-
-
- &Download
- &Baixa
-
-
-
- Download the current video
- Baixa el vÃdeo actual
-
-
-
- Share the current video using %1
- Comparteix el vÃdeo actual fent servir %1
-
-
-
- &Email
- &Email
-
-
-
- Email
- Correu electrònic
-
-
-
- &Close
- &Tanca
-
-
-
- &Float on Top
- Manté a &sobre
-
-
-
- &Stop After This Video
- &Atura després d'aquest vÃdeo
-
-
-
- &Report an Issue...
- &Informa d'un problema
-
-
-
- &Refine Search...
- &Afina la Cerca...
-
-
-
- More...
-
-
-
-
- &Related Videos
-
-
-
-
- Watch videos related to the current one
-
-
-
-
- &Application
- &Aplicació
-
-
-
- Buy %1...
- Compra %1...
-
-
-
- &Playback
- &Reproducció
-
-
-
- &Playlist
- &Llista de reproducció
-
-
-
- &Video
- &VÃdeo
-
-
-
- &View
- &Vista
-
-
-
- &Share
- &Compartir
-
-
-
- &Help
- A&juda
-
-
-
- Press %1 to raise the volume, %2 to lower it
- Premeu %1 per pujar el volum, %2 per baixar-lo
-
-
-
-
- Opening %1
- S'està obrint %1
-
-
-
- Do you want to exit %1 with a download in progress?
- Voleu abandonar el %1 amb una baixada en curs?
-
-
-
- If you close %1 now, this download will be cancelled.
- Si tanqueu el %1 ara, aquesta baixada es cancel·larà .
-
-
-
- Close and cancel download
- Tanca i cancel·la la baixada
-
-
-
- Wait for download to finish
- Espera a acabar la baixada
-
-
-
- Leave &Full Screen
- Abandona la Pantalla &Completa
-
-
-
- %1 version %2 is now available.
- %1 versió %2 ja està disponible.
-
-
-
- Remind me later
- Recorda-m'ho més tard
-
-
-
- Update
- Actualitza
-
-
-
- Error: %1
- Error: %1
-
-
-
- P&revious
- P&revi
-
-
-
- Go back to the previous track
- Torna a la pista anterior
-
-
-
- &Compact Mode
- &Mode compacte
-
-
-
- Open the &YouTube Page
- Obre la pà gina de &YouTube
-
-
-
- Copy the YouTube &Link
- Copia l'&enllaç de YouTube
-
-
-
- Copy the Video Stream &URL
- Copia el &URL del flux de vÃdeo
-
-
-
- Find Video &Parts
- Troba &parts de vÃdeo
-
-
-
- &Clear Recent Searches
- &Neteja les búsquedes recents
-
-
-
- Make a &Donation
- Fer una &donació
-
-
-
- &Manually Start Playing
- Reprodueix vÃdeos &manualment
-
-
-
- Manually start playing videos
- Comença a reproduir vÃdeos manualment
-
-
-
- Choose your content location
-
-
-
-
- &Play
- &Reprodueix
-
-
-
- Resume playback
- Continua la reproducció
-
-
-
- Remaining time: %1
- Temps restant: %1
-
-
-
- Volume at %1%
- Volum al %1%
-
-
-
- Volume is muted
- Volum desactivat
-
-
-
- Volume is unmuted
- Volum activat
-
-
-
- Maximum video definition set to %1
- Resolució mà xima de vÃdeo fixada a %1
-
-
-
- Your privacy is now safe
- La vostra privacitat està protegida
-
-
-
- Downloads complete
- Baixades completes
-
-
-
- MediaView
-
-
- You can now paste the YouTube link into another application
- Ja podeu enganxar l'enllaç del YouTube en una altra aplicació
-
-
-
- You can now paste the video stream URL into another application
- Ja podeu enganxar el URL del flux de vÃdeo en una altra aplicació
-
-
-
- The link will be valid only for a limited time.
- L'enllaç només serà và lid durant un temps limitat.
-
-
-
- This is just the demo version of %1.
- Aquesta només és la versió de demostració del %1.
-
-
-
- It allows you to test the application and see if it works for you.
- Li permet probar l'aplicació i veure si li va bé.
-
-
-
- Continue
- Continua
-
-
-
- of
- Used in video parts, as in '2 of 3'
- de
-
-
-
- part
- This is for video parts, as in 'Cool video - part 1'
- part
-
-
-
- episode
- This is for video parts, as in 'Cool series - episode 1'
- episodi
-
-
-
- Sent from %1
- Enviat des de %1
-
-
-
- Get the full version
- Aconseguiu la versió completa
-
-
-
- Downloading %1
- S'està baixant %1
-
-
-
- MessageWidget
-
-
- A new version of %1 is available!
-
-
-
-
- %1 %2 is now available. You have %3.
-
-
-
-
- Would you like to download it now?
-
-
-
-
- Skip This Version
-
-
-
-
- Remind Me Later
-
-
-
-
- Install Update
-
-
-
-
- PasteLineEdit
-
-
- Paste
-
-
-
-
- PlaylistItemDelegate
-
-
- %1 views
- %1 visualitzacions
-
-
-
- %1 of %2 (%3) â %4
-
-
-
-
- Preparing
-
-
-
-
- Failed
-
-
-
-
- Completed
-
-
-
-
- Stopped
-
-
-
-
- Stop downloading
-
-
-
-
- Show in %1
-
-
-
-
- Open parent folder
-
-
-
-
- Restart downloading
-
-
-
-
- PlaylistModel
-
-
- Searching...
- Buscant...
-
-
-
- Show %1 More
-
-
-
-
- No videos
- Cap vÃdeo
-
-
-
- No more videos
-
-
-
-
- RefineSearchWidget
-
-
- Sort by
- Ordena per
-
-
-
- Relevance
- Rellevà ncia
-
-
-
-
- Date
- Data
-
-
-
- View Count
- Nombre de vistes
-
-
-
- Rating
- Qualificació
-
-
-
- Anytime
- Qualsevol data
-
-
-
- Today
- Avui
-
-
-
- 7 Days
- 7 dies
-
-
-
- 30 Days
- 30 dies
-
-
-
- Duration
- Durada
-
-
-
-
- All
- Tot
-
-
-
- Short
- Curt
-
-
-
- Medium
- Mig
-
-
-
- Long
- Llarg
-
-
-
- Less than 4 minutes
- menys de 4 minuts
-
-
-
- Between 4 and 20 minutes
- entre 4 i 20 minuts
-
-
-
- Longer than 20 minutes
- més de 20 minuts
-
-
-
- Quality
- Qualitat
-
-
-
- High Definition
- Alta definició
-
-
-
- 720p or higher
- 720p o major
-
-
-
- Done
- Fet
-
-
-
- RegionsView
-
-
- Done
-
-
-
-
- SearchLineEdit
-
-
- Search
- Cerca
-
-
-
- SearchView
-
-
- Welcome to <a href='%1'>%2</a>,
- Benvingut al <a href='%1'>%2</a>,
-
-
-
- Get the full version
- Aconseguiu la versió completa
-
-
-
- Enter
- "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
- Introduïu
-
-
-
- a keyword
- una paraula
-
-
-
- a channel
- un canal
-
-
-
- to start watching videos.
- per comencar a veure vÃdeos.
-
-
-
- Watch
- Veure
-
-
-
- Recent keywords
- Cerques recents
-
-
-
- Recent channels
- Canals recents
-
-
-
- SidebarHeader
-
-
-
- &Back
- &Enrere
-
-
-
- Forward to %1
-
-
-
-
- Back to %1
-
-
-
-
- SidebarWidget
-
-
- Refine Search
- Afina la Cerca
-
-
-
- Did you mean: %1
- Volieu dir: %1
-
-
-
- StandardFeedsView
-
-
- Most Popular
-
-
-
-
- Featured
-
-
-
-
- Most Shared
-
-
-
-
- Most Discussed
-
-
-
-
- Top Rated
-
-
-
-
- Video
-
-
- Cannot get video stream for %1
- No es pot obtenir flux de vÃdeo per %1
-
-
-
- Network error: %1 for %2
- Error de xarxa: %1 per %2
-
-
-
- YTRegions
-
-
- Algeria
-
-
-
-
- Argentina
-
-
-
-
- Australia
-
-
-
-
- Belgium
-
-
-
-
- Brazil
-
-
-
-
- Canada
-
-
-
-
- Chile
-
-
-
-
- Colombia
-
-
-
-
- Czech Republic
-
-
-
-
- Egypt
-
-
-
-
- France
-
-
-
-
- Germany
-
-
-
-
- Ghana
-
-
-
-
- Greece
-
-
-
-
- Hong Kong
-
-
-
-
- Hungary
-
-
-
-
- India
-
-
-
-
- Indonesia
-
-
-
-
- Ireland
-
-
-
-
- Israel
-
-
-
-
- Italy
-
-
-
-
- Japan
-
-
-
-
- Jordan
-
-
-
-
- Kenya
-
-
-
-
- Malaysia
-
-
-
-
- Mexico
-
-
-
-
- Morocco
-
-
-
-
- Netherlands
-
-
-
-
- New Zealand
-
-
-
-
- Nigeria
-
-
-
-
- Peru
-
-
-
-
- Philippines
-
-
-
-
- Poland
-
-
-
-
- Russia
-
-
-
-
- Saudi Arabia
-
-
-
-
- Singapore
-
-
-
-
- South Africa
-
-
-
-
- South Korea
-
-
-
-
- Spain
-
-
-
-
- Sweden
-
-
-
-
- Taiwan
-
-
-
-
- Tunisia
-
-
-
-
- Turkey
-
-
-
-
- Uganda
-
-
-
-
- United Arab Emirates
-
-
-
-
- United Kingdom
-
-
-
-
- Yemen
-
-
-
-
- Worldwide
-
-
-
-
\ No newline at end of file
diff --git a/locale/cs_CZ.ts b/locale/cs_CZ.ts
index edaa37c..4c76524 100644
--- a/locale/cs_CZ.ts
+++ b/locale/cs_CZ.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Život existuje i mimo prohlÞeÄ!
-
+
Version %1
Verze %1
-
+
Licensed to: %1
Licence k: %1
-
+
%1 is Free Software but its development takes precious time.
%1 je svobodný software, ale jeho vývoj stojà drahocenný Äas.
-
+
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.
-
+
You may want to try my other apps as well:
Je možné, že vás zaujmou i moje ostatnà programy:
-
+
%1, a YouTube music player
%1, pÅehrávaÄ hudby z YouTube
-
+
%1, a music player
%1, hudebnà pÅehrávaÄ
-
+
Translate %1 to your native language using %2
PÅeložte %1 do vaÅ¡eho mateÅského jazyka pomocà %2
-
+
Icon designed by %1.
Autor ikony: %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
-
+
About
O aplikaci
-
+
What you always wanted to know about %1 and never dared to ask
Co jste vždy chtÄli vÄdÄt o aplikaci %1 ale nikdy jste se neodvážili zeptat
@@ -134,6 +134,95 @@
Koupit licenci
+
+ ChannelAggregator
+
+
+ By %1
+ Od %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ VÅ¡echna videa
+
+
+
+ Unwatched Videos
+ Nesledovaná videa
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ OznaÄit jako shlédnuté
+
+
+
+ Show Updated
+ Zobrazit aktualizace
+
+
+
+ Name
+ Jméno
+
+
+
+ Last Updated
+ Poslednà aktualizace
+
+
+
+ Last Added
+ Naposledy pÅidáno
+
+
+
+ Last Watched
+ Naposledy shlédnuto
+
+
+
+ Most Watched
+ NejsledovanÄjÅ¡Ã
+
+
+
+ Sort by
+ TÅÃdit podle
+
+
+
+ All Videos
+ VÅ¡echna videa
+
+
+
+ Unwatched Videos
+ Nesledovaná videa
+
+
+
+ There are no updated subscriptions at this time.
+ Nynà nejsou k dispozici žádné aktualizace odbÄrů.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Nemáte žádné odbÄry. Použijte hvÄzdiÄku k pÅihlásenà odbÄru kanálů.
+
+
ClearButton
@@ -145,47 +234,47 @@
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á
@@ -193,37 +282,37 @@
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
-
+
%1 downloaded in %2
%1 staženo v %2
-
+
Download finished
Stahovánà dokonÄeno
-
+
%n Download(s)
%n stahovánà %n stahovánà %n stahovánÃ
@@ -231,27 +320,27 @@
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
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
StahovánÃ
@@ -276,62 +365,62 @@
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
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Hledat
-
+
Find videos and channels by keyword
NajÃt videa a kanály podle klÃÄového slova
-
+
Browse
ProhlÞet
-
+
Browse videos by category
ProhlÞet videa podle kategorie
-
+
+ Subscriptions
+ OdbÄry
+
+
+
+ Channel subscriptions
+ Kanál odbÄrů
+
+
+
Make yourself comfortable
UdÄlejte si pohodlÃ
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Chyba
@@ -375,426 +474,436 @@
MainWindow
-
+
&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
-
+
Hide the playlist and the toolbar
Skryje playlist a toolbar
-
+
Go to the YouTube video page and pause playback
OtevÅe video na webu YouTube a pozastavà pÅehrávánÃ
-
+
Copy the current video YouTube link to the clipboard
ZkopÃruje adresu videa na YouTube do schránky
-
+
Copy the current video stream URL to the clipboard
ZkopÃruje do schránky adresu video streamu
-
+
Find other video parts hopefully in the right order
NajÃt dalÅ¡Ã Äásti videa, doufejme, že ve správném poÅadÃ
-
+
&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 the search history. Cannot be undone.
Vyprázdnà historii vyhledávánÃ. Akci nelze vrátit.
-
+
&Quit
&ZavÅÃt
-
+
Bye
Sbohem
-
+
&Website
&Homepage
-
+
%1 on the Web
%1 na Webu
-
+
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
-
-
+
+
&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
-
+
+ &Subscribe to Channel
+ &PÅihlásit se ke kanálu
+
+
+
Share the current video using %1
SdÃlet aktuálnà video pomocà %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
&ZavÅÃt
-
+
&Float on Top
&Plovoucà navrchu
-
+
&Stop After This Video
&Zastavit po tomto videu
-
+
&Report an Issue...
&Nahlásit chybu...
-
+
&Refine Search...
&UpÅesnit vyhledávánÃ...
-
+
More...
VÃce...
-
+
&Related Videos
&SouvisejÃcà videa
-
+
Watch videos related to the current one
Sledovat videa souvisejÃcà s tÃmto
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplikace
-
+
Buy %1...
Koupit %1...
-
+
&Playback
&PÅehrávánÃ
-
+
&Playlist
&Playlist
-
+
&Video
&Video
-
+
&View
&Pohled
-
+
&Share
&SdÃlet
-
+
&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
-
+
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Ã
-
+
Leave &Full Screen
Opustit zobrazenà na &celou obrazovku
-
+
%1 version %2 is now available.
%1 verze %2 je nynà dostupná.
-
+
Remind me later
PÅipomenout pozdÄji
-
+
Update
Aktualizovat
-
+
Error: %1
Chyba: %1
-
+
P&revious
P&ÅedeÅ¡lý
-
+
Go back to the previous track
JÃt zpÄt na pÅedchozà skladbu
-
+
&Compact Mode
&Kompaktnà mód
-
+
Open the &YouTube Page
OtevÅÃt stránku &YouTube
-
+
Copy the YouTube &Link
KopÃrovat YouTube &odkaz
-
+
Copy the Video Stream &URL
ZkopÃrovat adresu &video streamu
-
+
Find Video &Parts
- Nalézt video &Äásti
+ Nalézt &Äásti videa
-
+
&Clear Recent Searches
&Vymazat poslednà hledánÃ
-
+
Make a &Donation
&PodpoÅit
-
+
&Manually Start Playing
- &RuÄnÄ zahájit pÅehrávánÃ
+ Zahájit pÅehrávánà &ruÄnÄ
-
+
Manually start playing videos
- RuÄnÄ zahájit pÅehrávánà videÃ
+ Zahájit pÅehrávánà videà ruÄnÄ
-
+
Choose your content location
Vyberte si umÃstÄnà obsahu
-
+
&Play
&Play
-
+
Resume playback
PokraÄovat v pÅehrávánÃ
-
+
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
-
+
Maximum video definition set to %1
Maximálnà rozlišenà videa je %1
-
+
Your privacy is now safe
VaÅ¡e soukromà je nynà v bezpeÄÃ
-
+
Downloads complete
VÅ¡echna stahovánà byla dokonÄena
@@ -802,65 +911,75 @@
MediaView
-
+
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
-
+
of
Used in video parts, as in '2 of 3'
z
-
+
part
This is for video parts, as in 'Cool video - part 1'
Äást
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
epizoda
-
+
Sent from %1
Zaslat z %1
-
+
+ Unsubscribe from %1
+ Odhlásit z
+
+
+
+ Subscribe to %1
+ PÅihlásit k %1
+
+
+
Get the full version
Stáhnout plnou verzi
-
+
Downloading %1
Je stahováno %1
@@ -909,75 +1028,75 @@
PlaylistItemDelegate
-
+
%1 views
%1 zobrazenÃ
-
+
%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
+ ZaÄÃt stahovat znovu
PlaylistModel
-
+
Searching...
Hledá se...
-
+
Show %1 More
Zobrazit dalÅ¡Ãch %1
-
+
No videos
Žádná videa
-
+
No more videos
Žádná dalšà videa
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
TÅÃdit podle
-
+
Relevance
Významu
-
-
+
+
Date
Data
-
+
View Count
PoÄtu shlédnutÃ
-
+
Rating
HodnocenÃ
-
+
Anytime
Kdykoliv
-
+
Today
Dnes
-
+
7 Days
7 dnÃ
-
+
30 Days
30 dnů
-
+
Duration
Délka
-
-
+
+
All
VÅ¡e
-
+
Short
Krátký
-
+
Medium
StÅednÃ
-
+
Long
Dlouhý
-
+
Less than 4 minutes
MénÄ než 4 minuty
-
+
Between 4 and 20 minutes
Mezi 4 a 20minutami
-
+
Longer than 20 minutes
Delšà než 20 minut
-
+
Quality
Kvalita
-
+
High Definition
Vysoké rozliÅ¡enÃ
-
+
720p or higher
720p nebo vyÅ¡Å¡Ã
-
+
Done
Hotovo
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Hotovo
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
VÃtejte v <a href='%1'>%2</a>
-
+
Get the full version
ZÃskat plnou verzi
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
- Enter
+ Vložit
-
+
a keyword
kl̀ov̩ slovo
-
+
a channel
kanál
-
+
to start watching videos.
- zaÄÃt sledovat videa.
+ pro sledovánà videÃ.
-
+
Watch
Sledovat
-
+
Recent keywords
Poslednà klÃÄová slova
-
+
Recent channels
Poslednà kanály
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&ZpÄt
-
+
Forward to %1
PÅedat k %1
-
+
Back to %1
ZpÄt k %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
UpÅesnit vyhledávánÃ
-
+
Did you mean: %1
MÄli jste na mysli: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
NejoblÃbenÄjÅ¡Ã
-
- Featured
- NejlepÅ¡Ã
-
-
-
+
Most Shared
NejsdÃlenÄjÅ¡Ã
-
+
Most Discussed
NejdiskutovanÄjÅ¡Ã
-
+
Top Rated
Nejlépe hodnocené
+
+
+ All Time Popular
+ Celou dobu populárnÃ
+
Video
-
+
Cannot get video stream for %1
Nelze zÃskat video stream pro %1
-
+
Network error: %1 for %2
Chyba pÅÃpojenÃ: %1 pro %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
AlžÃrsko
-
+
Argentina
Argentina
-
+
Australia
Austrálie
-
+
Belgium
Belgie
-
+
Brazil
BrazÃlie
-
+
Canada
Kanada
-
+
Chile
Chile
-
+
Colombia
Kolumbie
-
+
Czech Republic
Äeská republika
-
+
Egypt
Egypt
-
+
France
Francie
-
+
Germany
NÄmecko
-
+
Ghana
Ghana
-
+
Greece
Åecko
-
+
Hong Kong
Hong Kong
-
+
Hungary
MaÄarsko
-
+
India
Indie
-
+
Indonesia
Indonesie
-
+
Ireland
Irsko
-
+
Israel
Izrael
-
+
Italy
Itálie
-
+
Japan
Japonsko
-
+
Jordan
Jordánsko
-
+
Kenya
KeÅa
-
+
Malaysia
Malajsie
-
+
Mexico
Mexico
-
+
Morocco
Maroko
-
+
Netherlands
NizozemÃ
-
+
New Zealand
Nový Zéland
-
+
Nigeria
Niger
-
+
Peru
Peru
-
+
Philippines
FilipÃny
-
+
Poland
Polsko
-
+
Russia
Rusko
-
+
Saudi Arabia
Saudská Arabie
-
+
Singapore
Singapur
-
+
South Africa
Jižnà Afrika
-
+
South Korea
Severnà Korea
-
+
Spain
Å panÄlsko
-
+
Sweden
Švédsko
-
+
Taiwan
Taiwan
-
+
Tunisia
Tunisko
-
+
Turkey
Turecko
-
+
Uganda
Uganda
-
+
United Arab Emirates
Spojené arabské emiráty
-
+
United Kingdom
Velká Británie
-
+
Yemen
Jemen
-
+
Worldwide
CelosvÄtovÄ
diff --git a/locale/da.ts b/locale/da.ts
index 28cbf6d..7cfebf4 100644
--- a/locale/da.ts
+++ b/locale/da.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Der findes liv udenfor browseren!
-
+
Version %1
Version %1
-
+
Licensed to: %1
Licenseret til: %1
-
+
%1 is Free Software but its development takes precious time.
%1 er fri software, men udviklingen tager værdifuld tid.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Venligst <a href='%1'>doner</a> for at støtte den forsatte udvikling af %2.
-
+
You may want to try my other apps as well:
Du ønsker måske også at prøve mine andre apps:
-
+
%1, a YouTube music player
%1, en YouTube-musikafspiller
-
+
%1, a music player
%1, en musikafspiller
-
+
Translate %1 to your native language using %2
Oversæt %1 til din modersmål ved hjælp af %2
-
+
Icon designed by %1.
Ikon designet af %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Frigivet under <a href='%1'>GNU General Public License</a>
-
+
&Close
&Luk
-
+
About
Om
-
+
What you always wanted to know about %1 and never dared to ask
Hvad du altid har ønsket at vide om %1 og aldrig turde spørge om
@@ -134,6 +134,95 @@
Køb licens
+
+ ChannelAggregator
+
+
+ By %1
+ Af %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Alle videoer
+
+
+
+ Unwatched Videos
+ Videoer, der ikke er set
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Marker alle som set
+
+
+
+ Show Updated
+ Show opdateret
+
+
+
+ Name
+ Navn
+
+
+
+ Last Updated
+ Senest opdateret
+
+
+
+ Last Added
+ Senest tilføjet
+
+
+
+ Last Watched
+ Sidst set
+
+
+
+ Most Watched
+ Mest set
+
+
+
+ Sort by
+ Sorter efter
+
+
+
+ All Videos
+ Alle videoer
+
+
+
+ Unwatched Videos
+ Videoer, der ikke er set
+
+
+
+ There are no updated subscriptions at this time.
+ Der er ingen opdateringer i de abonnerede.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Du har ingen abonnementer. Brug stjernetegnet til at abonnere på kanaler.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sek
-
+
KB/sec
KB/sek
-
+
MB/sec
MB/sek
-
+
seconds
sekunder
-
+
minutes
minutter
-
+
%4 %5 remaining
%4 %5 mangler
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Dette er kun demoversionen af %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Det kan kun hente videoer kortere end %1 minut, så du kan teste downloadfunktionaliteten.
-
+
Continue
Forsæt
-
+
Get the full version
Hent den fulde version
-
+
%1 downloaded in %2
%1 downloaded på %2
-
+
Download finished
Download afsluttet
-
+
%n Download(s)
%n Download(s) %n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Skift placering...
-
+
Choose the download location
Vælg placering til downloads
-
+
Download location changed.
Downloadplacering ændret.
-
+
Current downloads will still go in the previous location.
Nuværende downloads vil stadig blive glemt i forrige placering.
-
+
Downloading to: %1
Downloader til: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Downloads
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Afspil
-
+
Pause
Pause
-
+
Play/Pause
Afspil/Pause
-
+
Stop
Stop
-
+
Stop playing after current track
Stop afspilning efter det aktuelle spor
-
+
Next track
Næste spor
-
+
Previous track
Forrige spor
-
+
Increase volume
Skru op
-
+
Decrease volume
Skru ned
-
+
Mute
Slå lyden fra
-
+
Seek forward
Søg fremad
-
+
Seek backward
Søg baglæns
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Søg
-
+
Find videos and channels by keyword
Find videoer og kanaler via søgeord
-
+
Browse
Gennemse
-
+
Browse videos by category
Gennemse videoer efter kategori
-
+
+ Subscriptions
+ Abonnementer
+
+
+
+ Channel subscriptions
+ Abonnementer på kanaler
+
+
+
Make yourself comfortable
Sæt dig godt til rette
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Fejl
@@ -375,427 +474,437 @@
MainWindow
-
+
&Stop
&Stop
-
+
Stop playback and go back to the search view
Stop afspilning og gå tilbage til søgeoversigt
-
+
S&kip
S&pring over
-
+
Skip to the next video
Spring til næste video
-
-
+
+
&Pause
&Pause
-
-
+
+
Pause playback
Pause afspilning
-
+
&Full Screen
&Fuldskærm
-
+
Go full screen
Vis i fuldskærm
-
+
Hide the playlist and the toolbar
Skjul afspilningslisten og værktøjslinjen
-
+
Go to the YouTube video page and pause playback
GÃ¥ til YouTube-videosiden og pause afspilningen
-
+
Copy the current video YouTube link to the clipboard
Kopier det aktuelle YouTube-videolink til udklipsholderen
-
+
Copy the current video stream URL to the clipboard
Kopier adressen for den aktuelle videostrøm til udklipsholderen
-
+
Find other video parts hopefully in the right order
Find andre videodele forhåbentlig i den rigtige rækkefølge
-
+
&Remove
&Fjern
-
+
Remove the selected videos from the playlist
Fjern de valgte videoer fra afspilningslisten
-
+
Move &Up
Flyt &Op
-
+
Move up the selected videos in the playlist
Flyt de valgte videoer i afspilningslisten op
-
+
Move &Down
Flyt &Ned
-
+
Move down the selected videos in the playlist
Flyt de valgte videoer i afspilningslisten ned
-
+
Clear the search history. Cannot be undone.
Ryd søgeoversigt. Kan ikke fortrydes.
-
+
&Quit
&Afslut
-
+
Bye
Farvel
-
+
&Website
&Hjemmeside
-
+
%1 on the Web
%1 på nettet
-
+
Please support the continued development of %1
Støt den forsatte udvikling af %1
-
+
&About
&Om
-
+
Info about %1
Info om %1
-
+
Search
Søg
-
+
Mute volume
Slå lyden fra
-
-
+
+
&Downloads
&Downloads
-
+
Show details about video downloads
Vis deltaljer om video downloads
-
+
&Download
&Download
-
+
Download the current video
Download den aktuelle video
-
+
+ &Subscribe to Channel
+ &Abonner på kanal
+
+
+
Share the current video using %1
Del den aktuelle video ved hjælp af %1
-
+
&Email
& E-mail
-
+
Email
E-mail
-
+
&Close
&Luk
-
+
&Float on Top
&Behold øverst
-
+
&Stop After This Video
&Stop efter denne video
-
+
&Report an Issue...
&Rapporter et problem...
-
+
&Refine Search...
&Indskrænk søgning...
-
+
More...
Mere...
-
+
&Related Videos
&Relaterede videoer
-
+
Watch videos related to the current one
Se videoer relateret til den nuværende
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Program
-
+
Buy %1...
Køb %1...
-
+
&Playback
&Afspil
-
+
&Playlist
&Afspilningsliste
-
+
&Video
&Video
-
+
&View
&Vis
-
+
&Share
&Del
-
+
&Help
&Hjælp
-
+
Press %1 to raise the volume, %2 to lower it
Tryk %1 for at skrue op for lyden og %2 for at skrue ned
-
-
+
+
Opening %1
Ã
bner %1
-
+
Do you want to exit %1 with a download in progress?
Vil du afslutte %1 selvom et download er i gang?
-
+
If you close %1 now, this download will be cancelled.
Hvis du lukker %1 nu vil dette download blive annulleret.
-
+
Close and cancel download
Luk og annuller download
-
+
Wait for download to finish
Vent til download er færdig
-
+
Leave &Full Screen
Forlad &Fuld skærm
-
+
%1 version %2 is now available.
%1 version %2 er nu tilgængelig.
-
+
Remind me later
PÃ¥mind mig senere
-
+
Update
Opdatér
-
+
Error: %1
Fejl: %1
-
+
P&revious
F&orrige
-
+
Go back to the previous track
GÃ¥ tilbage til forrige nummer
-
+
&Compact Mode
%
-
+
Open the &YouTube Page
Ã
bn &Youtube-siden
-
+
Copy the YouTube &Link
Kopier &link til Youtube
-
+
Copy the Video Stream &URL
Kopiér &URL'en til videostrømmen
-
+
Find Video &Parts
Find dele af videoen
-
+
&Clear Recent Searches
&Ryd seneste søgninger
-
+
Make a &Donation
Giv en &Donation
-
+
&Manually Start Playing
Start afspilning &manuelt
-
+
Manually start playing videos
Start afspilning af videoer manuelt
-
+
Choose your content location
Vælg placering for dit indhold
-
+
&Play
&Afspil
-
+
Resume playback
Genoptag afspilning
-
+
Remaining time: %1
Tilbageværende tid: %1
-
+
Volume at %1%
Lydniveau på %1%
-
+
Volume is muted
Lyden er slået fra
-
+
Volume is unmuted
Lyden er slået til
-
+
Maximum video definition set to %1
Maksimal videoopløsning sat til %1
-
+
Your privacy is now safe
Dit privatliv er nu sikret
-
+
Downloads complete
Downloads færdig
@@ -803,65 +912,75 @@ Kopiér &URL'en til videostrømmen
MediaView
-
+
You can now paste the YouTube link into another application
Du kan nu indsætte YouTube-linket i et andet program
-
+
You can now paste the video stream URL into another application
Du kan nu indsætte adressen til videostrømmen i et andet program
-
+
The link will be valid only for a limited time.
Linket vil kun være gyldigt i en begrænset periode.
-
+
This is just the demo version of %1.
Dette er kun demoversionen af %1.
-
+
It allows you to test the application and see if it works for you.
Det giver dig mulighed for at teste programmet og se om det virker for dig.
-
+
Continue
Forsæt
-
+
of
Used in video parts, as in '2 of 3'
af
-
+
part
This is for video parts, as in 'Cool video - part 1'
del
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episode
-
+
Sent from %1
Sendt fra %1
-
+
+ Unsubscribe from %1
+ Fjern abonnement fra %1
+
+
+
+ Subscribe to %1
+ Abonner på %1
+
+
+
Get the full version
Hent den fulde version
-
+
Downloading %1
Downloader %1
@@ -910,52 +1029,52 @@ Kopiér &URL'en til videostrømmen
PlaylistItemDelegate
-
+
%1 views
%1 visninger
-
+
%1 of %2 (%3) â %4
%1 af %2 (%3) â %4
-
+
Preparing
Forbereder
-
+
Failed
Fejl
-
+
Completed
Fuldendt
-
+
Stopped
Stoppet
-
+
Stop downloading
Stop download
-
+
Show in %1
VIs i %1
-
+
Open parent folder
Ã
ben ovenstående mappe
-
+
Restart downloading
Genstart download
@@ -963,22 +1082,22 @@ Kopiér &URL'en til videostrømmen
PlaylistModel
-
+
Searching...
Søger...
-
+
Show %1 More
Vis %1 mere
-
+
No videos
Ingen videoer
-
+
No more videos
Ikke flere videoer
@@ -986,109 +1105,109 @@ Kopiér &URL'en til videostrømmen
RefineSearchWidget
-
+
Sort by
Sorter efter
-
+
Relevance
Relevans
-
-
+
+
Date
Dato
-
+
View Count
Antal visninger
-
+
Rating
Bedømmelse
-
+
Anytime
NÃ¥r som helst
-
+
Today
I dag
-
+
7 Days
7 dage
-
+
30 Days
30 dage
-
+
Duration
Varighed
-
-
+
+
All
Alle
-
+
Short
Kort
-
+
Medium
Medium
-
+
Long
Lang
-
+
Less than 4 minutes
Mindre end 4 minutter
-
+
Between 4 and 20 minutes
Mellem 4 og 20 minutter
-
+
Longer than 20 minutes
Længere end 20 minutter
-
+
Quality
Kvalitet
-
+
High Definition
High Definition
-
+
720p or higher
720p eller højere
-
+
Done
Afsluttet
@@ -1096,7 +1215,7 @@ Kopiér &URL'en til videostrømmen
RegionsView
-
+
Done
Afslut
@@ -1112,48 +1231,48 @@ Kopiér &URL'en til videostrømmen
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Velkommen til <a href='%1'>%2</a>,
-
+
Get the full version
Hent den fulde version
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Indtast
-
+
a keyword
et nøgleord
-
+
a channel
en kanal
-
+
to start watching videos.
for at begynde at se video.
-
+
Watch
Afspil
-
+
Recent keywords
Seneste nøgleord
-
+
Recent channels
Nyeste kanaler
@@ -1161,18 +1280,18 @@ Kopiér &URL'en til videostrømmen
SidebarHeader
-
-
+
+
&Back
&Tilbage
-
+
Forward to %1
Frem til %1
-
+
Back to %1
Tilbage til %1
@@ -1180,12 +1299,12 @@ Kopiér &URL'en til videostrømmen
SidebarWidget
-
+
Refine Search
Indskrænk søgning
-
+
Did you mean: %1
Mente du: %1
@@ -1193,40 +1312,40 @@ Kopiér &URL'en til videostrømmen
StandardFeedsView
-
+
Most Popular
Mest populære
-
- Featured
- Udvalgte
-
-
-
+
Most Shared
Mest delte
-
+
Most Discussed
Mest diskuterede
-
+
Top Rated
Bedst bedømte
+
+
+ All Time Popular
+ Mest populære
+
Video
-
+
Cannot get video stream for %1
Kan ikke hente videostrøm for %1
-
+
Network error: %1 for %2
Netværksfejl: %1 for %2
@@ -1234,242 +1353,242 @@ Kopiér &URL'en til videostrømmen
YTRegions
-
+
Algeria
Algeriet
-
+
Argentina
Argentina
-
+
Australia
Austalien
-
+
Belgium
Belgien
-
+
Brazil
Brasilien
-
+
Canada
Canada
-
+
Chile
Chile
-
+
Colombia
Colombia
-
+
Czech Republic
Tjekkiet
-
+
Egypt
Egypten
-
+
France
Frankrig
-
+
Germany
Tyskland
-
+
Ghana
Ghana
-
+
Greece
Grækenland
-
+
Hong Kong
Hong Kong
-
+
Hungary
Ungarn
-
+
India
Indien
-
+
Indonesia
Indonesien
-
+
Ireland
Irland
-
+
Israel
Israel
-
+
Italy
Italien
-
+
Japan
Japan
-
+
Jordan
Jordan
-
+
Kenya
Kenya
-
+
Malaysia
Malaysia
-
+
Mexico
Mexico
-
+
Morocco
Marokko
-
+
Netherlands
Nederlandende
-
+
New Zealand
New Zealand
-
+
Nigeria
Nigeria
-
+
Peru
Peru
-
+
Philippines
Philipinierne
-
+
Poland
Polen
-
+
Russia
Rusland
-
+
Saudi Arabia
Saudi-Arabien
-
+
Singapore
Singapore
-
+
South Africa
Sydfrika
-
+
South Korea
Sydkorea
-
+
Spain
Spanien
-
+
Sweden
Sverige
-
+
Taiwan
Taiwan
-
+
Tunisia
Tunisien
-
+
Turkey
Tyrkiet
-
+
Uganda
Uganda
-
+
United Arab Emirates
Forenede Arabiske Emirater
-
+
United Kingdom
Storbritanien
-
+
Yemen
Yemen
-
+
Worldwide
Hele verden
diff --git a/locale/de_DE.ts b/locale/de_DE.ts
index c59912a..1141755 100644
--- a/locale/de_DE.ts
+++ b/locale/de_DE.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Es gibt ein Leben auÃerhalb des Browsers!
-
+
Version %1
Version %1
-
+
Licensed to: %1
-
+ Lizenziert für: %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</a> to support the continued development of %2.
- Bitte <a href='%1'>spende</a>, um die ständige Entwicklung von %2 zu unterstützen.
+ Bitte <a href='%1'>spenden</a> Sie, um die Weiterentwicklung von %2 zu unterstützen.
-
+
You may want to try my other apps as well:
Vielleicht möchten Sie auch meine anderen Apps ausprobieren:
-
+
%1, a YouTube music player
%1, ein YouTube-Musik-Player
-
+
%1, a music player
%1, ein Musik-Player
-
+
Translate %1 to your native language using %2
Ãbersetzen Sie %1 in Ihre Muttersprache mit %2
-
+
Icon designed by %1.
- Symbol-Entwurf durch %1.
+ Icons wurden gestaltet 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
-
+
About
Ãber
-
+
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
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Geben Sie Ihre Lizenzierungsinformationen ein
&Email:
-
+ &E-mail:
&Code:
-
+ &Schlüssel:
@@ -106,12 +106,12 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ In der Vollversion können Sie Videos ohne Unterbrechungen und mit einer Laufzeit von mehr als %1 Minuten ansehen.
Without a license, the application will expire in %1 days.
-
+ Ohne Lizenz läuft das Programm nur noch %1 Tage.
@@ -126,12 +126,101 @@
Enter License
-
+ Lizenzdaten eingeben
Buy License
-
+ Lizenz kaufen
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Von %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Alle Videos
+
+
+
+ Unwatched Videos
+ Ungesehene Videos
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Alle als gesehen markieren
+
+
+
+ Show Updated
+ Zeige aktualisierte
+
+
+
+ Name
+ Name
+
+
+
+ Last Updated
+ Zuletzt aktualisiert
+
+
+
+ Last Added
+ Zuletzt hinzugefügt
+
+
+
+ Last Watched
+ Zuletzt angesehen
+
+
+
+ Most Watched
+ Am meisten angesehen
+
+
+
+ Sort by
+ Sortieren nach
+
+
+
+ All Videos
+ Alle Videos
+
+
+
+ Unwatched Videos
+ Ungesehene Videos
+
+
+
+ There are no updated subscriptions at this time.
+ Zurzeit gibt es nichts Neues bei den Abonnements.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Du hast keine Abonnements. Benutze das Stern-Symbol, um einen Kanal zu abonnieren.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
Bytes
-
+
KB
kB
-
+
MB
MB
-
+
bytes/sec
Bytes/s
-
+
KB/sec
kB/s
-
+
MB/sec
MB/s
-
+
seconds
Sekunden
-
+
minutes
Minuten
-
+
%4 %5 remaining
%4 %5 verbleibend
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Dies ist nur die Demoversion von %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
- Sie kann nur Videos, die kürzer als %1 Minuten sind, herunterladen, damit die Download-Funktionalität getestet werden kann.
+ Sie kann nur Videos herunterladen, die kürzer als %1 Minuten sind, um die Funktion zum Herunterladen zu testen.
-
+
Continue
Fortfahren
-
+
Get the full version
- Die Vollversion holen
+ Die Vollversion kaufen
-
+
%1 downloaded in %2
%1 heruntergeladen nach %2
-
+
Download finished
Herunterladen abgeschlossen
-
+
%n Download(s)
%n Download %n Downloads
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Speicherort ändernâ¦
-
+
Choose the download location
Wähle den Speicherort
-
+
Download location changed.
- Speicherort wurde verändert.
+ Speicherort wurde geändert.
-
+
Current downloads will still go in the previous location.
- Aktuelle Downloads werden immernoch im alten Speicherort gespeichert.
+ Aktuelle Downloads werden immer noch im alten Speicherort gespeichert.
-
+
Downloading to: %1
Lade herunter nach: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Downloads
@@ -270,68 +359,68 @@
Downloading update...
-
+ Lade Aktualisierung herunter...
GlobalShortcuts
-
+
Play
Abspielen
-
+
Pause
Pause
-
+
Play/Pause
Abspielen/Pause
-
+
Stop
Halt
-
+
Stop playing after current track
- Nachdem aktueller Titel abgespielt wurde halten
+ Nach aktuellem Titel Wiedergabe anhalten
-
+
Next track
Nächster Titel
-
+
Previous track
Vorheriger Titel
-
+
Increase volume
Lautstärke erhöhen
-
+
Decrease volume
Lautstärke verringern
-
+
Mute
Stummschalten
-
+
Seek forward
Vorwärts spulen
-
+
Seek backward
Rückwärts spulen
@@ -339,35 +428,45 @@
HomeView
-
+
Search
Suche
-
+
Find videos and channels by keyword
-
+ Videos und Kanäle nach Suchbegriff finden
-
+
Browse
-
+ Stöbern
-
+
Browse videos by category
-
+ Videos nach Kategorien durchstöbern
+
+
+
+ Subscriptions
+ Abonnements
-
+
+ Channel subscriptions
+ Abonnierte Kanäle
+
+
+
Make yourself comfortable
-
+ Machen Sie es sich gemütlich
LoadingWidget
-
+
Error
Fehler
@@ -375,492 +474,512 @@
MainWindow
-
+
&Stop
&Halt
-
+
Stop playback and go back to the search view
Wiedergabe anhalten und zur Suchansicht zurückkehren
-
+
S&kip
Ã&berspringen
-
+
Skip to the next video
Zum nächsten Video springen
-
-
+
+
&Pause
&Pause
-
-
+
+
Pause playback
Wiedergabe pausieren
-
+
&Full Screen
&Vollbildmodus
-
+
Go full screen
Vollbildmodus aktivieren
-
+
Hide the playlist and the toolbar
- Verstecke Abspielliste und Werkzeugleiste
+ Abspielliste und Werkzeugleiste ausblenden
-
+
Go to the YouTube video page and pause playback
Gehe zur YouTube-Video-Seite und pausiere die Wiedergabe
-
+
Copy the current video YouTube link to the clipboard
YouTube-Link in die Zwischenablage kopieren
-
+
Copy the current video stream URL to the clipboard
- Video-URL in die Zwischenablage kopieren
+ Video-Link in die Zwischenablage kopieren
-
+
Find other video parts hopefully in the right order
Findet andere Teile des Videos, hoffentlich in der richtigen Reihenfolge
-
+
&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
Bewege 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 the search history. Cannot be undone.
- Such-Verlauf leeren. Kann nicht rückgängig gemacht werden.
+ Den Suchverlauf löschen. Kann nicht rückgängig gemacht werden.
-
+
&Quit
&Verlassen
-
+
Bye
Tschüss
-
+
&Website
&Webseite
-
+
%1 on the Web
%1 im Web
-
+
Please support the continued development of %1
Bitte unterstützen Sie die weitere Entwicklung von %1
-
+
&About
&Ãber
-
+
Info about %1
Informationen über %1
-
+
Search
Suche
-
+
Mute volume
Stummschalten
-
-
+
+
&Downloads
&Downloads
-
+
Show details about video downloads
Details über Video-Downloads anzeigen
-
+
&Download
H&erunterladen
-
+
Download the current video
Das aktuelle Video herunterladen
-
+
+ &Subscribe to Channel
+ &Abonnieren des Kanals
+
+
+
Share the current video using %1
Teilen Sie das aktuellen Video mit %1
-
+
&Email
&E-Mail
-
+
Email
E-Mail
-
+
&Close
&SchlieÃen
-
+
&Float on Top
Im Vordergrund &bleiben
-
+
&Stop After This Video
Nach diesem Video &anhalten
-
+
&Report an Issue...
&Ein Problem melden ...
-
+
&Refine Search...
&Suche verfeinern ...
-
+
More...
-
+ Mehr...
-
+
&Related Videos
-
+ Ve&rwandte Videos
-
+
Watch videos related to the current one
-
+ Verwandte Videos zum Aktuellen ansehen
+
+
+
+ Open in &Browser...
+ Im &Browser öffnen...
-
+
&Application
&Anwendung
-
+
Buy %1...
%1 kaufen...
-
+
&Playback
&Wiedergabe
-
+
&Playlist
A&bspielliste
-
+
&Video
&Video
-
+
&View
&Ansehen
-
+
&Share
&Teilen
-
+
&Help
&Hilfe
-
+
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
-
-
+
+
Opening %1
- %1 öffnen
+ Ãffne %1
-
+
Do you want to exit %1 with a download in progress?
Möchten Sie %1 mit einem aktiven Download beenden?
-
+
If you close %1 now, this download will be cancelled.
Wenn Sie %1 jetzt beenden, wird der Download abgebrochen.
-
+
Close and cancel download
Beenden und Download abbrechen
-
+
Wait for download to finish
- Auf Abschluà des Downloads warten
+ Auf Abschluss des Downloads warten
-
+
Leave &Full Screen
&Vollbild verlassen
-
+
%1 version %2 is now available.
%1 Version %2 ist jetzt verfügbar.
-
+
Remind me later
Erinnere mich später
-
+
Update
Aktualisierung
-
+
Error: %1
Fehler: %1
-
+
P&revious
V&origes
-
+
Go back to the previous track
Zum vorherigen Titel zurückgehen
-
+
&Compact Mode
&Kompakt-Modus
-
+
Open the &YouTube Page
&YouTube-Seite öffnen
-
+
Copy the YouTube &Link
- YouTube &Link kopieren
+ YouTube-&Link kopieren
-
+
Copy the Video Stream &URL
- Video-Stream &URL kopieren
+ Video-Stream-&URL kopieren
-
+
Find Video &Parts
- Suche Video &Teile
+ Suche weitere Video&teile
-
+
&Clear Recent Searches
Vorherige Suchbegriffe löschen
-
+
Make a &Donation
&Spenden
-
+
&Manually Start Playing
&Manuelles Starten der Wiedergabe
-
+
Manually start playing videos
- Manuelles Starten der Video-Wiedergabe
+ Manuelles Starten der Videowiedergabe
-
+
Choose your content location
-
+ Wähle ein Land für Inhalte
-
+
&Play
&Abspielen
-
+
Resume playback
Wiedergabe fortsetzen
-
+
Remaining time: %1
Verbleibende Zeit: %1
-
+
Volume at %1%
Lautstärke %1%
-
+
Volume is muted
Ton ist stummgeschaltet
-
+
Volume is unmuted
- Ton ist angeschaltet
+ Ton ist eingeschaltet
-
+
Maximum video definition set to %1
- Maximale Video-Auflösung wurde auf %1 gesetzt
+ Maximale Videoauflösung wurde auf %1 gesetzt
-
+
Your privacy is now safe
Ihre Privatsphäre ist nun geschützt
-
+
Downloads complete
- Downloads heruntergeladen
+ Herunterladen vollständig
MediaView
-
+
You can now paste the YouTube link into another application
- Du kannst den YouTube-Link nun in einer anderen Anwendung einfügen
+ Sie können den YouTube-Link nun in einer anderen Anwendung einfügen
-
+
You can now paste the video stream URL into another application
- Du kannst die Video-URL nun in einer anderen Anwendung einfügen
+ Sie können den Video-Link nun 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.
+ Dies ist nur die Demoversion von %1.
-
+
It allows you to test the application and see if it works for you.
- Sie erlaubt Ihnen die Anwendung zu testen und zu schauen ob sie bei Ihnen läuft.
+ Sie erlaubt es Ihnen die Anwendung zu testen und zu schauen, ob sie bei Ihnen läuft.
-
+
Continue
Fortfahren
-
+
of
Used in video parts, as in '2 of 3'
von
-
+
part
This is for video parts, as in 'Cool video - part 1'
Teil
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
Episode
-
+
Sent from %1
Gesendet von %1
-
+
+ Unsubscribe from %1
+ Beende Abonnement von %1
+
+
+
+ Subscribe to %1
+ Abonnieren von %1
+
+
+
Get the full version
- Die Vollversion holen
+ Die Vollversion kaufen
-
+
Downloading %1
%1 herunterladen
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ Eine neue Version von %1 ist verfügbar!
%1 %2 is now available. You have %3.
-
+ %1 %2 ist jetzt verfügbar. Sie haben %3.
Would you like to download it now?
-
+ Möchten Sie sie jetzt herunterladen?
Skip This Version
-
+ Diese Version überspringen
Remind Me Later
-
+ Später erinnern
Install Update
-
+ Aktualisierung installieren
@@ -903,81 +1022,81 @@
Paste
-
+ Einfügen
PlaylistItemDelegate
-
+
%1 views
%1 mal betrachtet
-
+
%1 of %2 (%3) â %4
%1 von %2 (%3) â %4
-
+
Preparing
Bereite vor
-
+
Failed
Fehlgeschlagen
-
+
Completed
Fertiggestellt
-
+
Stopped
- Gestoppt
+ Angehalten
-
+
Stop downloading
-
+ Herunterladen abbrechen
-
+
Show in %1
-
+ In %1 anzeigen
-
+
Open parent folder
- Eltern-Ordner öffnen
+ übergeordneten Ordner öffnen
-
+
Restart downloading
- Herunterladen neustarten
+ Herunterladen neu starten
PlaylistModel
-
+
Searching...
Suche...
-
+
Show %1 More
-
+ Weitere %1 zeigen
-
+
No videos
Keine Videos
-
+
No more videos
Keine weiteren Videos
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Sortieren nach
-
+
Relevance
Relevanz
-
-
+
+
Date
Datum
-
+
View Count
- Anzahl anzeigen
+ Aufrufe
-
+
Rating
Bewertung
-
+
Anytime
- Alle Längen
+ Irgendwann
-
+
Today
Heute
-
+
7 Days
7 Tage
-
+
30 Days
30 Tage
-
+
Duration
Dauer
-
-
+
+
All
Alle
-
+
Short
Kurz
-
+
Medium
Mittel
-
+
Long
Lang
-
+
Less than 4 minutes
Weniger als 4 Minuten
-
+
Between 4 and 20 minutes
Zwischen 4 und 20 Minuten
-
+
Longer than 20 minutes
Länger als 20 Minuten
-
+
Quality
Qualität
-
+
High Definition
- High Definition
+ Hochauflösend
-
+
720p or higher
720p oder höher
-
+
Done
Erledigt
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Fertig
@@ -1111,80 +1230,80 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Willkommen bei <a href='%1'>%2</a>,
-
+
Get the full version
- Die Vollversion holen
+ Die Vollversion kaufen
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Eingeben
-
+
a keyword
- ein Schlüsselwort
+ ein Suchbegriff
-
+
a channel
ein Kanal
-
+
to start watching videos.
um die Wiedergabe zu starten.
-
+
Watch
Anschauen
-
+
Recent keywords
- Aktuelle Schlüsselwörter
+ Letzte Suchbegriffe
-
+
Recent channels
- Aktuelle Kanäle
+ Letzte Kanäle
SidebarHeader
-
-
+
+
&Back
-
+ &Zurück
-
+
Forward to %1
-
+ Weiter zu %1
-
+
Back to %1
-
+ Zurück zu %1
SidebarWidget
-
+
Refine Search
Suche verfeinern
-
+
Did you mean: %1
Haben Sie gemeint: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ Beliebteste
-
- Featured
-
-
-
-
+
Most Shared
-
+ Am meisten geteilt
-
+
Most Discussed
-
+ Am meisten diskutiert
-
+
Top Rated
-
+ Am besten bewertet
+
+
+
+ All Time Popular
+ Beliebteste
Video
-
+
Cannot get video stream for %1
- Videostream für %1 konnte nicht öffnen werden
+ Videostream für %1 konnte nicht geöffnet werden
-
+
Network error: %1 for %2
Netzwerk-Fehler: %1 für %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algerien
-
+
Argentina
-
+ Argentinien
-
+
Australia
-
+ Australien
-
+
Belgium
-
+ Belgien
-
+
Brazil
-
+ Brasilien
-
+
Canada
-
+ Kanada
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Kolumbien
-
+
Czech Republic
-
+ Tschechische Republik
-
+
Egypt
-
+ Ãgypten
-
+
France
-
+ Frankreich
-
+
Germany
-
+ Deutschland
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Griechenland
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ Ungarn
-
+
India
-
+ Indien
-
+
Indonesia
-
+ Indonesien
-
+
Ireland
-
+ Irland
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Italien
-
+
Japan
-
+ Japan
-
+
Jordan
-
+ Jordanien
-
+
Kenya
-
+ Kenia
-
+
Malaysia
-
+ Malaysia
-
+
Mexico
-
+ Mexiko
-
+
Morocco
-
+ Marokko
-
+
Netherlands
-
+ Niederlande
-
+
New Zealand
-
+ Neuseeland
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Philippinen
-
+
Poland
-
+ Polen
-
+
Russia
-
+ Russland
-
+
Saudi Arabia
-
+ Saudi-Arabien
-
+
Singapore
-
+ Singapur
-
+
South Africa
-
+ Südafrika
-
+
South Korea
-
+ Südkorea
-
+
Spain
-
+ Spanien
-
+
Sweden
-
+ Schweden
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ Tunesien
-
+
Turkey
-
+ Türkei
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Vereinigte Arabische Emirate
-
+
United Kingdom
-
+ Vereinigtes Königreich
-
+
Yemen
-
+ Jemen
-
+
Worldwide
-
+ Weltweit
\ No newline at end of file
diff --git a/locale/el.ts b/locale/el.ts
index 5c730f8..c3c8e02 100644
--- a/locale/el.ts
+++ b/locale/el.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Î¥ÏάÏÏει ζÏή ÎÎ¾Ï Î±Ïο Ïον ÏλοηγÏ!
-
+
Version %1
ÎκδοÏη %1
-
+
Licensed to: %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.
-
+
You may want to try my other apps as well:
ÎÏοÏεί να θÎλεÏε να δοκιμάÏεÏε και ÏÎ¹Ï Î¬Î»Î»ÎµÏ Î¼Î¿Ï
εÏαÏμογÎÏ:
-
+
%1, a YouTube music player
%1, ÎÎ½Î±Ï Î±Î½Î±ÏαÏαγÏγÎÎ±Ï Î¼Î¿Ï
ÏÎ¹ÎºÎ®Ï ÏοÏ
YouTube
-
+
%1, a music player
%1, ÎÎ½Î±Ï Î±Î½Î±ÏαÏαγÏγÎÎ±Ï Î¼Î¿Ï
ÏικήÏ
-
+
Translate %1 to your native language using %2
ÎεÏαÏÏάÏÏε Ïο %1 ÏÏη γλÏÏÏα ÏÎ±Ï ÏÏηÏιμοÏοιÏνÏÎ±Ï Ïο %2
-
+
Icon designed by %1.
ΣÏεδιαÏμÏÏ ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Î¿Ï
αÏÏ %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
ÎκδοÏη κάÏÏ Î±Ïο ÏοÏ
Ï ÏÏοÏ
Ï ÏÎ·Ï <a href='%1'>ÎÎµÎ½Î¹ÎºÎ®Ï ÎÎ´ÎµÎ¹Î±Ï Î§ÏήÏÎ·Ï GNU</a>
-
+
&Close
&ÎλείÏιμο
-
+
About
ΣÏεÏικά
-
+
What you always wanted to know about %1 and never dared to ask
ÎÏι θÎλαÏε να μάθεÏε ÏÏεÏικά με Ïο %1 και δεν ÏολμοÏÏαÏε να ÏÏÏήÏεÏε
@@ -106,7 +106,7 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ Î ÏλήÏÎ·Ï ÎκδοÏη ÏÎ±Ï ÎµÏιÏÏÎÏει Ïην λήÏη βίνÏεο με διάÏκεια μεγαλÏÏεÏη αÏÏ %1 λεÏÏά και Ïην αναÏαÏαγÏγή ÏÏν βίνÏεο ÏÏÏÎ¯Ï Î´Î¹Î±ÎºÎ¿ÏÎÏ.
@@ -134,6 +134,95 @@
ÎγοÏά Î¬Î´ÎµÎ¹Î±Ï ÏÏήÏηÏ
+
+ ChannelAggregator
+
+
+ By %1
+ ÎÏÏ %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Îλα Ïα βίνÏεο
+
+
+
+ Unwatched Videos
+ ΣÏεÏικά βίνÏεο
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ ΣημείÏÏη ÏλÏν ÏÏ ÏαÏακολοÏθενÏα
+
+
+
+ Show Updated
+ ÎμÏάνιÏη ενημÎÏÏÏεÏν
+
+
+
+ Name
+ Ïνομα
+
+
+
+ Last Updated
+ ΤελεÏ
Ïαία ÎνημÎÏÏÏη
+
+
+
+ Last Added
+ ΤελεÏ
Ïαία ÏÏοÏÏÎθηκε
+
+
+
+ Last Watched
+ ÏελεÏ
Ïαίο Î ÏοβληθÎνÏα
+
+
+
+ Most Watched
+ Πιο δημοÏιλή
+
+
+
+ Sort by
+ ΤαξινÏμηÏη καÏά ...
+
+
+
+ All Videos
+ Îλα Ïα βίνÏεο
+
+
+
+ Unwatched Videos
+ ΣÏεÏικά βίνÏεο
+
+
+
+ There are no updated subscriptions at this time.
+ Îεν Ï
ÏάÏÏοÏ
ν ÏÏ
νδÏομÎÏ ÎµÎ½Î·Î¼ÎÏÏÏÎ·Ï Î±Ï
Ïή Ïη ÏÏιγμή.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Îεν ÎÏεÏε εγγÏαÏÎÏ. ΧÏηÏιμοÏοιήÏÏε Ïο αÏÏÎÏι για να εγγÏαÏείÏε ÏÏ
νδÏομηÏÎ®Ï Ïε κανάλια.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/δεÏ
Ï
-
+
KB/sec
KB/δεÏ
Ï
-
+
MB/sec
MB/δεÏ
Ï
-
+
seconds
δεÏ
ÏεÏÏλεÏÏα
-
+
minutes
λεÏÏά
-
+
%4 %5 remaining
αÏομÎνοÏ
ν %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
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
ÎÏοκÏήÏÏε Ïην ÏλήÏη ÎκδοÏη
-
+
%1 downloaded in %2
%1 λήÏθηκε Ïε %2
-
+
Download finished
ΠλήÏη ολοκληÏÏθηκε
-
+
%n Download(s)
%n ÎήÏη %n ÎήÏειÏ
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
ÎλλάξÏε ÏοÏοθεÏία...
-
+
Choose the download location
ÎÏιλÎξÏε Ïην ÏοÏοθεÏία λήÏηÏ
-
+
Download location changed.
Î ÏοÏοθεÏία λήÏÎ·Ï Î¬Î»Î»Î±Î¾Îµ.
-
+
Current downloads will still go in the previous location.
Τα ήδη ληÏθÎνÏα θα ÏαÏαμείνοÏ
ν ÏÏην ÏÏοηγοÏμενη ÏοÏοθεÏία.
-
+
Downloading to: %1
ÎήÏη ÏÏο: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
ÎήÏειÏ
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
ÎναÏαÏαγÏγή
-
+
Pause
ΠαÏÏη
-
+
Play/Pause
ÎναÏαÏαγÏγή/ΠαÏÏη
-
+
Stop
ÎιακοÏή
-
+
Stop playing after current track
ÎιακοÏή αναÏαÏαγÏÎ³Î®Ï Î¼ÎµÏά Ïο ÏÏÎÏον κομμάÏι
-
+
Next track
ÎÏÏμενο κομμάÏι
-
+
Previous track
Î ÏοηγοÏμενο κομμάÏι
-
+
Increase volume
ÎÏξηÏη ÎνÏαÏηÏ
-
+
Decrease volume
ÎείÏÏη ÎνÏαÏηÏ
-
+
Mute
ΣίγαÏη
-
+
Seek forward
ÎναζήÏηÏη μÏÏοÏÏά
-
+
Seek backward
ÎναζήÏηÏη ÏίÏÏ
@@ -339,27 +428,37 @@
HomeView
-
+
Search
ÎναζήÏηÏη
-
+
Find videos and channels by keyword
-
+ ÎÏ
ÏεÏη βίνÏεο και κανάλιÏν μεÏÏ Î»ÎξειÏ-κλειδία
-
+
Browse
-
+ ΠεÏιηγηÏη
-
+
Browse videos by category
-
+ ΠεÏιηγηÏη βινÏεο ανα καÏηγοÏια
+
+
+
+ Subscriptions
+ ΣÏ
νδÏομÎÏ
-
+
+ Channel subscriptions
+ ΣÏ
νδÏομÎÏ ÎºÎ±Î½Î±Î»Î¹Î¿Ï
+
+
+
Make yourself comfortable
ÎολεÏ
ÏείÏε
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
ΣÏάλμα
@@ -375,426 +474,436 @@
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
Î Ïοβολή Ïε ÏλήÏη οθÏνη
-
+
Hide the playlist and the toolbar
ÎÏÏκÏÏ
Ïη ÏÎ·Ï Î»Î¯ÏÏÎ±Ï Î±Î½Î±ÏαÏαγÏÎ³Î®Ï ÎºÎ±Î¹ ÏÎ·Ï ÎµÏγαλειοθήκηÏ
-
+
Go to the YouTube video page and pause playback
ÎεÏάβαÏη ÏÏη Ïελίδα βίνÏεο ÏοÏ
YouTube και ÏαÏÏη αναÏαÏαγÏγήÏ
-
+
Copy the current video YouTube link to the clipboard
ÎνÏιγÏαÏή ÏοÏ
δεÏÎ¼Î¿Ï ÏοÏ
ÏÏÎÏονÏÎ¿Ï YouTube βίνÏεο ÏÏη μνήμη
-
+
Copy the current video stream URL to the clipboard
ÎνÏιγÏαÏή ÏοÏ
URL ÏÎ·Ï ÏÏÎÏοÏ
ÏÎ±Ï ÏÎ¿Î®Ï Î²Î¯Î½Ïεο ÏÏη μνήμη
-
+
Find other video parts hopefully in the right order
ÎÏÏεÏη ÏÏν Ï
ÏÏλοιÏÏν εÏιÏοδείÏν ÏοÏ
βίνÏεο, ελÏίζοÏ
με ÏÏη ÏÏÏÏή ÏειÏά
-
+
&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 the search history. Cannot be undone.
ÎαθαÏιÏμÏÏ ÏοÏ
ιÏÏοÏÎ¹ÎºÎ¿Ï Î±Î½Î±Î¶Î®ÏηÏηÏ. Îεν μÏοÏεί να γίνει εÏαναÏοÏά.
-
+
&Quit
Î&ξοδοÏ
-
+
Bye
Îεια
-
+
&Website
&ÎÏÏοÏÏÏοÏ
-
+
%1 on the Web
Το %1 ÏÏο διαδίκÏÏ
ο
-
+
Please support the continued development of %1
ΠαÏακαλοÏμε Ï
ÏοÏÏηÏίξÏε Ïην ÏÏ
νεÏÏμενη ανάÏÏÏ
ξη ÏοÏ
%1
-
+
&About
&ΣÏεÏικά
-
+
Info about %1
ΠληÏοÏοÏÎ¯ÎµÏ Î³Î¹Î± %1
-
+
Search
ÎναζήÏηÏη
-
+
Mute volume
ΣίγαÏη
-
-
+
+
&Downloads
&ÎήÏειÏ
-
+
Show details about video downloads
ÎμÏάνιÏη λεÏÏομεÏειÏν για ÏÎ¹Ï Î»Î®ÏÎµÎ¹Ï Î²Î¯Î½Ïεο
-
+
&Download
&ÎήÏη
-
+
Download the current video
ÎήÏη ÏοÏ
ÏÏÎÏονÏÎ¿Ï Î²Î¯Î½Ïεο
-
+
+ &Subscribe to Channel
+ ÎγγÏαÏή ÏÏο κανάλι
+
+
+
Share the current video using %1
Îοινή ÏÏήÏη ÏοÏ
ÏÏÎÏονÏÎ¿Ï Î²Î¯Î½Ïεο με Ïο %1
-
+
&Email
&Îλ. αλληλογÏαÏία
-
+
Email
Îλ. αλληλογÏαÏία
-
+
&Close
&ÎλείÏιμο
-
+
&Float on Top
&ÎιαÏήÏηÏη ÏÏην κοÏÏ
Ïή
-
+
&Stop After This Video
&ÎιακοÏή μεÏά αÏÏ Î±Ï
ÏÏ Ïο βίνÏεο
-
+
&Report an Issue...
&ÎναÏÎÏεÏε κάÏοιο ÏÏάλμα...
-
+
&Refine Search...
&ΣÏνθεÏη αναζήÏηÏη...
-
+
More...
-
+ ΠεÏιÏÏοÏεÏα...
-
+
&Related Videos
-
+ ΣÏεÏικα βινÏεο
-
+
Watch videos related to the current one
+ ΠαÏακολοÏ
θήÏÏε βίνÏεο ÏοÏ
ÏÏεÏίζονÏαι με Ïο ÏÏÎÏον
+
+
+
+ Open in &Browser...
-
+
&Application
&ÎÏαÏμογή
-
+
Buy %1...
ÎγοÏάÏÏε Ïο %1...
-
+
&Playback
&ÎναÏαÏαγÏγή
-
+
&Playlist
Î&ίÏÏα αναÏαÏαγÏγήÏ
-
+
&Video
Îίν&Ïεο
-
+
&View
&Î Ïοβολή
-
+
&Share
&Îοινή ÏÏήÏη
-
+
&Help
&Îοήθεια
-
+
Press %1 to raise the volume, %2 to lower it
ΠαÏήÏÏε %1 για να αÏ
ξήÏεÏε Ïην ÎνÏαÏη, %2 για να Ïην ÏαμηλÏÏεÏε
-
-
+
+
Opening %1
Îνοιγμα %1
-
+
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
Îναμονή ολοκλήÏÏÏÎ·Ï Î»Î®ÏηÏ
-
+
Leave &Full Screen
ÎÎ¾Î¿Î´Î¿Ï Î±ÏÏ &ÏλήÏη οθÏνη
-
+
%1 version %2 is now available.
Î ÎκδοÏη %2 ÏοÏ
%1 είναι διαθÎÏιμη.
-
+
Remind me later
Î¥ÏενθÏμιÏη αÏγÏÏεÏα
-
+
Update
ÎνημÎÏÏÏη
-
+
Error: %1
ΣÏάλμα: %1
-
+
P&revious
Î &ÏοηγοÏμενο
-
+
Go back to the previous track
ÎÏιÏÏÏοÏή ÏÏο ÏÏοηγοÏμενο κομμάÏι
-
+
&Compact Mode
&ΣÏ
μÏÎ±Î³Î®Ï ÎµÎ¼ÏάνιÏη
-
+
Open the &YouTube Page
Îνοιγμα ÏÏην ιÏÏοÏελίδα ÏοÏ
&YouTube
-
+
Copy the YouTube &Link
ÎνÏιγÏαÏή ÏοÏ
&δεÏÎ¼Î¿Ï YouTube
-
+
Copy the Video Stream &URL
ÎνÏιγÏαÏή ÏοÏ
&URL ÏÎ·Ï ÏÎ¿Î®Ï Î²Î¯Î½Ïεο
-
+
Find Video &Parts
ÎναζήÏηÏη ÏÏν &εÏιÏοδείÏν ÏοÏ
βίνÏεο
-
+
&Clear Recent Searches
&ÎαθαÏιÏμÏÏ ÏÏÏÏÏαÏÏν αναζηÏήÏεÏν
-
+
Make a &Donation
ÎάνÏε μια &δÏÏεά
-
+
&Manually Start Playing
ÎκκίνηÏη ÏÎ·Ï Î±Î½Î±ÏαÏαγÏÎ³Î®Ï &ÏειÏοκίνηÏα
-
+
Manually start playing videos
ÎκκίνηÏη αναÏαÏαγÏÎ³Î®Ï ÏÏν βίνÏεο ÏειÏοκίνηÏα
-
+
Choose your content location
-
+ ÎÏιλογή ÏÎ·Ï ÏοÏοθεÏÎ¯Î±Ï ÏοÏ
ÏεÏιεÏομÎνοÏ
ÏαÏ
-
+
&Play
Î&ναÏαÏαγÏγή
-
+
Resume playback
ΣÏ
νÎÏεια αναÏαÏαγÏγήÏ
-
+
Remaining time: %1
Î¥ÏολειÏÏÎ¼ÎµÎ½Î¿Ï ÏÏÏνοÏ: %1
-
+
Volume at %1%
ÎνÏαÏη ÏÏο %1%
-
+
Volume is muted
ΣίγαÏη
-
+
Volume is unmuted
Î ÎνÏαÏη αÏοκαÏαÏÏάθηκε
-
+
Maximum video definition set to %1
H μÎγιÏÏη ανάλÏ
Ïη βίνÏεο ÏÎθηκε Ïε %1
-
+
Your privacy is now safe
ΠιδιÏÏικÏÏηÏα ÏÎ±Ï ÎµÎ¯Î½Î±Î¹ ÏÏÏα αÏÏαλήÏ
-
+
Downloads complete
Îι λήÏÎµÎ¹Ï Î¿Î»Î¿ÎºÎ»Î·ÏÏθηκαν
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
ΤÏÏα μÏοÏείÏε να εÏικολλήÏεÏε Ïο δεÏÎ¼Ï ÏοÏ
YouTube Ïε κάÏοια άλλη εÏαÏμογή
-
+
You can now paste the video stream URL into another application
ΤÏÏα μÏοÏείÏε να εÏικολλήÏεÏε Ïο URL ÏÎ·Ï ÏÎ¿Î®Ï Î²Î¯Î½Ïεο Ïε κάÏοια άλλη εÏαÏμογή
-
+
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
ΣÏ
νÎÏεια
-
+
of
Used in video parts, as in '2 of 3'
αÏÏ
-
+
part
This is for video parts, as in 'Cool video - part 1'
μÎÏοÏ
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
εÏιÏÏδειο
-
+
Sent from %1
ÎÏοÏÏολή αÏÏ %1
-
+
+ Unsubscribe from %1
+ ÎιαγÏαÏή αÏÏ Ïο %1
+
+
+
+ Subscribe to %1
+ ÎγγÏαÏή ÏÏο %1
+
+
+
Get the full version
ÎÏοκÏήÏÏε Ïην ÏλήÏη ÎκδοÏη
-
+
Downloading %1
ÎήÏη %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
Î ÏοβολÎÏ %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
ÎÏανεκκίνηÏη λήÏηÏ
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
ÎναζήÏηÏη...
-
+
Show %1 More
ÎμÏάνιÏη %1 ακÏμα
-
+
No videos
ÎανÎνα βίνÏεο
-
+
No more videos
Îεν Ï
ÏάÏÏοÏ
ν άλλα βίνÏεο
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
ΤαξινÏμηÏη καÏά ...
-
+
Relevance
ΣÏεÏικÏÏηÏα
-
-
+
+
Date
ÎμεÏομηνία
-
+
View Count
ÎÏÎ¹Î¸Î¼Ï ÏÏοβολÏν
-
+
Rating
Îαθμολογία
-
+
Anytime
ÎÏοÏεδήÏοÏε
-
+
Today
ΣήμεÏα
-
+
7 Days
Îβδομάδα
-
+
30 Days
ÎήναÏ
-
+
Duration
ÎιάÏκεια
-
-
+
+
All
Îλα
-
+
Short
ÎικÏÏ
-
+
Medium
ÎÎÏÏιο
-
+
Long
Îεγάλο
-
+
Less than 4 minutes
ÎιγÏÏεÏο αÏÏ 4 λεÏÏά
-
+
Between 4 and 20 minutes
ÎεÏÎ±Î¾Ï 4 και 20 λεÏÏÏν
-
+
Longer than 20 minutes
ÎεγαλÏÏεÏο αÏÏ 20 λεÏÏά
-
+
Quality
ΠοιÏÏηÏα
-
+
High Definition
Î¥Ïηλή ανάλÏ
Ïη
-
+
720p or higher
720p είÏε ÏηλÏÏεÏα
-
+
Done
Îγινε
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Îγινε
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
ÎαλÏÏοÏίÏαÏε ÏÏο <a href='%1'>%2</a>,
-
+
Get the full version
ÎÏοκÏήÏÏε Ïην ÏλήÏη ÎκδοÏη
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
ΠληκÏÏολογήÏÏε
-
+
a keyword
μια λÎξη-κλειδί
-
+
a channel
Îνα κανάλι
-
+
to start watching videos.
για να αÏÏίÏεÏε να βλÎÏεÏε βίνÏεο.
-
+
Watch
ÎείÏε
-
+
Recent keywords
Î ÏÏÏÏαÏÎµÏ Î»ÎξειÏ-κλειδιά
-
+
Recent channels
Î ÏÏÏÏαÏα κανάλια
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&ΠίÏÏ
-
+
Forward to %1
-
+ Î ÏοÏθηÏη Ïε %1
-
+
Back to %1
-
+ ΠιÏÏ ÏÏο %1
SidebarWidget
-
+
Refine Search
ΣÏνθεÏη αναζήÏηÏη
-
+
Did you mean: %1
ÎήÏÏÏ ÎµÎ½Î½Î¿ÎµÎ¯Ïε: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ Τα Ïιο δημοÏιλή
-
- Featured
-
-
-
-
+
Most Shared
-
+ Πιο ÏÏÏÏÏαÏα
-
+
Most Discussed
-
+ Πιο ÏÏ
ζÏ
Ïημενα
-
+
Top Rated
-
+ ÎαλÏ
ÏεÏα βαθμολογημενα
+
+
+
+ All Time Popular
+ Σε Ïλα Ïα ÏÏονικά δημοÏιλή
Video
-
+
Cannot get video stream for %1
ÎδÏ
ναμία λήÏÎ·Ï ÏÎ·Ï ÏÎ¿Î®Ï Î²Î¯Î½Ïεο για %1
-
+
Network error: %1 for %2
ΣÏάλμα δικÏÏοÏ
: %1 για %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ ÎλγεÏια
-
+
Argentina
-
+ ÎÏγενÏινη
-
+
Australia
-
+ ÎÏ
ÏÏÏαλια
-
+
Belgium
-
+ Îελγιο
-
+
Brazil
-
+ ÎÏαζιλια
-
+
Canada
-
+ ÎαναδαÏ
-
+
Chile
-
+ Χιλη
-
+
Colombia
-
+ Îολομβια
-
+
Czech Republic
-
+ ΤÏεÏια
-
+
Egypt
-
+ ÎιγÏ
ÏÏοÏ
-
+
France
-
+ Îαλλια
-
+
Germany
-
+ ÎεÏμανια
-
+
Ghana
-
+ Îκανα
-
+
Greece
-
+ Îλλαδα
-
+
Hong Kong
-
+ Χονγκ Îονγκ
-
+
Hungary
-
+ ÎÏ
γγαÏια
-
+
India
-
+ Îνδια
-
+
Indonesia
-
+ ÎνδονηÏια
-
+
Ireland
-
+ ÎÏλανδια
-
+
Israel
-
+ ÎÏÏαηλ
-
+
Italy
-
+ ÎÏαλια
-
+
Japan
-
+ ÎαÏÏνια
-
+
Jordan
-
+ ÎοÏδανια
-
+
Kenya
-
+ Îενια
-
+
Malaysia
-
+ ÎαλαιÏια
-
+
Mexico
-
+ Îεξικο
-
+
Morocco
-
+ ÎαÏοκκο
-
+
Netherlands
-
+ Îλλανδια
-
+
New Zealand
-
+ Îεα Îηλανδια
-
+
Nigeria
-
+ ÎιγηÏια
-
+
Peru
-
+ ΠεÏοÏ
-
+
Philippines
-
+ ΦιλλιÏινεÏ
-
+
Poland
-
+ ΠολÏνια
-
+
Russia
-
+ ΡÏÏια
-
+
Saudi Arabia
-
+ ΣαοÏ
δικη ÎÏαβια
-
+
Singapore
-
+ ΣινγκαÏοÏ
Ïη
-
+
South Africa
-
+ ÎοÏια ÎÏÏικη
-
+
South Korea
-
+ ÎοÏια ÎοÏεα
-
+
Spain
-
+ ÎÏÏανια
-
+
Sweden
-
+ ΣοÏ
ηδια
-
+
Taiwan
-
+ Ταιβαν
-
+
Tunisia
-
+ ΤÏ
νιÏια
-
+
Turkey
-
+ ΤοÏ
Ïκια
-
+
Uganda
-
+ ÎÏ
γκανÏα
-
+
United Arab Emirates
-
+ ÎνÏμενα ÎÏαβικα ÎμιÏαÏα
-
+
United Kingdom
-
+ ÎνÏμενο ÎαÏιλειο
-
+
Yemen
-
+ Îεμενη
-
+
Worldwide
-
+ ΠαγκοÏμιÏÏ
\ No newline at end of file
diff --git a/locale/es.ts b/locale/es.ts
index 8ca6823..e41b87c 100644
--- a/locale/es.ts
+++ b/locale/es.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
¡Hay vida más allá del navegador!
-
+
Version %1
Versión %1
-
+
Licensed to: %1
- Licencia para: %1
+ Con licencia para: %1
-
+
%1 is Free Software but its development takes precious time.
%1 es software libre, pero su desarrollo supone un tiempo muy valioso.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Haga una <a href='%1'>donación</a> para ayudar a continuar el desarrollo de %2.
-
+
You may want to try my other apps as well:
Quizá también quiera probar mis otras aplicaciones:
-
+
%1, a YouTube music player
%1, un reproductor de música de YouTube
-
+
%1, a music player
%1, un reproductor de música
-
+
Translate %1 to your native language using %2
Traduzca %1 a su idioma natal usando %2
-
+
Icon designed by %1.
Icono diseñado por %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Publicado bajo la <a href='%1'>Licencia Pública General de GNU</a>
-
+
&Close
&Cerrar
-
+
About
Acerca de
-
+
What you always wanted to know about %1 and never dared to ask
Lo que siempre quiso saber acerca de %1 y nunca se atrevió a preguntar
@@ -134,6 +134,95 @@
Comprar licencia
+
+ ChannelAggregator
+
+
+ By %1
+ Por %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Todos los vÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos sin ver
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Marcar todos como vistos
+
+
+
+ Show Updated
+ Mostrar actualizados
+
+
+
+ Name
+ Nombre
+
+
+
+ Last Updated
+ Actualizado por última vez
+
+
+
+ Last Added
+ Añadido por última vez
+
+
+
+ Last Watched
+ Visto por última vez
+
+
+
+ Most Watched
+ Más vistos
+
+
+
+ Sort by
+ Ordenar por
+
+
+
+ All Videos
+ Todos los vÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos sin ver
+
+
+
+ There are no updated subscriptions at this time.
+ No hay suscripciones actualizadas en este momento.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ No se ha suscrito a ningún canal. Use el sÃmbolo de la estrella a los canales.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/s
-
+
KB/sec
KB/s
-
+
MB/sec
MB/s
-
+
seconds
segundos
-
+
minutes
minutos
-
+
%4 %5 remaining
Quedan %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Esta es solo la versión de prueba de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Solo puede descargar vÃdeos de duración menor que %1 minutos para que pueda probar la función de descarga.
-
+
Continue
Continuar
-
+
Get the full version
Obtener la versión completa
-
+
%1 downloaded in %2
%1 descargados en %2
-
+
Download finished
Descarga finalizada
-
+
%n Download(s)
%n Descarga %n Descargas
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Cambiar ubicaciónâ¦
-
+
Choose the download location
Elija la ubicación de las descargas
-
+
Download location changed.
Ubicación para descargas modificada.
-
+
Current downloads will still go in the previous location.
Las descargas en curso irán a la ubicación anterior.
-
+
Downloading to: %1
Descargando a: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Descargas
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Reproducir
-
+
Pause
Pausar
-
+
Play/Pause
Reproducir/pausar
-
+
Stop
Detener
-
+
Stop playing after current track
Detener la reproducción al terminar la pista actual
-
+
Next track
Pista siguiente
-
+
Previous track
Pista anterior
-
+
Increase volume
Aumentar volumen
-
+
Decrease volume
Disminuir volumen
-
+
Mute
Silenciar
-
+
Seek forward
Buscar hacia adelante
-
+
Seek backward
Buscar hacia atrás
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Buscar
-
+
Find videos and channels by keyword
Encontrar vÃdeos y canales por palabras clave
-
+
Browse
Examinar
-
+
Browse videos by category
Buscar videos por categorÃa
-
+
+ Subscriptions
+ Suscripciones
+
+
+
+ Channel subscriptions
+ Suscripciones a canales
+
+
+
Make yourself comfortable
Póngase cómodo
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Error
@@ -375,427 +474,437 @@
MainWindow
-
+
&Stop
&Detener
-
+
Stop playback and go back to the search view
Detener la reproducción y volver a la búsqueda
-
+
S&kip
&Omitir
-
+
Skip to the next video
Omitir vÃdeo y saltar al siguiente
-
-
+
+
&Pause
&Pausar
-
-
+
+
Pause playback
Pausar la reproducción
-
+
&Full Screen
Pantalla &completa
-
+
Go full screen
Ir a pantalla completa
-
+
Hide the playlist and the toolbar
Ocultar la lista de reproducción y la barra de herramientas
-
+
Go to the YouTube video page and pause playback
Ir a la página del vÃdeo en YouTube y pausar la reproducción
-
+
Copy the current video YouTube link to the clipboard
Copiar el enlace a YouTube del vÃdeo actual en el portapapeles
-
+
Copy the current video stream URL to the clipboard
Copiar la URL actual del flujo del vÃdeo al portapapeles
-
+
Find other video parts hopefully in the right order
Encontrar otras partes de vÃdeos, con suerte en el orden correcto
-
+
&Remove
&Eliminar
-
+
Remove the selected videos from the playlist
Quitar los vÃdeos seleccionados de la lista de reproducción
-
+
Move &Up
&Subir
-
+
Move up the selected videos in the playlist
Mover hacia arriba en la lista de reproducción los vÃdeos seleccionados
-
+
Move &Down
&Bajar
-
+
Move down the selected videos in the playlist
Mover hacia abajo en la lista de reproducción los vÃdeos seleccionados
-
+
Clear the search history. Cannot be undone.
Limpiar el historial de búsquedas. No se puede deshacer.
-
+
&Quit
&Salir
-
+
Bye
Hasta luego
-
+
&Website
Sitio &web
-
+
%1 on the Web
%1 en la web
-
+
Please support the continued development of %1
Apoye el desarrollo continuo de %1
-
+
&About
&Acerca de
-
+
Info about %1
Información acerca de %1
-
+
Search
Buscar
-
+
Mute volume
Silenciar
-
-
+
+
&Downloads
&Descargas
-
+
Show details about video downloads
Mostrar detalles sobre las descargas de vÃdeos
-
+
&Download
&Descargar
-
+
Download the current video
Descargar el vÃdeo actual
-
+
+ &Subscribe to Channel
+ &Suscribirse al canal
+
+
+
Share the current video using %1
Compartir el vÃdeo actual usando %1
-
+
&Email
&Correo-e
-
+
Email
Correo-e
-
+
&Close
&Cerrar
-
+
&Float on Top
&Flotar en la parte superior
-
+
&Stop After This Video
&Detener tras este vÃdeo
-
+
&Report an Issue...
&Informar de un problema...
-
+
&Refine Search...
&Refinar la búsqueda...
-
+
More...
Másâ¦
-
+
&Related Videos
VÃdeos &relacionados
-
+
Watch videos related to the current one
Ver videos relacionados con el actual
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplicación
-
+
Buy %1...
Comprar %1â¦
-
+
&Playback
&Reproducción
-
+
&Playlist
&Lista de reprod.
-
+
&Video
&VÃdeo
-
+
&View
&Ver
-
+
&Share
&Compartir
-
+
&Help
Ay&uda
-
+
Press %1 to raise the volume, %2 to lower it
Pulse %1 para aumentar el volumen o %2 para reducirlo
-
-
+
+
Opening %1
Abriendo %1
-
+
Do you want to exit %1 with a download in progress?
¿Quiere salir de %1 con una descarga en curso?
-
+
If you close %1 now, this download will be cancelled.
Si cierra %1 ahora, esta descarga será cancelada.
-
+
Close and cancel download
Cerrar y cancelar descarga
-
+
Wait for download to finish
Esperando a que finalice la descarga
-
+
Leave &Full Screen
&Salir de pantalla completa
-
+
%1 version %2 is now available.
%1 versión %2 ya está disponible.
-
+
Remind me later
Recordarme después
-
+
Update
Actualizar
-
+
Error: %1
Error: %1
-
+
P&revious
Ante&rior
-
+
Go back to the previous track
Regresar a la pista anterior
-
+
&Compact Mode
Modo &compacto
-
+
Open the &YouTube Page
Abrir la página de &YouTube
-
+
Copy the YouTube &Link
Copiar el en&lace de YouTube
-
+
Copy the Video Stream &URL
- Copiar la &URL de flujo del vÃdeo
+ Copiar el &URL de flujo del vÃdeo
-
+
Find Video &Parts
Encontrar &partes de vÃdeos
-
+
&Clear Recent Searches
&Limpiar búsquedas recientes
-
+
Make a &Donation
Hacer una &donación
-
+
&Manually Start Playing
Comenzar la reproducción &manualmente
-
+
Manually start playing videos
Comenzar la reproducción de vÃdeos manualmente
-
+
Choose your content location
Elija su ubicación para el contenido
-
+
&Play
&Reproducir
-
+
Resume playback
Continuar la reproducción
-
+
Remaining time: %1
Tiempo restante: %1
-
+
Volume at %1%
Volumen al %1%
-
+
Volume is muted
El volumen está silenciado
-
+
Volume is unmuted
El volumen no está silenciado
-
+
Maximum video definition set to %1
Resolución máxima de video establecida en %1
-
+
Your privacy is now safe
Su privacidad ahora está asegurada
-
+
Downloads complete
Descargas completas
@@ -803,65 +912,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Ahora puede pegar el enlace de YouTube en otra aplicación
-
+
You can now paste the video stream URL into another application
Ahora puede pegar la URL del flujo de vÃdeo en otra aplicación
-
+
The link will be valid only for a limited time.
El enlace es válido solo por un tiempo limitado.
-
+
This is just the demo version of %1.
Esto es solo la versión de prueba de %1.
-
+
It allows you to test the application and see if it works for you.
Le permite probar la aplicación y ver si le funciona.
-
+
Continue
Continuar
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodio
-
+
Sent from %1
Enviado desde %1
-
+
+ Unsubscribe from %1
+ Cancelar suscripción a %1
+
+
+
+ Subscribe to %1
+ Suscribirse a %1
+
+
+
Get the full version
Obtener la versión completa
-
+
Downloading %1
Descargando %1
@@ -910,52 +1029,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 reproducciones
-
+
%1 of %2 (%3) â %4
%1 de %2 (%3) â %4
-
+
Preparing
Preparando
-
+
Failed
Falló
-
+
Completed
Completado
-
+
Stopped
Detenido
-
+
Stop downloading
Detener la descarga
-
+
Show in %1
Mostrar en %1
-
+
Open parent folder
Abrir carpeta contenedora
-
+
Restart downloading
Reiniciar la descarga
@@ -963,22 +1082,22 @@
PlaylistModel
-
+
Searching...
Buscandoâ¦
-
+
Show %1 More
Mostrar %1 más
-
+
No videos
No hay vÃdeos
-
+
No more videos
No hay más vÃdeos
@@ -986,109 +1105,109 @@
RefineSearchWidget
-
+
Sort by
Ordenar por
-
+
Relevance
Relevancia
-
-
+
+
Date
Fecha
-
+
View Count
Número de vistas
-
+
Rating
Valoración
-
+
Anytime
Cualquier momento
-
+
Today
Hoy
-
+
7 Days
7 dÃas
-
+
30 Days
30 dÃas
-
+
Duration
Duración
-
-
+
+
All
Todo
-
+
Short
Corto
-
+
Medium
Medio
-
+
Long
Largo
-
+
Less than 4 minutes
Menos de 4 minutos
-
+
Between 4 and 20 minutes
Entre 4 y 20 minutos
-
+
Longer than 20 minutes
Mayor a 20 minutos
-
+
Quality
Calidad
-
+
High Definition
Alta definición
-
+
720p or higher
720p o mayor
-
+
Done
Hecho
@@ -1096,7 +1215,7 @@
RegionsView
-
+
Done
Hecho
@@ -1112,48 +1231,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Bienvenido a <a href='%1'>%2</a>,
-
+
Get the full version
Obtener la versión completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Escriba
-
+
a keyword
una palabra clave
-
+
a channel
un canal
-
+
to start watching videos.
para empezar a ver vÃdeos.
-
+
Watch
Ver
-
+
Recent keywords
Palabras clave recientes
-
+
Recent channels
Canales recientes
@@ -1161,18 +1280,18 @@
SidebarHeader
-
-
+
+
&Back
&Atrás
-
+
Forward to %1
Reenviar a %1
-
+
Back to %1
Regresar a %1
@@ -1180,12 +1299,12 @@
SidebarWidget
-
+
Refine Search
Refinar la búsqueda
-
+
Did you mean: %1
Quizá quiso decir: %1
@@ -1193,40 +1312,40 @@
StandardFeedsView
-
+
Most Popular
Más populares
-
- Featured
- Destacados
-
-
-
+
Most Shared
Más compartidos
-
+
Most Discussed
Más discutidos
-
+
Top Rated
Mejor valorados
+
+
+ All Time Popular
+ Populares siempre
+
Video
-
+
Cannot get video stream for %1
No se puede obtener el flujo de vÃdeo para %1
-
+
Network error: %1 for %2
Error de red: %1 por %2
@@ -1234,242 +1353,242 @@
YTRegions
-
+
Algeria
Argelia
-
+
Argentina
Argentina
-
+
Australia
Australia
-
+
Belgium
Bélgica
-
+
Brazil
Brasil
-
+
Canada
Canadá
-
+
Chile
Chile
-
+
Colombia
Colombia
-
+
Czech Republic
República Checa
-
+
Egypt
Egipto
-
+
France
Francia
-
+
Germany
Alemania
-
+
Ghana
Ghana
-
+
Greece
Grecia
-
+
Hong Kong
Hong Kong
-
+
Hungary
HungrÃa
-
+
India
India
-
+
Indonesia
Indonesia
-
+
Ireland
Irlanda
-
+
Israel
Israel
-
+
Italy
Italia
-
+
Japan
Japón
-
+
Jordan
Jordania
-
+
Kenya
Kenia
-
+
Malaysia
Malasia
-
+
Mexico
México
-
+
Morocco
Marruecos
-
+
Netherlands
Holanda
-
+
New Zealand
Nueva Zelanda
-
+
Nigeria
Nigeria
-
+
Peru
Perú
-
+
Philippines
Filipinas
-
+
Poland
Polonia
-
+
Russia
Rusia
-
+
Saudi Arabia
Arabia Saudita
-
+
Singapore
Singapur
-
+
South Africa
Sudáfrica
-
+
South Korea
Corea del Sur
-
+
Spain
España
-
+
Sweden
Suecia
-
+
Taiwan
Taiwán
-
+
Tunisia
Túnez
-
+
Turkey
TurquÃa
-
+
Uganda
Uganda
-
+
United Arab Emirates
Emiratos Ãrabes Unidos
-
+
United Kingdom
Reino Unido
-
+
Yemen
Yemen
-
+
Worldwide
Todo el mundo
diff --git a/locale/es_AR.ts b/locale/es_AR.ts
index ad1dae2..819ffd0 100644
--- a/locale/es_AR.ts
+++ b/locale/es_AR.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Hay vida más allá del navegador!
-
+
Version %1
Versión %1
-
+
Licensed to: %1
-
+ Licencia para: %1
-
+
%1 is Free Software but its development takes precious time.
- %1 es Software Libre pero su desarrollo lleva tiempo.
+ %1 es Software Libre pero su desarrollo lleva precioso tiempo.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
- Por favor, <a href='%1'>hacé una donación</a> para apoyar el desarrollo de %2.
+ Por favor, <a href='%1'>dóna</a> para apoyar el desarrollo continuo de %2.
-
+
You may want to try my other apps as well:
- Talvez querás probar mis otras aplicaciones como:
+ Tal vez querrás probar mis otras aplicaciones como:
-
+
%1, a YouTube music player
%1, un reproductor de música de YouTube
-
+
%1, a music player
%1, un reproductor de música
-
+
Translate %1 to your native language using %2
- Traducà %1 a tu idioma natal usando %2
+ Traduce %1 a tu idioma natal usando %2
-
+
Icon designed by %1.
Iconos diseñados por %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Desarrollado bajo la <a href='%1'>Licencia Pública General de GNU</a>
-
+
&Close
&Cerrar
-
+
About
Acerca de
-
+
What you always wanted to know about %1 and never dared to ask
Lo que siempre quisiste saber de %1 y nunca te animaste a preguntar
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Introduzca los detalles de la licencia
&Email:
-
+ Correo &electrónico:
&Code:
-
+ &Código:
@@ -106,12 +106,12 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ La versión completa te permite descargar vÃdeos más largos que %1 minutos y mirar vÃdeos sin interrupciones.
Without a license, the application will expire in %1 days.
-
+ Sin una licencia, la aplicación caducará en %1 dÃas.
@@ -126,11 +126,100 @@
Enter License
-
+ Introducir licencia
Buy License
+ Comprar licencia
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Sortear por
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sec
-
+
KB/sec
KB/sec
-
+
MB/sec
MB/sec
-
+
seconds
segundos
-
+
minutes
minutos
-
+
%4 %5 remaining
%4 %5 restante(s)
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Esta es sólo una versión de demostración de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Sólo se pueden bajar videos de menos de %1 minutos, para probar la funcionalidad de descarga.
-
+
Continue
Continuar
-
+
Get the full version
- Conseguà la versión completa
+ Consigue la versión completa
-
+
%1 downloaded in %2
%1 descargado en %2
-
+
Download finished
Descarga finalizada
-
+
%n Download(s)
%n Descarga(s) %n Descarga(s)
@@ -231,36 +320,36 @@
DownloadSettings
-
+
Change location...
Cambiar destino...
-
+
Choose the download location
Elegir el destino de la descarga
-
+
Download location changed.
Destino de la descarga cambiado.
-
+
Current downloads will still go in the previous location.
Las descargas en curso van a seguir bajándose al destino anterior.
-
+
Downloading to: %1
- Bajando a: %1
+ Bajando al: %1
DownloadView
-
-
+
+
Downloads
Descargas
@@ -270,68 +359,68 @@
Downloading update...
-
+ Descargando actualizaciónâ¦
GlobalShortcuts
-
+
Play
Reproducir
-
+
Pause
Pausa
-
+
Play/Pause
Reproducir/Pausa
-
+
Stop
Detener
-
+
Stop playing after current track
Detener luego de la pista actual
-
+
Next track
Pista siguiente
-
+
Previous track
Pista previa
-
+
Increase volume
Subir volumen
-
+
Decrease volume
Bajar volumen
-
+
Mute
Mudo
-
+
Seek forward
Avanzar rápido
-
+
Seek backward
Retroceder rápido
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Buscar
-
+
Find videos and channels by keyword
-
+ Encuentra vÃdeos por canales o por palabras clave
-
+
Browse
-
+ Navegar
-
+
Browse videos by category
+ Navega en los vÃdeos por categorÃa
+
+
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
-
+
Make yourself comfortable
Personalizar
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Error
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Detener
-
+
Stop playback and go back to the search view
- Detener y volver a la búsqueda
+ Detener la reproducción y volver a la vista de búsqueda
-
+
S&kip
&Saltar
-
+
Skip to the next video
- Siguiente video
+ Saltar al siguiente video
-
-
+
+
&Pause
&Pausar
-
-
+
+
Pause playback
Pausar
-
+
&Full Screen
&Pantalla completa
-
+
Go full screen
Ir a pantalla completa
-
+
Hide the playlist and the toolbar
Esconder la lista de reproducción y la barra de herramientas
-
+
Go to the YouTube video page and pause playback
Ir al video en YouTube y pausar la reproducción
-
+
Copy the current video YouTube link to the clipboard
- Copiar el enlace de YouTube del video al portapapeles
+ Copiar el enlace de YouTube del video actual al portapapeles
-
+
Copy the current video stream URL to the clipboard
- Copiar la &URL del stream del video al portapapeles
+ Copiar la URL del stream del video al portapapeles
-
+
Find other video parts hopefully in the right order
- Encontrá las otras partes del video con suerte en el orden correcto
+ Encuentra las otras partes del video con suerte en el orden correcto
-
+
&Remove
&Borrar
-
+
Remove the selected videos from the playlist
Borrar los videos seleccionados de la lista
-
+
Move &Up
Mover hacia &arriba
-
+
Move up the selected videos in the playlist
Mover hacia arriba los videos seleccionados
-
+
Move &Down
Mover hacia &abajo
-
+
Move down the selected videos in the playlist
Mover hacia abajo los videos seleccionados
-
+
Clear the search history. Cannot be undone.
Eliminar el historial de búsqueda. No se puede deshacer.
-
+
&Quit
&Salir
-
+
Bye
- Chau
+ Adiós
-
+
&Website
&Sitio web
-
+
%1 on the Web
%1 en la Web
-
+
Please support the continued development of %1
- Apoyar el desarrollo de %1
+ Por favor apoya el desarrollo continuo de %1
-
+
&About
&Acerca de
-
+
Info about %1
Información sobre %1
-
+
Search
Buscar
-
+
Mute volume
Silenciar volumen
-
-
+
+
&Downloads
&Descargas
-
+
Show details about video downloads
Mostrar detalles sobre la descarga de videos
-
+
&Download
&Bajar video
-
+
Download the current video
Bajar el video actual
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
- Compartà el video actual usando %1
+ Compartà el vÃdeo actual usando %1
-
+
&Email
&Correo
-
+
Email
Correo
-
+
&Close
&Cerrar
-
+
&Float on Top
&Siempre Visible
-
+
&Stop After This Video
&Finalizar Después de este Video
-
+
&Report an Issue...
&Reportar un inconveniente
-
+
&Refine Search...
&Refinar Búsqueda
-
+
More...
-
+ Más...
-
+
&Related Videos
-
+ &VÃdeos relacionados
-
+
Watch videos related to the current one
+ Mirar vÃdeos relacionados al vÃdeo actual
+
+
+
+ Open in &Browser...
-
+
&Application
&Programa
-
+
Buy %1...
Comprar %1...
-
+
&Playback
&Reproducción
-
+
&Playlist
&Lista de reproducción
-
+
&Video
&Video
-
+
&View
&Ver
-
+
&Share
&Compartir
-
+
&Help
&Ayuda
-
+
Press %1 to raise the volume, %2 to lower it
- Con %1 subÃs el volumen, con %2 lo bajás
+ Con %1 para subir el volumen, con %2 para bajarlo
-
-
+
+
Opening %1
Abriendo %1
-
+
Do you want to exit %1 with a download in progress?
- Seguro que querés salir de %1 con una descarga en progreso?
+ Seguro que quieres salir de %1 con una descarga en progreso?
-
+
If you close %1 now, this download will be cancelled.
- Si cerrás %1 ahora, la descarga se va a cancelar.
+ Si cierras %1 ahora, la descarga se va a cancelar.
-
+
Close and cancel download
Cerrar y cancelar descarga
-
+
Wait for download to finish
Esperar a que termine la descarga
-
+
Leave &Full Screen
Salir de &Pantalla Completa
-
+
%1 version %2 is now available.
%1 versión %2 está ahora disponible
-
+
Remind me later
Recordármelo después
-
+
Update
Actualizar
-
+
Error: %1
Error: %1
-
+
P&revious
- A6nterior
+ Anterior
-
+
Go back to the previous track
Volver a la pista previa
-
+
&Compact Mode
&Modo Compacto
-
+
Open the &YouTube Page
Abrir la página de &YouTube
-
+
Copy the YouTube &Link
Copiar el enlace de &YouTube
-
+
Copy the Video Stream &URL
Copiar Video &URL
-
+
Find Video &Parts
Encontrar Video &Partes
-
+
&Clear Recent Searches
&Borrar las búsquedas recientes
-
+
Make a &Donation
Hacer una &donación
-
+
&Manually Start Playing
&Iniciar Reproducción Manualmente
-
+
Manually start playing videos
Empezar a reproducir videos manualmente
-
+
Choose your content location
-
+ Selecciona la localidad de tu contenido
-
+
&Play
&Reproducir
-
+
Resume playback
Continuar reproducción
-
+
Remaining time: %1
Tiempo restante: %1
-
+
Volume at %1%
Volumen al %1%
-
+
Volume is muted
Volumen silenciado
-
+
Volume is unmuted
Volumen activo
-
+
Maximum video definition set to %1
- Definición máxima de video seteada en %1
+ Definición máxima de video ajustada en %1
-
+
Your privacy is now safe
Tu privacidad ahora está segura
-
+
Downloads complete
Descarga completa
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
- Ahora podés pegar el enlace de YouTube en otra aplicación
+ Ahora puedes pegar el enlace de YouTube en otra aplicación
-
+
You can now paste the video stream URL into another application
Ahora podés pegar la URL del stream en otra aplicación
-
+
The link will be valid only for a limited time.
- El enalce va a ser válido sólo por un tiempo limitado.
+ El enlace va a ser válido sólo por un tiempo limitado.
-
+
This is just the demo version of %1.
Esta es sólo la versión de demostración de %1.
-
+
It allows you to test the application and see if it works for you.
Te permite probar la aplicación y ver si te funciona.
-
+
Continue
Continuar
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodio
-
+
Sent from %1
Enviado desde %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Conseguir la versión completa
-
+
Downloading %1
Descargando %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ Está disponible una nueva versión de %1.
%1 %2 is now available. You have %3.
-
+ %1 %2 está disponible ahora. Ud. tiene %3.
Would you like to download it now?
-
+ ¿Quiere descargarla ahora?
Skip This Version
-
+ Omitir esta versión
Remind Me Later
-
+ Recordarme después
Install Update
-
+ Instalar actualización
@@ -903,191 +1022,191 @@
Paste
-
+ Pegar
PlaylistItemDelegate
-
+
%1 views
%1 visitas
-
+
%1 of %2 (%3) â %4
-
+ %1 of %2 (%3) â %4
-
+
Preparing
-
+ Preparando
-
+
Failed
-
+ Falló
-
+
Completed
-
+ Completado
-
+
Stopped
-
+ Detenido
-
+
Stop downloading
-
+ Detener descarga
-
+
Show in %1
-
+ Mostrar en %1
-
+
Open parent folder
-
+ Abrir carpeta relacionada
-
+
Restart downloading
-
+ Reiniciar descarga
PlaylistModel
-
+
Searching...
Buscando...
-
+
Show %1 More
Mostrar %1 más
-
+
No videos
No hay videos
-
+
No more videos
-
+ No hay más vÃdeos
RefineSearchWidget
-
+
Sort by
Sortear por
-
+
Relevance
Relevancia
-
-
+
+
Date
Fecha
-
+
View Count
Contador de Visitas
-
+
Rating
Calificación
-
+
Anytime
Histórico
-
+
Today
Hoy
-
+
7 Days
7 DÃas
-
+
30 Days
30 DÃas
-
+
Duration
Duración
-
-
+
+
All
Todos
-
+
Short
Cortos
-
+
Medium
Medianos
-
+
Long
Largos
-
+
Less than 4 minutes
Menores que 4 minutos
-
+
Between 4 and 20 minutes
Entre 4 y 20 minutos
-
+
Longer than 20 minutes
Mayores a 20 minutos
-
+
Quality
Calidad
-
+
High Definition
Alta Definición
-
+
720p or higher
720p o mayor
-
+
Done
Finalizado
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Hecho
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Bienvenido a <a href='%1'>%2</a>,
-
+
Get the full version
Conseguir la versión completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Escribir
-
+
a keyword
una palabra clave
-
+
a channel
un canal
-
+
to start watching videos.
para empezar a ver videos.
-
+
Watch
Ver
-
+
Recent keywords
Búsquedas recientes
-
+
Recent channels
Canales recientes
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Atrás
-
+
Forward to %1
-
+ Avanzar a %1
-
+
Back to %1
-
+ Retroceder a %1
SidebarWidget
-
+
Refine Search
Refinar Búsqueda
-
+
Did you mean: %1
Quiso decir: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ Más populares
-
- Featured
-
-
-
-
+
Most Shared
-
+ Más compartidos
-
+
Most Discussed
-
+ Más discutidos
-
+
Top Rated
+ Mejor calificados
+
+
+
+ All Time Popular
Video
-
+
Cannot get video stream for %1
No puedo obtener el stream de video de %1
-
+
Network error: %1 for %2
Error de conexión: %1 para %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algeria
-
+
Argentina
-
+ Argentina
-
+
Australia
-
+ Australia
-
+
Belgium
-
+ Bélgica
-
+
Brazil
-
+ Brasil
-
+
Canada
-
+ Canada
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Colombia
-
+
Czech Republic
-
+ República Checa
-
+
Egypt
-
+ Egipto
-
+
France
-
+ Francia
-
+
Germany
-
+ Alemania
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Grecia
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ HungrÃa
-
+
India
-
+ India
-
+
Indonesia
-
+ Indonesia
-
+
Ireland
-
+ Irlanda
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Italia
-
+
Japan
-
+ Japón
-
+
Jordan
-
+ Jordan
-
+
Kenya
-
+ Kenya
-
+
Malaysia
-
+ Malasia
-
+
Mexico
-
+ México
-
+
Morocco
-
+ Marruecos
-
+
Netherlands
-
+ PaÃses Bajos
-
+
New Zealand
-
+ Nueva Zelanda
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Perú
-
+
Philippines
-
+ Filipinas
-
+
Poland
-
+ Polonia
-
+
Russia
-
+ Rusia
-
+
Saudi Arabia
-
+ Arabia Saudita
-
+
Singapore
-
+ Singapur
-
+
South Africa
-
+ Sud Africa
-
+
South Korea
-
+ Sud Corea
-
+
Spain
-
+ España
-
+
Sweden
-
+ Suecia
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ Túnez
-
+
Turkey
-
+ TurquÃa
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Emiratos Arabes Unidos
-
+
United Kingdom
-
+ Reino Unido
-
+
Yemen
-
+ Yemen
-
+
Worldwide
-
+ Todo el mundo
\ No newline at end of file
diff --git a/locale/es_ES.ts b/locale/es_ES.ts
index 9278f7d..7d67e71 100644
--- a/locale/es_ES.ts
+++ b/locale/es_ES.ts
@@ -3,74 +3,74 @@
AboutView
-
+
There's life outside the browser!
¡Hay vida fuera del navegador!
-
+
Version %1
Versión %1
-
+
Licensed to: %1
-
+ Con licencia para %1
-
+
%1 is Free Software but its development takes precious time.
- %1 es Software Libre pero su desarrollo lleva mucho tiempo.
+ %1 es un programa de software libre, pero su desarrollo lleva mucho tiempo.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Por favor, considere <a href='%1'>donar</a> para apoyar el desarrollo de %2.
-
+
You may want to try my other apps as well:
También puede probar mis otras aplicaciones:
-
+
%1, a YouTube music player
- %1, reproductor de música de YouTube
+ %1, un reproductor de música de YouTube
-
+
%1, a music player
%1, un reproductor de música
-
+
Translate %1 to your native language using %2
- Traduce %1 a tu idioma utilizando %2
+ Traducir %1 a tu idioma utilizando %2
-
+
Icon designed by %1.
Icono diseñado por %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Publicado bajo la <a href='%1'>Licencia Pública General GNU</a>
-
+
&Close
&Cerrar
-
+
About
Acerca de...
-
+
What you always wanted to know about %1 and never dared to ask
- Lo que siempre quiso saber sobre el %1 y nunca se atrevió a preguntar
+ Lo que siempre quiso saber sobre %1 y nunca se atrevió a preguntar
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Introducir detalles de la licencia
&Email:
-
+ Corr&eo electrónico:
&Code:
-
+ &Código:
@@ -101,22 +101,22 @@
This demo has expired.
- Esta versión de prueba ha caducado.
+ La versión de prueba ha caducado.
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ La versión completa le permite descargar vÃdeos superiores a %1 minutos y ver vÃdeos sin interrupciones.
Without a license, the application will expire in %1 days.
-
+ La aplicación caducará en %1 dÃas si no tiene una licencia.
By purchasing the full version, you will also support the hard work I put into creating %1.
- Al comprar la versión completa, también apoya el trabajo empleado en la creación de %1.
+ Al comprar la versión completa, estará apoyando el gran trabajo empleado en la creación de %1.
@@ -126,11 +126,100 @@
Enter License
-
+ Introducir licencia
Buy License
+ Comprar licencia
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Sortear por
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/seg
-
+
KB/sec
- KB/sec
+ KB/seg
-
+
MB/sec
MB/seg
-
+
seconds
segundos
-
+
minutes
minutos
-
+
%4 %5 remaining
%4 %5 restante
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
- Esta es sólo la versión demo de %1.
+ Esta es la versión de prueba de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
- Sólo se pueden descargar vÃdeos más cortos de %1 minutos, asà puede probar la funcionalidad de descarga.
+ Sólo se pueden descargar vÃdeos inferiores a %1 minutos. Asà podrá probar la funcionalidad de descarga.
-
+
Continue
Continuar
-
+
Get the full version
Obtener la versión completa
-
+
%1 downloaded in %2
%1 descargado en %2
-
+
Download finished
Descarga finalizada
-
+
%n Download(s)
%n Descarga(s) %n Descarga(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Cambiar ubicación...
-
+
Choose the download location
Eligir la ubicación de descarga
-
+
Download location changed.
Ubicación de descarga cambiada.
-
+
Current downloads will still go in the previous location.
- Las descargan actuales irán a parar a la anterior ubicación.
+ Las descargan actuales se guardarán en la ubicación anterior.
-
+
Downloading to: %1
Descargado: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Descargas
@@ -270,104 +359,114 @@
Downloading update...
-
+ Descargando actualización...
GlobalShortcuts
-
+
Play
Reproducir
-
+
Pause
Pausar
-
+
Play/Pause
Reproducir/Pausar
-
+
Stop
- Parar
+ Detener
-
+
Stop playing after current track
- Parar reproducción después esta pista
+ Detener reproducción después esta pista
-
+
Next track
Siguiente pista
-
+
Previous track
Pista anterior
-
+
Increase volume
Subir volumen
-
+
Decrease volume
Bajar volumen
-
+
Mute
Silenciar
-
+
Seek forward
- Buscar adelante
+ Buscar hacia adelante
-
+
Seek backward
- Buscar atrás
+ Buscar hacia atrás
HomeView
-
+
Search
Buscar
-
+
Find videos and channels by keyword
-
+ Buscar vÃdeos y canales mediante palabra clave
-
+
Browse
-
+ Examinar
-
+
Browse videos by category
+ Examinar vÃdeos por categorÃa
+
+
+
+ Subscriptions
-
- Make yourself comfortable
+
+ Channel subscriptions
+
+
+ Make yourself comfortable
+ Siéntete como en casa
+
LoadingWidget
-
+
Error
Error
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
- &Parar
+ &Detener
-
+
Stop playback and go back to the search view
- Parar reproducción y volver a la vista de búsqueda
+ Detener reproducción y volver a la vista de búsqueda
-
+
S&kip
Sa<ar
-
+
Skip to the next video
Saltar al siguiente vÃdeo
-
-
+
+
&Pause
&Pausar
-
-
+
+
Pause playback
Pausar reproducción
-
+
&Full Screen
&Pantalla completa
-
+
Go full screen
Ir a pantalla completa
-
+
Hide the playlist and the toolbar
Ocultar la lista de reproducción y la barra de herramientas
-
+
Go to the YouTube video page and pause playback
Ir a la página del vÃdeo en YouTube y pausar la reproducción
-
+
Copy the current video YouTube link to the clipboard
Copiar al portapapeles el enlace del vÃdeo de YouTube actual
-
+
Copy the current video stream URL to the clipboard
- Copiar al portapapeles la &URL del stream de vÃdeo actual
+ Copiar al portapapeles la &URL del flujo de vÃdeo actual
-
+
Find other video parts hopefully in the right order
- Encontrar otras partes de video, con suerte, en el orden correcto
+ Buscar otras partes del vÃdeo, con suerte, en el orden correcto
-
+
&Remove
Elimina&r
-
+
Remove the selected videos from the playlist
Eliminar los vÃdeos seleccionados de la lista de reproducción
-
+
Move &Up
S&ubir
-
+
Move up the selected videos in the playlist
Subir en la lista de reproducción los vÃdeos seleccionados
-
+
Move &Down
&Bajar
-
+
Move down the selected videos in the playlist
Bajar en la lista de reproducción los vÃdeos seleccionados
-
+
Clear the search history. Cannot be undone.
Limpiar el historial de búsquedas. Esta acción no puede deshacerse.
-
+
&Quit
&Salir
-
+
Bye
Adiós
-
+
&Website
Sitio &Web
-
+
%1 on the Web
%1 en la Web
-
+
Please support the continued development of %1
- Por favor, apoye el continuo desarrollo de %1
+ Apoye el desarrollo continuo de %1
-
+
&About
- &Acerca de
+ &Acerca de...
-
+
Info about %1
- Información sobre %1
+ Información acerca de %1
-
+
Search
- Búsqueda
+ Buscar
-
+
Mute volume
Silenciar volumen
-
-
+
+
&Downloads
&Descargas
-
+
Show details about video downloads
- Muestra detalles sobre las descargas de vÃdeos
+ Mostrar detalles sobre las descargas de vÃdeos
-
+
&Download
&Descargar
-
+
Download the current video
- Descarga el vÃdeo actual
+ Descargar el vÃdeo actual
+
+
+
+ &Subscribe to Channel
+
-
+
Share the current video using %1
Compartir el vÃdeo actual usando %1
-
+
&Email
&Correo electrónico
-
+
Email
Correo electrónico
-
+
&Close
&Cerrar
-
+
&Float on Top
&Siempre Visible
-
+
&Stop After This Video
- &Pausar Después De Este Video
+ &Detener después de este vÃdeo
-
+
&Report an Issue...
- &Reporte un inconveniente...
+ &Informar de un problema...
-
+
&Refine Search...
- &Refinar Búsqueda...
+ &Refinar búsqueda...
-
+
More...
-
+ Más...
-
+
&Related Videos
-
+ VÃdeos &relacionados
-
+
Watch videos related to the current one
+ Ver vÃdeos relacionados con el actual
+
+
+
+ Open in &Browser...
-
+
&Application
&Aplicación
-
+
Buy %1...
Comprar %1...
-
+
&Playback
&Reproducción
-
+
&Playlist
Lista de Re&producción
-
+
&Video
&VÃdeo
-
+
&View
&Ver
-
+
&Share
Com&partir
-
+
&Help
&Ayuda
-
+
Press %1 to raise the volume, %2 to lower it
- Presiona %1 para subir el volumen, %2 para bajarlo
+ Pulse %1 para subir el volumen y %2 para bajarlo
-
-
+
+
Opening %1
Abriendo %1
-
+
Do you want to exit %1 with a download in progress?
¿Deseas salir de %1 con una descarga activa?
-
+
If you close %1 now, this download will be cancelled.
Si cierras %1, esta descarga se cancelará.
-
+
Close and cancel download
Cerrar y cancelar la descarga
-
+
Wait for download to finish
Esperar la finalización de la descarga
-
+
Leave &Full Screen
Salir de pan&talla completa
-
+
%1 version %2 is now available.
- %1 versión %2 ya está disponible.
+ La versión %2 de %1 ya está disponible.
-
+
Remind me later
Recordarme después
-
+
Update
Actualizar
-
+
Error: %1
Error: %1
-
+
P&revious
- P&revio
+ Ante&rior
-
+
Go back to the previous track
Vuelve a la vista anterior
-
+
&Compact Mode
- &Modo Compacto
+ Modo &compacto
-
+
Open the &YouTube Page
Abrir la página de &YouTube
-
+
Copy the YouTube &Link
Copiar el &enlace de YouTube
-
+
Copy the Video Stream &URL
- Copiar Video En LÃnea &URL
+ Copiar &URL del flujo de vÃdeo
-
+
Find Video &Parts
- Encontrar Videos &Partes
+ Buscar &partes del vÃdeo
-
+
&Clear Recent Searches
&Limpiar búsquedas recientes
-
+
Make a &Donation
Hacer una &donación
-
+
&Manually Start Playing
- &Iniciar Reproducción Manual
+ &Iniciar reproducción manual
-
+
Manually start playing videos
- Empezar a reproducir videos manualmente
+ Empezar a reproducir vÃdeos manualmente
-
+
Choose your content location
-
+ Elegir la ubicación del contenido
-
+
&Play
Re&producir
-
+
Resume playback
- Reiniciar la reproducción
+ Reanudar la reproducción
-
+
Remaining time: %1
Tiempo restante: %1
-
+
Volume at %1%
Volumen al %1%
-
+
Volume is muted
- El volumen está desactivado
+ El volumen está silenciado
-
+
Volume is unmuted
- El volumen está activado
+ El volumen no está silenciado
-
+
Maximum video definition set to %1
- Definición Máxima de Video es %1
+ La definición máxima de vÃdeo es %1
-
+
Your privacy is now safe
Su privacidad ahora es segura
-
+
Downloads complete
Descargas completadas
@@ -802,67 +911,77 @@
MediaView
-
+
You can now paste the YouTube link into another application
Ahora puedes pegar el enlace de Youtube en otra aplicación
-
+
You can now paste the video stream URL into another application
- Ahora puedes pegar la URL del stream de vÃdeo en otra aplicación
+ Ahora puedes pegar la URL del flujo de vÃdeo en otra aplicación
-
+
The link will be valid only for a limited time.
- EL enlace será válido sólo por un plazo de tiempo limitado.
+ El enlace será válido sólo por un plazo de tiempo limitado.
-
+
This is just the demo version of %1.
- Esta es sólo la versión de demo de %1.
+ Esta es la versión de prueba de %1.
-
+
It allows you to test the application and see if it works for you.
- Le premite probar la aplicación y ver si le funciona.
+ Esta versión le permite probar la aplicación y ver si le sirve.
-
+
Continue
Continuar
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
- episodio
+ capÃtulo
-
+
Sent from %1
Enviado desde %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Obtener la versión completa
-
+
Downloading %1
- Descargand %1
+ Descargando %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ ¡Una nueva versión de %1 ya está disponible!
%1 %2 is now available. You have %3.
-
+ %1 %2 ya está disponible. Tienes la %3.
Would you like to download it now?
-
+ ¿Deseas descargarla ahora?
Skip This Version
-
+ Saltar esta versión
Remind Me Later
-
+ Recordarme después
Install Update
-
+ Instalar actualización
@@ -903,191 +1022,191 @@
Paste
-
+ Pegar
PlaylistItemDelegate
-
+
%1 views
%1 vistas
-
+
%1 of %2 (%3) â %4
-
+ %1 de %2 (%3) â %4
-
+
Preparing
-
+ Preparando
-
+
Failed
-
+ Falló
-
+
Completed
-
+ Completo
-
+
Stopped
-
+ Detenido
-
+
Stop downloading
-
+ Detener descarga
-
+
Show in %1
-
+ Mostrar en %1
-
+
Open parent folder
-
+ Abrir carpeta raÃz
-
+
Restart downloading
-
+ Reiniciar descarga
PlaylistModel
-
+
Searching...
Buscando...
-
+
Show %1 More
-
+ Mostrar %1 más
-
+
No videos
No hay vÃdeos
-
+
No more videos
-
+ No hay más vÃdeos
RefineSearchWidget
-
+
Sort by
- Sortear por
+ Ordenar por
-
+
Relevance
Relevancia
-
-
+
+
Date
Fecha
-
+
View Count
Vistas
-
+
Rating
- Calificación
+ Valoraciones
-
+
Anytime
Histórico
-
+
Today
Hoy
-
+
7 Days
- 7 DÃas
+ 7 dÃas
-
+
30 Days
- 30 DÃas
+ 30 dÃas
-
+
Duration
Duración
-
-
+
+
All
Todos
-
+
Short
Corto
-
+
Medium
Mediano
-
+
Long
Largo
-
+
Less than 4 minutes
- Menor que 4 minutos
+ Inferior a 4 minutos
-
+
Between 4 and 20 minutes
Entre 4 y 20 minutos
-
+
Longer than 20 minutes
- Mayor que 20 minutos
+ Superior a 20 minutos
-
+
Quality
Calidad
-
+
High Definition
- Alta Definición
+ Alta definición
-
+
720p or higher
720p o mayor
-
+
Done
Finalizado
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Finalizado
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
- Bienvenido/a a <a href='%1'>%2</a>,
+ Bienvenidos a <a href='%1'>%2</a>,
-
+
Get the full version
Obtener la versión completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Introducir
-
+
a keyword
una palabra clave
-
+
a channel
un canal
-
+
to start watching videos.
- empezar a ver vÃdeos
+ para empezar a ver vÃdeos
-
+
Watch
Ver
-
+
Recent keywords
Palabras clave recientes
-
+
Recent channels
Canales recientes
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Volver
-
+
Forward to %1
-
+ Hacia adelante %1
-
+
Back to %1
-
+ Hacia atrás %1
SidebarWidget
-
+
Refine Search
- Refinar Búsqueda
+ Refinar búsqueda
-
+
Did you mean: %1
Quiso decir: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
-
-
-
- Featured
-
+ Más popular
-
+
Most Shared
-
+ Más compartidos
-
+
Most Discussed
-
+ Más comentados
-
+
Top Rated
+ Mejor valorados
+
+
+
+ All Time Popular
Video
-
+
Cannot get video stream for %1
No se puede obtener el flujo de vÃdeo para %1
-
+
Network error: %1 for %2
Error de red: %1 por %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algeria
-
+
Argentina
-
+ Argentina
-
+
Australia
-
+ Australia
-
+
Belgium
-
+ Bélgica
-
+
Brazil
-
+ Brasil
-
+
Canada
-
+ Canadá
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Colombia
-
+
Czech Republic
-
+ República Checa
-
+
Egypt
-
+ Egipto
-
+
France
-
+ Francia
-
+
Germany
-
+ Alemania
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Grecia
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ HungrÃa
-
+
India
-
+ India
-
+
Indonesia
-
+ Indonesia
-
+
Ireland
-
+ Irlanda
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Italia
-
+
Japan
-
+ Japón
-
+
Jordan
-
+ Jordania
-
+
Kenya
-
+ Kenia
-
+
Malaysia
-
+ Malasia
-
+
Mexico
-
+ México
-
+
Morocco
-
+ Marruecos
-
+
Netherlands
-
+ PaÃses Bajos
-
+
New Zealand
-
+ Nueva Zelanda
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Perú
-
+
Philippines
-
+ Filipinas
-
+
Poland
-
+ Polonia
-
+
Russia
-
+ Rusia
-
+
Saudi Arabia
-
+ Arabia SaudÃ
-
+
Singapore
-
+ Singapur
-
+
South Africa
-
+ Sudáfrica
-
+
South Korea
-
+ Corea del Sur
-
+
Spain
-
+ España
-
+
Sweden
-
+ Suecia
-
+
Taiwan
-
+ Taiwán
-
+
Tunisia
-
+ Túnez
-
+
Turkey
-
+ TurquÃa
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Emiratos Ãrabes Unidos
-
+
United Kingdom
-
+ Reino Unido
-
+
Yemen
-
+ Yemen
-
+
Worldwide
-
+ Mundial
\ No newline at end of file
diff --git a/locale/fi.ts b/locale/fi.ts
index 7de34c5..73066cc 100644
--- a/locale/fi.ts
+++ b/locale/fi.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Selaimen ulkopuolellakin on elämää!
-
+
Version %1
Versio: %1
-
+
Licensed to: %1
-
+ Lisensoitu henkilölle: %1
-
+
%1 is Free Software but its development takes precious time.
%1 on ilmainen ohjelma, mutta sen kehittäminen vie kallista aikaa.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Voit tukea %2-kehitystä jatkumista tekemällä <a href='%1'>lahjoituksen</a>.
-
+
You may want to try my other apps as well:
Sinua voi kiinnostaa myös nämä sovellukseni:
-
+
%1, a YouTube music player
%1, YouTube-musiikkisoitin
-
+
%1, a music player
%1, musiikkisoitin
-
+
Translate %1 to your native language using %2
Käännä %1 äidinkielellesi käyttämällä %2
-
+
Icon designed by %1.
Kuvakkeen suunnitteli %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Julkaistu <a href='%1'>GNU General Public License</a> -lisenssillä
-
+
&Close
&Sulje
-
+
About
Tietoja
-
+
What you always wanted to know about %1 and never dared to ask
Mitä olet aina halunnut tietää %1sta, muttet ole koskaan kehdannut kysyä
@@ -78,7 +78,7 @@
Enter your License Details
-
+ Syötä tähän lisenssitietosi
@@ -96,12 +96,12 @@
Please license %1
- Lisensoi %1
+ Lisensioi %1.
This demo has expired.
- Tämä koekäyttöversio on vanhentunut.
+ Tämä demon kokeiluaika on päättynyt.
@@ -111,7 +111,7 @@
Without a license, the application will expire in %1 days.
-
+ Ilman lisenssiä tämä sovellus vanhenee %1 päivässä.
@@ -134,6 +134,95 @@
Osta lisenssi
+
+ ChannelAggregator
+
+
+ By %1
+ Tekijältä %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Kaikki videot
+
+
+
+ Unwatched Videos
+ Katsomattomat videot
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Merkitse kaikki katsotuiksi
+
+
+
+ Show Updated
+ Näytä päivitetyt
+
+
+
+ Name
+ Nimi
+
+
+
+ Last Updated
+ Viimeksi päivitetyt
+
+
+
+ Last Added
+ Viimeksi lisätyt
+
+
+
+ Last Watched
+ Viimeksi katsotut
+
+
+
+ Most Watched
+ Katsotuimmat
+
+
+
+ Sort by
+ Järjestysperuste
+
+
+
+ All Videos
+ Kaikki videot
+
+
+
+ Unwatched Videos
+ Katsomattomat videot
+
+
+
+ There are no updated subscriptions at this time.
+ Päivitettyjä tilauksia ei ole tällä hetkellä.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Sinulla ei ole tilauksia. Käytä tähtisymbolia tilataksesi kanavia.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
tavua
-
+
KB
Kt
-
+
MB
Mt
-
+
bytes/sec
tavua/sekunnissa
-
+
KB/sec
Kt/s
-
+
MB/sec
Mt/s
-
+
seconds
sekunttia
-
+
minutes
minuuttia
-
+
%4 %5 remaining
%4 %5 jäljellä
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Tämä on vain %1-kokeiluversio.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Voit ladata vain videoita jotka ovat lyhyempiä kuin %1 minuuttia, jotta voit testata latausominaisuutta.
-
+
Continue
Jatka
-
+
Get the full version
Hanki täysi versio
-
+
%1 downloaded in %2
%1 ladattu ajassa %2
-
+
Download finished
Lataus valmistui
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Vaihda sijaintia...
-
+
Choose the download location
Valitse latausten sijainti
-
+
Download location changed.
Lataus sijaintia on muutettu.
-
+
Current downloads will still go in the previous location.
Nykyiset lataukset menevät vanhaan sijaintiin.
-
+
Downloading to: %1
Ladataan kansioon: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Lataukset
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Toista
-
+
Pause
Keskeytä
-
+
Play/Pause
Toista/keskeytä
-
+
Stop
Pysäytä
-
+
Stop playing after current track
Pysäytä toisto nykyisen kappaleen jälkeen
-
+
Next track
Seuraava kappale
-
+
Previous track
Edellinen kappale
-
+
Increase volume
Lisää äänenvoimakkuutta
-
+
Decrease volume
Vähennä äänenvoimakkuutta
-
+
Mute
Vaimenna
-
+
Seek forward
Kelaa eteenpäin
-
+
Seek backward
Kelaa taaksepäin
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Etsi
-
+
Find videos and channels by keyword
-
+ Etsi videoita ja kanavia avainsanalla
-
+
Browse
-
+ Selaa
-
+
Browse videos by category
-
+ Selaa videoita ryhmien mukaan
-
+
+ Subscriptions
+ Tilaukset
+
+
+
+ Channel subscriptions
+ Kanavatilaukset
+
+
+
Make yourself comfortable
Tee olosi kotoisaksi
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Virhe
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Pysäytä
-
+
Stop playback and go back to the search view
Pysäytä toisto ja palaa hakuruutuun
-
+
S&kip
&Hyppää yli
-
+
Skip to the next video
Siirry seuraavaan videoon
-
-
+
+
&Pause
&Keskeytä
-
-
+
+
Pause playback
Keskeytä toisto
-
+
&Full Screen
&Koko näytön tila
-
+
Go full screen
Siirry koko näytön tilaan
-
+
Hide the playlist and the toolbar
Piilota soittolista sekä työkalupalkki
-
+
Go to the YouTube video page and pause playback
Keskeytä toisto ja mene videon YouTube-sivulle
-
+
Copy the current video YouTube link to the clipboard
Kopioi nykyisen videon YouTube-linkki leikepöydälle
-
+
Copy the current video stream URL to the clipboard
Kopioi nykyisen videovirran osoite leikepöydälle
-
+
Find other video parts hopefully in the right order
Löydä videon muut osat toivottavasti oikeassa järjestyksessä
-
+
&Remove
&Poista
-
+
Remove the selected videos from the playlist
Poista valitut videot toistolistalta
-
+
Move &Up
Siirrä &ylös
-
+
Move up the selected videos in the playlist
Siirrä valitut videot ylemmäksi soittolistalla
-
+
Move &Down
Sirrä &alas
-
+
Move down the selected videos in the playlist
Siirrä valitut videot alemmaksi soittolistalla
-
+
Clear the search history. Cannot be undone.
Tyhjennä hakuhistoria. Tätä toimintoa ei voi kumota.
-
+
&Quit
&Lopeta
-
+
Bye
Näkemiin
-
+
&Website
&Nettisivusto
-
+
%1 on the Web
%1 netissä
-
+
Please support the continued development of %1
Tue %1n jatkokehitystä
-
+
&About
&Tietoja
-
+
Info about %1
Tietoja %1sta
-
+
Search
Etsi
-
+
Mute volume
Vaimenna ääni
-
-
+
+
&Downloads
&Lataukset
-
+
Show details about video downloads
Näytä tietoja latauksista
-
+
&Download
&Lataa
-
+
Download the current video
Lataa nykyinen video
-
+
+ &Subscribe to Channel
+ %Tilaa kanava
+
+
+
Share the current video using %1
Jaa nykyinen video palvelulla %1
-
+
&Email
&Sähköposti
-
+
Email
Sähköposti
-
+
&Close
&Sulje
-
+
&Float on Top
&Pysy päällimmäisenä
-
+
&Stop After This Video
Py&säytä toisto tämän videon jälkeen
-
+
&Report an Issue...
&Ilmoita ongelmasta...
-
+
&Refine Search...
&Määritä haku uudelleen...
-
+
More...
-
+ Lisää...
-
+
&Related Videos
-
+ &Aiheeseen liittyvät videot
-
+
Watch videos related to the current one
+ Katso nykyiseen videoon liittyvät videot
+
+
+
+ Open in &Browser...
-
+
&Application
&Sovellus
-
+
Buy %1...
Osta %1...
-
+
&Playback
&Toisto
-
+
&Playlist
S&oittolista
-
+
&Video
&Video
-
+
&View
&Näytä
-
+
&Share
&Jaa
-
+
&Help
&Ohje
-
+
Press %1 to raise the volume, %2 to lower it
Paina näppäinyhdistelmää %1 nostaaksesi tai %2 laskeaksesi äänenvoimakkuutta
-
-
+
+
Opening %1
Avataan kohdetta %1
-
+
Do you want to exit %1 with a download in progress?
Haluatko, että %1 sulkeutuu vaikka lataus on kesken?
-
+
If you close %1 now, this download will be cancelled.
Jos suljet %1n nyt niin tämä lataus keskeytetään.
-
+
Close and cancel download
Sulje ja peru lataus
-
+
Wait for download to finish
Odota latauksen valmistumista
-
+
Leave &Full Screen
Poistu &koko näytön tilasta
-
+
%1 version %2 is now available.
%1 versio %2 on nyt saatavilla.
-
+
Remind me later
Muistuta myöhemmin
-
+
Update
Päivitä
-
+
Error: %1
Virhe: %1
-
+
P&revious
E&dellinen
-
+
Go back to the previous track
Siirry takaisin edelliseen kappaleeseen
-
+
&Compact Mode
Kompakti &tila
-
+
Open the &YouTube Page
Avaa &YouTube-sivu
-
+
Copy the YouTube &Link
Kopioi YouTube-&linkki
-
+
Copy the Video Stream &URL
Kopioi videovirran &URL
-
+
Find Video &Parts
Etsi videon &osat
-
+
&Clear Recent Searches
Ty&hjennä viimeisimmät haut
-
+
Make a &Donation
Tee &lahjoitus
-
+
&Manually Start Playing
Aloita toisto &manuaalisesti
-
+
Manually start playing videos
Aloittaa videoiden toiston manuaalisesti
-
+
Choose your content location
-
+ Valitse sisältösi sijainti
-
+
&Play
&Toista
-
+
Resume playback
Jatka toistoa
-
+
Remaining time: %1
Aikaa jäljellä: %1
-
+
Volume at %1%
Ãänentaso: %1%
-
+
Volume is muted
Ãäni on vaimennettu
-
+
Volume is unmuted
Ãäni ei ole vaimennettu
-
+
Maximum video definition set to %1
Korkein videonlaatu on rajoitettu tarkkuuteen %1
-
+
Your privacy is now safe
Yksityisyytesi on nyt turvattu
-
+
Downloads complete
Lataukset ovat valmistuneet
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
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 sovellukseen
-
+
The link will be valid only for a limited time.
Osoite on käytössä vain rajoitetun ajan.
-
+
This is just the demo version of %1.
Tämä on vain %1n kokeiluversio.
-
+
It allows you to test the application and see if it works for you.
Voit kokeilla ohjelmaa nähdäksesi, toimiiko se.
-
+
Continue
Jatka
-
+
of
Used in video parts, as in '2 of 3'
/
-
+
part
This is for video parts, as in 'Cool video - part 1'
osa
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
jakso
-
+
Sent from %1
Lähetetty palvelusta %1
-
+
+ Unsubscribe from %1
+ Peru kanavan %1 tilaus
+
+
+
+ Subscribe to %1
+ Tilaa kanava %1
+
+
+
Get the full version
Hanki täysi versio
-
+
Downloading %1
Ladataan %1ta/tä
@@ -870,12 +989,12 @@
A new version of %1 is available!
-
+ Uusi versio sovelluksesta %1 on saatavilla!
%1 %2 is now available. You have %3.
-
+ %1 %2 on nyt saatavilla. Sinulla on %3.
@@ -890,7 +1009,7 @@
Remind Me Later
- Muistuta myöhemmin
+ Muistuta minua myöhemmin
@@ -903,58 +1022,58 @@
Paste
-
+ Liitä
PlaylistItemDelegate
-
+
%1 views
Katsottu %1 kertaa
-
+
%1 of %2 (%3) â %4
%1 / %2 (%3) â %4
-
+
Preparing
Valmistellaan
-
+
Failed
Epäonnistui
-
+
Completed
Valmis
-
+
Stopped
Pysäytetty
-
+
Stop downloading
Pysäytä lataus
-
+
Show in %1
Avaa %1ssa/ssä
-
+
Open parent folder
Avaa yläkansio
-
+
Restart downloading
Käynnistä lataus uudelleen
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Etsitään...
-
+
Show %1 More
Näytä %1 lisää
-
+
No videos
Ei videoita
-
+
No more videos
Ei enempää videoita
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Järjestysperuste
-
+
Relevance
Olennaisuus
-
-
+
+
Date
Päiväys
-
+
View Count
Katselukerrat
-
+
Rating
Arvostelu
-
+
Anytime
Milloin tahansa
-
+
Today
Tänään
-
+
7 Days
7 päivää
-
+
30 Days
30 päivää
-
+
Duration
Kesto
-
-
+
+
All
Kaikki
-
+
Short
Lyhyt
-
+
Medium
Keskipituinen
-
+
Long
Pitkä
-
+
Less than 4 minutes
Vähemmän kuin 4 minuuttia
-
+
Between 4 and 20 minutes
4-20 minuutin välillä
-
+
Longer than 20 minutes
Pidempi kuin 20 minuuttia
-
+
Quality
Laatu
-
+
High Definition
Teräväpiirto
-
+
720p or higher
720p tai tarkempi
-
+
Done
Valmis
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Valmis
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Tervetuloa <a href='%1'>%2en</a>
-
+
Get the full version
Hanki täysversio
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Syötä
-
+
a keyword
hakusana
-
+
a channel
kanava
-
+
to start watching videos.
aloittaaksesi videoiden katselu.
-
+
Watch
Katso
-
+
Recent keywords
Viimeisimmät hakusanat
-
+
Recent channels
Viimeisimmät kanavat
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Takaisin
-
+
Forward to %1
-
+ Eteenpäin kohteeseen %1
-
+
Back to %1
-
+ Takaisin kohteeseen %1
SidebarWidget
-
+
Refine Search
Määritä haku uudelleen
-
+
Did you mean: %1
Tarkoititko: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
-
-
-
- Featured
-
+ Suosituimmat
-
+
Most Shared
-
+ Jaetuimmat
-
+
Most Discussed
-
+ Keskustelluimmat
-
+
Top Rated
-
+ Arvostetuimmat
+
+
+
+ All Time Popular
+ Kaikkien aikojen suosituimmat
Video
-
+
Cannot get video stream for %1
Videostriimiä ei saada kohteelle %1
-
+
Network error: %1 for %2
Verkkovirhe: "%1" "%2"lle
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algeria
-
+
Argentina
-
+ Argentiina
-
+
Australia
-
+ Australia
-
+
Belgium
-
+ Belgia
-
+
Brazil
-
+ Brasilia
-
+
Canada
-
+ Kanada
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Kolumbia
-
+
Czech Republic
-
+ TÅ¡ekin tasavalta
-
+
Egypt
-
+ Egypti
-
+
France
-
+ Ranska
-
+
Germany
-
+ Saksa
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Kreikka
-
+
Hong Kong
-
+ Hongkong
-
+
Hungary
-
+ Unkari
-
+
India
-
+ Intia
-
+
Indonesia
-
+ Indonesia
-
+
Ireland
-
+ Irlanti
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Italia
-
+
Japan
-
+ Japani
-
+
Jordan
-
+ Jordania
-
+
Kenya
-
+ Kenia
-
+
Malaysia
-
+ Malesia
-
+
Mexico
-
+ Meksiko
-
+
Morocco
-
+ Marokko
-
+
Netherlands
-
+ Alankomaat
-
+
New Zealand
-
+ Uusi-Seelanti
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Filippiinit
-
+
Poland
-
+ Puola
-
+
Russia
-
+ Venäjä
-
+
Saudi Arabia
-
+ Saudi-Arabia
-
+
Singapore
-
+ Singapore
-
+
South Africa
-
+ Etelä-Afrikka
-
+
South Korea
-
+ Etelä-Korea
-
+
Spain
-
+ Espanja
-
+
Sweden
-
+ Ruotsi
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ Tunisia
-
+
Turkey
-
+ Turkki
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Yhdistyneet arabiemiirikunnat
-
+
United Kingdom
-
+ Yhdistynyt kuningaskunta
-
+
Yemen
-
+ Jemen
-
+
Worldwide
-
+ Maailmanlaajuinen
\ No newline at end of file
diff --git a/locale/fi_FI.ts b/locale/fi_FI.ts
index a5c8bf2..dcc2ebc 100644
--- a/locale/fi_FI.ts
+++ b/locale/fi_FI.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Selaimen ulkopuolellakin on elämää!
-
+
Version %1
Versio: %1
-
+
Licensed to: %1
Lisensoitu henkilölle: %1
-
+
%1 is Free Software but its development takes precious time.
%1 on ilmainen ohjelma, mutta sen kehittäminen vie kallista aikaa.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Voit tukea %2-kehitystä jatkumista tekemällä <a href='%1'>lahjoituksen</a>.
-
+
You may want to try my other apps as well:
Sinua voi kiinnostaa myös nämä sovellukseni:
-
+
%1, a YouTube music player
%1, YouTube-musiikkisoitin
-
+
%1, a music player
%1, musiikkisoitin
-
+
Translate %1 to your native language using %2
Käännä %1 äidinkielellesi käyttämällä %2
-
+
Icon designed by %1.
Kuvakkeen suunnitteli %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Julkaistu <a href='%1'>GNU General Public License</a> -lisenssillä
-
+
&Close
&Sulje
-
+
About
Tietoja
-
+
What you always wanted to know about %1 and never dared to ask
Mitä olet aina halunnut tietää %1sta, muttet ole koskaan kehdannut kysyä
@@ -106,7 +106,7 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ Täysversio sallii sinun ladata yli %1 minuutin pituisia videoita ja katsoa videoita ilman keskeytyksiä.
@@ -134,6 +134,95 @@
Osta lisenssi
+
+ ChannelAggregator
+
+
+ By %1
+ Tekijältä %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Kaikki videot
+
+
+
+ Unwatched Videos
+ Katsomattomat videot
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Merkitse kaikki katsotuiksi
+
+
+
+ Show Updated
+ Näytä päivitetyt
+
+
+
+ Name
+ Nimi
+
+
+
+ Last Updated
+ Viimeksi päivitetyt
+
+
+
+ Last Added
+ Viimeksi lisätyt
+
+
+
+ Last Watched
+ Viimeksi katsotut
+
+
+
+ Most Watched
+ Katsotuimmat
+
+
+
+ Sort by
+ Järjestysperuste
+
+
+
+ All Videos
+ Kaikki videot
+
+
+
+ Unwatched Videos
+ Katsomattomat videot
+
+
+
+ There are no updated subscriptions at this time.
+ Päivitettyjä tilauksia ei ole tällä hetkellä.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Sinulla ei ole tilauksia. Käytä tähtisymbolia tilataksesi kanavia.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
tavua
-
+
KB
Kt
-
+
MB
Mt
-
+
bytes/sec
tavua/sekunnissa
-
+
KB/sec
Kt/s
-
+
MB/sec
Mt/s
-
+
seconds
sekunttia
-
+
minutes
minuuttia
-
+
%4 %5 remaining
%4 %5 jäljellä
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Tämä on vain %1-kokeiluversio.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Voit ladata vain videoita jotka ovat lyhyempiä kuin %1 minuuttia, jotta voit testata latausominaisuutta.
-
+
Continue
Jatka
-
+
Get the full version
Hanki täysi versio
-
+
%1 downloaded in %2
%1 ladattu ajassa %2
-
+
Download finished
Lataus valmistui
-
+
%n Download(s)
%n Lataus(ta)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Vaihda sijaintia...
-
+
Choose the download location
Valitse latausten sijainti
-
+
Download location changed.
Lataus sijaintia on muutettu.
-
+
Current downloads will still go in the previous location.
Nykyiset lataukset menevät vanhaan sijaintiin.
-
+
Downloading to: %1
Ladataan kansioon: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Lataukset
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Toista
-
+
Pause
Keskeytä
-
+
Play/Pause
Toista/keskeytä
-
+
Stop
Pysäytä
-
+
Stop playing after current track
Pysäytä toisto nykyisen kappaleen jälkeen
-
+
Next track
Seuraava kappale
-
+
Previous track
Edellinen kappale
-
+
Increase volume
Lisää äänenvoimakkuutta
-
+
Decrease volume
Vähennä äänenvoimakkuutta
-
+
Mute
Vaimenna
-
+
Seek forward
Kelaa eteenpäin
-
+
Seek backward
Kelaa taaksepäin
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Etsi
-
+
Find videos and channels by keyword
-
+ Etsi videoita ja kanavia avainsanalla
-
+
Browse
-
+ Selaa
-
+
Browse videos by category
-
+ Selaa videoita ryhmien mukaan
-
+
+ Subscriptions
+ Tilaukset
+
+
+
+ Channel subscriptions
+ Kanavatilaukset
+
+
+
Make yourself comfortable
Tee olosi kotoisaksi
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Virhe
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Pysäytä
-
+
Stop playback and go back to the search view
Pysäytä toisto ja palaa hakuruutuun
-
+
S&kip
&Hyppää yli
-
+
Skip to the next video
Siirry seuraavaan videoon
-
-
+
+
&Pause
&Keskeytä
-
-
+
+
Pause playback
Keskeytä toisto
-
+
&Full Screen
&Koko näytön tila
-
+
Go full screen
Siirry koko näytön tilaan
-
+
Hide the playlist and the toolbar
Piilota soittolista sekä työkalupalkki
-
+
Go to the YouTube video page and pause playback
Keskeytä toisto ja mene videon YouTube-sivulle
-
+
Copy the current video YouTube link to the clipboard
Kopioi nykyisen videon YouTube-linkki leikepöydälle
-
+
Copy the current video stream URL to the clipboard
Kopioi nykyisen videovirran osoite leikepöydälle
-
+
Find other video parts hopefully in the right order
Löydä videon muut osat toivottavasti oikeassa järjestyksessä
-
+
&Remove
&Poista
-
+
Remove the selected videos from the playlist
Poista valitut videot toistolistalta
-
+
Move &Up
Siirrä &ylös
-
+
Move up the selected videos in the playlist
Siirrä valitut videot ylemmäksi soittolistalla
-
+
Move &Down
Sirrä &alas
-
+
Move down the selected videos in the playlist
Siirrä valitut videot alemmaksi soittolistalla
-
+
Clear the search history. Cannot be undone.
Tyhjennä hakuhistoria. Tätä toimintoa ei voi kumota.
-
+
&Quit
&Lopeta
-
+
Bye
Näkemiin
-
+
&Website
&Nettisivusto
-
+
%1 on the Web
%1 netissä
-
+
Please support the continued development of %1
Tue %1n jatkokehitystä
-
+
&About
&Tietoja
-
+
Info about %1
Tietoja %1sta
-
+
Search
Etsi
-
+
Mute volume
Vaimenna ääni
-
-
+
+
&Downloads
&Lataukset
-
+
Show details about video downloads
Näytä tietoja latauksista
-
+
&Download
&Lataa
-
+
Download the current video
Lataa nykyinen video
-
+
+ &Subscribe to Channel
+ %Tilaa kanava
+
+
+
Share the current video using %1
Jaa nykyinen video palvelulla %1
-
+
&Email
&Sähköposti
-
+
Email
Sähköposti
-
+
&Close
&Sulje
-
+
&Float on Top
&Pysy päällimmäisenä
-
+
&Stop After This Video
Py&säytä toisto tämän videon jälkeen
-
+
&Report an Issue...
&Ilmoita ongelmasta...
-
+
&Refine Search...
&Määritä haku uudelleen...
-
+
More...
-
+ Lisää...
-
+
&Related Videos
-
+ &Aiheeseen liittyvät videot
-
+
Watch videos related to the current one
+ Katso nykyiseen videoon liittyvät videot
+
+
+
+ Open in &Browser...
-
+
&Application
&Sovellus
-
+
Buy %1...
Osta %1...
-
+
&Playback
&Toisto
-
+
&Playlist
S&oittolista
-
+
&Video
&Video
-
+
&View
&Näytä
-
+
&Share
&Jaa
-
+
&Help
&Ohje
-
+
Press %1 to raise the volume, %2 to lower it
Paina näppäinyhdistelmää %1 nostaaksesi tai %2 laskeaksesi äänenvoimakkuutta
-
-
+
+
Opening %1
Avataan kohdetta %1
-
+
Do you want to exit %1 with a download in progress?
Haluatko, että %1 sulkeutuu vaikka lataus on kesken?
-
+
If you close %1 now, this download will be cancelled.
Jos suljet %1n nyt niin tämä lataus keskeytetään.
-
+
Close and cancel download
Sulje ja peru lataus
-
+
Wait for download to finish
Odota latauksen valmistumista
-
+
Leave &Full Screen
Poistu &koko näytön tilasta
-
+
%1 version %2 is now available.
%1 versio %2 on nyt saatavilla.
-
+
Remind me later
Muistuta myöhemmin
-
+
Update
Päivitä
-
+
Error: %1
Virhe: %1
-
+
P&revious
E&dellinen
-
+
Go back to the previous track
Siirry takaisin edelliseen kappaleeseen
-
+
&Compact Mode
Kompakti &tila
-
+
Open the &YouTube Page
Avaa &YouTube-sivu
-
+
Copy the YouTube &Link
Kopioi YouTube-&linkki
-
+
Copy the Video Stream &URL
Kopioi videovirran &URL
-
+
Find Video &Parts
Etsi videon &osat
-
+
&Clear Recent Searches
Ty&hjennä viimeisimmät haut
-
+
Make a &Donation
Tee &lahjoitus
-
+
&Manually Start Playing
Aloita toisto &manuaalisesti
-
+
Manually start playing videos
Aloittaa videoiden toiston manuaalisesti
-
+
Choose your content location
-
+ Valitse sisältösi sijainti
-
+
&Play
&Toista
-
+
Resume playback
Jatka toistoa
-
+
Remaining time: %1
Aikaa jäljellä: %1
-
+
Volume at %1%
Ãänentaso: %1%
-
+
Volume is muted
Ãäni on vaimennettu
-
+
Volume is unmuted
Ãäni ei ole vaimennettu
-
+
Maximum video definition set to %1
Korkein videonlaatu on rajoitettu tarkkuuteen %1
-
+
Your privacy is now safe
Yksityisyytesi on nyt turvattu
-
+
Downloads complete
Lataukset ovat valmistuneet
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
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 sovellukseen
-
+
The link will be valid only for a limited time.
Osoite on käytössä vain rajoitetun ajan.
-
+
This is just the demo version of %1.
Tämä on vain %1n kokeiluversio.
-
+
It allows you to test the application and see if it works for you.
Voit kokeilla ohjelmaa nähdäksesi, toimiiko se.
-
+
Continue
Jatka
-
+
of
Used in video parts, as in '2 of 3'
/
-
+
part
This is for video parts, as in 'Cool video - part 1'
osa
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
jakso
-
+
Sent from %1
Lähetetty palvelusta %1
-
+
+ Unsubscribe from %1
+ Peru kanavan %1 tilaus
+
+
+
+ Subscribe to %1
+ Tilaa kanava %1
+
+
+
Get the full version
Hanki täysi versio
-
+
Downloading %1
Ladataan %1ta/tä
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
Katsottu %1 kertaa
-
+
%1 of %2 (%3) â %4
-
+ %1 / %2 (%3) â %4
-
+
Preparing
Valmistellaan
-
+
Failed
Epäonnistui
-
+
Completed
Valmis
-
+
Stopped
Pysäytetty
-
+
Stop downloading
Pysäytä lataus
-
+
Show in %1
Avaa %1ssa/ssä
-
+
Open parent folder
Avaa yläkansio
-
+
Restart downloading
Käynnistä lataus uudelleen
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Etsitään...
-
+
Show %1 More
Näytä %1 lisää
-
+
No videos
Ei videoita
-
+
No more videos
Ei enempää videoita
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Järjestysperuste
-
+
Relevance
Olennaisuus
-
-
+
+
Date
Päiväys
-
+
View Count
Katselukerrat
-
+
Rating
Arvostelu
-
+
Anytime
Milloin tahansa
-
+
Today
Tänään
-
+
7 Days
7 päivää
-
+
30 Days
30 päivää
-
+
Duration
Kesto
-
-
+
+
All
Kaikki
-
+
Short
Lyhyt
-
+
Medium
Keskipituinen
-
+
Long
Pitkä
-
+
Less than 4 minutes
Vähemmän kuin 4 minuuttia
-
+
Between 4 and 20 minutes
4-20 minuutin välillä
-
+
Longer than 20 minutes
Pidempi kuin 20 minuuttia
-
+
Quality
Laatu
-
+
High Definition
Teräväpiirto
-
+
720p or higher
720p tai tarkempi
-
+
Done
Valmis
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Valmis
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Tervetuloa <a href='%1'>%2en</a>
-
+
Get the full version
Hanki täysversio
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Syötä
-
+
a keyword
hakusana
-
+
a channel
kanava
-
+
to start watching videos.
aloittaaksesi videoiden katselu.
-
+
Watch
Katso
-
+
Recent keywords
Viimeisimmät hakusanat
-
+
Recent channels
Viimeisimmät kanavat
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Takaisin
-
+
Forward to %1
-
+ Eteenpäin kohteeseen %1
-
+
Back to %1
-
+ Takaisin kohteeseen %1
SidebarWidget
-
+
Refine Search
Määritä haku uudelleen
-
+
Did you mean: %1
Tarkoititko: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ Suosituimmat
-
- Featured
-
-
-
-
+
Most Shared
-
+ Jaetuimmat
-
+
Most Discussed
-
+ Keskustelluimmat
-
+
Top Rated
-
+ Arvostetuimmat
+
+
+
+ All Time Popular
+ Kaikkien aikojen suosituimmat
Video
-
+
Cannot get video stream for %1
Videostriimiä ei saada kohteelle %1
-
+
Network error: %1 for %2
Verkkovirhe: "%1" "%2"lle
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algeria
-
+
Argentina
-
+ Argentiina
-
+
Australia
-
+ Australia
-
+
Belgium
-
+ Belgia
-
+
Brazil
-
+ Brasilia
-
+
Canada
-
+ Kanada
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Kolumbia
-
+
Czech Republic
-
+ TÅ¡ekin tasavalta
-
+
Egypt
-
+ Egypti
-
+
France
-
+ Ranska
-
+
Germany
-
+ Saksa
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Kreikka
-
+
Hong Kong
-
+ Hongkong
-
+
Hungary
-
+ Unkari
-
+
India
-
+ Intia
-
+
Indonesia
-
+ Indonesia
-
+
Ireland
-
+ Irlanti
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Italia
-
+
Japan
-
+ Japani
-
+
Jordan
-
+ Jordania
-
+
Kenya
-
+ Kenia
-
+
Malaysia
-
+ Malesia
-
+
Mexico
-
+ Meksiko
-
+
Morocco
-
+ Marokko
-
+
Netherlands
-
+ Alankomaat
-
+
New Zealand
-
+ Uusi-Seelanti
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Filippiinit
-
+
Poland
-
+ Puola
-
+
Russia
-
+ Venäjä
-
+
Saudi Arabia
-
+ Saudi-Arabia
-
+
Singapore
-
+ Singapore
-
+
South Africa
-
+ Etelä-Afrikka
-
+
South Korea
-
+ Etelä-Korea
-
+
Spain
-
+ Espanja
-
+
Sweden
-
+ Ruotsi
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ Tunisia
-
+
Turkey
-
+ Turkki
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Yhdistyneet arabiemiirikunnat
-
+
United Kingdom
-
+ Yhdistynyt kuningaskunta
-
+
Yemen
-
+ Jemen
-
+
Worldwide
-
+ Maailmanlaajuinen
\ No newline at end of file
diff --git a/locale/fr.ts b/locale/fr.ts
index 9551f9b..925b5e9 100644
--- a/locale/fr.ts
+++ b/locale/fr.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Il y a une vie après le navigateur !
-
+
Version %1
Version %1
-
+
Licensed to: %1
Licence accordée à : %1
-
+
%1 is Free Software but its development takes precious time.
%1 est un Logiciel Libre, mais son développement prend un temps précieux.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Merci <a href='%1'>d'envoyer vos dons</a> pour aider à poursuivre le développement de %2.
-
+
You may want to try my other apps as well:
Vous serrez sûrement intéressé par mes autres applications :
-
+
%1, a YouTube music player
%1, un lecteur de musique basé sur YouTube
-
+
%1, a music player
%1, un lecteur de musique
-
+
Translate %1 to your native language using %2
Traduisez %1 dans votre langue native en utilisant %2
-
+
Icon designed by %1.
Icône dessinée par %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Proposé sous licence <a href='%1'>GNU General Public License</a>
-
+
&Close
&Fermer
-
+
About
à propos
-
+
What you always wanted to know about %1 and never dared to ask
Ce que vous avez toujours voulu savoir à propos de %1 et que vous n'avez jamais osé demander
@@ -106,7 +106,7 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ La version complète vous permet de télécharger des vidéos de plus de %1 minutes et de regarder des vidéos sans interruptions.
@@ -134,6 +134,95 @@
Acheter une licence
+
+ ChannelAggregator
+
+
+ By %1
+ Par %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Toutes les vidéos
+
+
+
+ Unwatched Videos
+ Vidéos non vues
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Tout marquer comme vu
+
+
+
+ Show Updated
+ Afficher les mises à jour
+
+
+
+ Name
+ Nom
+
+
+
+ Last Updated
+ Dernièrement mis à jour
+
+
+
+ Last Added
+ Dernièrement ajoutées
+
+
+
+ Last Watched
+ Dernièrement vues
+
+
+
+ Most Watched
+ Les plus vues
+
+
+
+ Sort by
+ Trier par
+
+
+
+ All Videos
+ Toutes les vidéos
+
+
+
+ Unwatched Videos
+ Vidéos non vues
+
+
+
+ There are no updated subscriptions at this time.
+ Il n'y a pas d'abonnements mis à jour en ce moment.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Vous n'avez pas d'abonnements. Utilisez le symbole de l'étoile pour vous abonner à des chaines,
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
- bytes
+ octets
-
+
KB
- KB
+ Kio
-
+
MB
- MB
+ Mio
-
+
bytes/sec
- bytes/sec
+ octets/sec
-
+
KB/sec
- KB/sec
+ Kio/sec
-
+
MB/sec
- MB/sec
+ Mio/sec
-
+
seconds
secondes
-
+
minutes
minutes
-
+
%4 %5 remaining
%4 %5 restant
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Il s'agit seulement de la version démo de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Vous ne pouvez télécharger que des vidéos plus courtes que %1 minutes de sorte que vous pouvez tester la fonctionnalité de téléchargement.
-
+
Continue
Continuer
-
+
Get the full version
Obtenir la version complète
-
+
%1 downloaded in %2
%1 téléchargé sur %2
-
+
Download finished
Téléchargement terminé
-
+
%n Download(s)
%n Téléchargement %n Téléchargements
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Changer d'emplacement...
-
+
Choose the download location
Choisissez l'emplacement de téléchargement
-
+
Download location changed.
Emplacement de téléchargement changé.
-
+
Current downloads will still go in the previous location.
Les téléchargements en cours iront à l'emplacement précédent.
-
+
Downloading to: %1
Téléchargement de : %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Téléchargements
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Lancer
-
+
Pause
Pause
-
+
Play/Pause
Lance/Pause
-
+
Stop
Arrêter
-
+
Stop playing after current track
Arrêtez après le morceau en cours
-
+
Next track
Morceau suivant
-
+
Previous track
Monceau précédent
-
+
Increase volume
Augmenter le volume
-
+
Decrease volume
Diminuer le volume
-
+
Mute
Muet
-
+
Seek forward
Avancer
-
+
Seek backward
Retour
@@ -339,35 +428,45 @@
HomeView
-
+
Search
Chercher
-
+
Find videos and channels by keyword
-
+ Trouver des vidéos et des chaînes par mot-clé
-
+
Browse
-
+ Parcourir
-
+
Browse videos by category
-
+ Parcourir les vidéos par catégories
+
+
+
+ Subscriptions
+ Abonnements
-
+
+ Channel subscriptions
+ Abonnements aux chaines
+
+
+
Make yourself comfortable
-
+ Installez-vous confortablement
LoadingWidget
-
+
Error
Erreur
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Arrêter
-
+
Stop playback and go back to the search view
Arrêter et aller à la page de recherche
-
+
S&kip
&Passer
-
+
Skip to the next video
Passer à la vidéo suivante
-
-
+
+
&Pause
&Pause
-
-
+
+
Pause playback
Mettre en pause
-
+
&Full Screen
&Plein écran
-
+
Go full screen
Mettre en plein écran
-
+
Hide the playlist and the toolbar
Cacher la liste de lecture et la barre d'outils
-
+
Go to the YouTube video page and pause playback
Aller à la page de la vidéo Youtube et mettre en pause
-
+
Copy the current video YouTube link to the clipboard
Copier l'adresse de la vidéo YouTube courante dans le presse-papier
-
+
Copy the current video stream URL to the clipboard
Copier l'adresse du flux vidéo courant dans le presse-papier
-
+
Find other video parts hopefully in the right order
Trouver les autres parties de la vidéo en espérant qu'elles soient dans le bon ordre
-
+
&Remove
&Supprimer
-
+
Remove the selected videos from the playlist
Supprimer la vidéo sélectionnée de la liste de lecture
-
+
Move &Up
Déplacer vers les &haut
-
+
Move up the selected videos in the playlist
Déplacer la vidéo sélectionnée vers le haut dans la liste de lecture
-
+
Move &Down
Déplacer vers les &bas
-
+
Move down the selected videos in the playlist
Déplacer la vidéo sélectionnée vers le bas dans la liste de lecture
-
+
Clear the search history. Cannot be undone.
Effacer l'historique de recherche. Opération irréversible.
-
+
&Quit
&Quitter
-
+
Bye
Au revoir
-
+
&Website
Site &Web
-
+
%1 on the Web
%1 sur le Web
-
+
Please support the continued development of %1
Merci d'aider à poursuivre le développement de %1
-
+
&About
&Ã propos
-
+
Info about %1
à propos de %1
-
+
Search
Chercher
-
+
Mute volume
Couper le son
-
-
+
+
&Downloads
&Téléchargements
-
+
Show details about video downloads
Voir les détails à propos des téléchargements de la vidéo
-
+
&Download
&Téléchargement
-
+
Download the current video
Télécharger la vidéo en cours
-
+
+ &Subscribe to Channel
+ &S'abonner à la chaine
+
+
+
Share the current video using %1
Partager cette vidéo avec %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
&Fermer
-
+
&Float on Top
&Laisser au dessus
-
+
&Stop After This Video
&Arrêter après cette vidéo
-
+
&Report an Issue...
&Signaler un problème...
-
+
&Refine Search...
&Affiner la recherche...
-
+
More...
-
+ Plusâ¦
-
+
&Related Videos
-
+ Vidéos &Relatives
-
+
Watch videos related to the current one
+ Regarder des vidéos relatives à la vidéo courante
+
+
+
+ Open in &Browser...
-
+
&Application
&Application
-
+
Buy %1...
Acheter %1 â¦
-
+
&Playback
&Lecture
-
+
&Playlist
&Liste de lecture
-
+
&Video
&Vidéo
-
+
&View
&Vue
-
+
&Share
&Partager
-
+
&Help
&Aide
-
+
Press %1 to raise the volume, %2 to lower it
Appuyer sur %1 pour augmenter le volume, sur %2 pour le baisser
-
-
+
+
Opening %1
Ouverture de %1
-
+
Do you want to exit %1 with a download in progress?
Voulez-vous vraiment quitter %1 avec un téléchargement en cours ?
-
+
If you close %1 now, this download will be cancelled.
Si vous fermez %1 maintenant, ce téléchargement sera annulé.
-
+
Close and cancel download
Fermer et annuler le téléchargement
-
+
Wait for download to finish
Attendez la fin du téléchargement
-
+
Leave &Full Screen
Quitter le &mode plein écran
-
+
%1 version %2 is now available.
%1 version %2 est maintenant disponible
-
+
Remind me later
Me rappeler plus tard
-
+
Update
Mettre à jour
-
+
Error: %1
Erreur : %1
-
+
P&revious
P&récédent
-
+
Go back to the previous track
Aller à la piste précédente
-
+
&Compact Mode
&Mode compact
-
+
Open the &YouTube Page
Ouvrir la page &Youtube
-
+
Copy the YouTube &Link
Copier le &lien Youtube
-
+
Copy the Video Stream &URL
Copier l'&URL du flux vidéo
-
+
Find Video &Parts
Trouver les &parties de la vidéo
-
+
&Clear Recent Searches
&Effacer les recherches récentes
-
+
Make a &Donation
Faire un &Don
-
+
&Manually Start Playing
&
-
+
Manually start playing videos
Démarrer manuellement la lecture de vidéos
-
+
Choose your content location
-
+ Choisissez l'emplacement de votre contenu
-
+
&Play
&Jouer
-
+
Resume playback
Relancer la lecture
-
+
Remaining time: %1
Temps restant : %1
-
+
Volume at %1%
Volume à %1
-
+
Volume is muted
- Volume OFF
+ volume actif
-
+
Volume is unmuted
- Volume ON
+ Volume inactif
-
+
Maximum video definition set to %1
Résolution vidéo maximale fixée à %1
-
+
Your privacy is now safe
Votre confidentialité est maintenant respectée
-
+
Downloads complete
Téléchargements terminés
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Vous pouvez maintenant copier l'adresse Youtube dans une autre application
-
+
You can now paste the video stream URL into another application
Vous pouvez maintenant coller l'adresse du flux vidéo dans une autre application
-
+
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.
C'est juste la version démo de %1.
-
+
It allows you to test the application and see if it works for you.
Cela vous permet de tester l'application et voir si cela fonctionne pour vous.
-
+
Continue
Continuer
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
partie
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
épisode
-
+
Sent from %1
Envoyé par %1
-
+
+ Unsubscribe from %1
+ Se désabonner de %1
+
+
+
+ Subscribe to %1
+ S'abonner à %1
+
+
+
Get the full version
Obtenir la version complète
-
+
Downloading %1
%1 Téléchargement
@@ -885,17 +1004,17 @@
Skip This Version
- Sauter Cette Version
+ Sauter cette version
Remind Me Later
- Me Le Rappeler Plus Tard
+ Me le rappeler plus tard
Install Update
- Installer La Mise à jour
+ Installer la mise à jour
@@ -909,185 +1028,185 @@
PlaylistItemDelegate
-
+
%1 views
%1 vues
-
+
%1 of %2 (%3) â %4
-
+ %1 de %2 (%3) â %4
-
+
Preparing
-
+ Préparation
-
+
Failed
-
+ Ãchec
-
+
Completed
-
+ Terminé
-
+
Stopped
-
+ Arrêté
-
+
Stop downloading
-
+ Arrêter le téléchargement
-
+
Show in %1
-
+ Montrer dans %1
-
+
Open parent folder
-
+ Ouvrir le dossier parent
-
+
Restart downloading
-
+ Redémarrer le téléchargement
PlaylistModel
-
+
Searching...
Recherche en coursâ¦
-
+
Show %1 More
-
+ Afficher %1 de plus
-
+
No videos
Pas de vidéos
-
+
No more videos
-
+ Il n'y a plus de vidéos
RefineSearchWidget
-
+
Sort by
Trier par
-
+
Relevance
Pertinence
-
-
+
+
Date
Date
-
+
View Count
Nombre de vues
-
+
Rating
Note
-
+
Anytime
N'importe quand
-
+
Today
Aujourd'hui
-
+
7 Days
7 jours
-
+
30 Days
30 jours
-
+
Duration
Durée
-
-
+
+
All
Tous
-
+
Short
Court
-
+
Medium
Moyen
-
+
Long
Long
-
+
Less than 4 minutes
Inférieur à 4 minutes
-
+
Between 4 and 20 minutes
Entre 4 et 20 minutes
-
+
Longer than 20 minutes
Plus long que 20 minutes
-
+
Quality
Qualité
-
+
High Definition
Haute définition
-
+
720p or higher
720p ou plus
-
+
Done
Terminer
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Terminé
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Bienvenue sur <a href='%1'>%2</a>,
-
+
Get the full version
Obtenir la version complète
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Entrer
-
+
a keyword
un mot-clé
-
+
a channel
une chaîne
-
+
to start watching videos.
pour commencer à regarder des vidéos.
-
+
Watch
Regarder
-
+
Recent keywords
Derniers mots-clés
-
+
Recent channels
Chaînes récentes
@@ -1160,72 +1279,72 @@
SidebarHeader
-
-
+
+
&Back
&Retour
-
+
Forward to %1
-
+ Continuer à %1
-
+
Back to %1
-
+ Revenir à %1
SidebarWidget
-
+
Refine Search
Affiner la recherche
-
+
Did you mean: %1
- Vouliez-vous dire: %1
+ Vouliez-vous dire : %1
StandardFeedsView
-
+
Most Popular
-
+ Les plus populaires
-
- Featured
-
-
-
-
+
Most Shared
-
+ Les plus partagées
-
+
Most Discussed
-
+ Les plus commentées
-
+
Top Rated
-
+ Les mieux notées
+
+
+
+ All Time Popular
+ Les plus populaires de tous les temps
Video
-
+
Cannot get video stream for %1
Impossible d'obtenir le flux vidéo de %1
-
+
Network error: %1 for %2
Erreur réseau : %1 pour %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algérie
-
+
Argentina
-
+ Argentine
-
+
Australia
-
+ Australie
-
+
Belgium
-
+ Belgique
-
+
Brazil
-
+ Brésil
-
+
Canada
-
+ Canada
-
+
Chile
-
+ Chili
-
+
Colombia
-
+ Colombie
-
+
Czech Republic
-
+ République Tchèque
-
+
Egypt
-
+ Ãgypte
-
+
France
-
+ France
-
+
Germany
-
+ Allemagne
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Grèce
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ Hongrie
-
+
India
-
+ Inde
-
+
Indonesia
-
+ Indonésie
-
+
Ireland
-
+ Irelande
-
+
Israel
-
+ Israël
-
+
Italy
-
+ Italie
-
+
Japan
-
+ Japon
-
+
Jordan
-
+ Jordanie
-
+
Kenya
-
+ Kenya
-
+
Malaysia
-
+ Malaisie
-
+
Mexico
-
+ Mexique
-
+
Morocco
-
+ Maroc
-
+
Netherlands
-
+ Pays-Bas
-
+
New Zealand
-
+ Nouvelle Zélande
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Pérou
-
+
Philippines
-
+ Philippines
-
+
Poland
-
+ Pologne
-
+
Russia
-
+ Russie
-
+
Saudi Arabia
-
+ Arabie Saoudite
-
+
Singapore
-
+ Singapour
-
+
South Africa
-
+ Afrique du Sud
-
+
South Korea
-
+ Corée du Sud
-
+
Spain
-
+ Espagne
-
+
Sweden
-
+ Suède
-
+
Taiwan
-
+ Taïwan
-
+
Tunisia
-
+ Tunisie
-
+
Turkey
-
+ Turquie
-
+
Uganda
-
+ Ouganda
-
+
United Arab Emirates
-
+ Ãmirats Arabes Unis
-
+
United Kingdom
-
+ Royaume Uni
-
+
Yemen
-
+ Yémen
-
+
Worldwide
-
+ Monde entier
\ No newline at end of file
diff --git a/locale/gl.ts b/locale/gl.ts
new file mode 100644
index 0000000..3b60606
--- /dev/null
+++ b/locale/gl.ts
@@ -0,0 +1,1596 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Existe vida máis aló do navegador!
+
+
+
+ Version %1
+ Versión %1
+
+
+
+ Licensed to: %1
+ Baixo licenza por: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 é Software libre, mais o seu desenvolvemento leva un tempo precioso.
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Faga unha <a href='%1'>doazón</a> para axudar na continuación do desenvolvemento de %2.
+
+
+
+ You may want to try my other apps as well:
+ Pode querer probar tamén outros aplicativos meus:
+
+
+
+ %1, a YouTube music player
+ %1, un reprodutor de música de YouTube
+
+
+
+ %1, a music player
+ %1, un reprodutor de música
+
+
+
+ Translate %1 to your native language using %2
+ Traducir %1 ao seu idioma empregando %2
+
+
+
+ Icon designed by %1.
+ Icona deseñada por %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Publicado baixo a <a href='%1'>Licenza pública Xeral GNU</a>
+
+
+
+ &Close
+ &Pechar
+
+
+
+ About
+ Sobre
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ O que vostede sempre quixo saber sobre %1 e nunca se atreveu a preguntar
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ Introduce os detalles da túa licenza
+
+
+
+ &Email:
+ &Correo electrónico:
+
+
+
+ &Code:
+ &Código:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Licenza %1
+
+
+
+ This demo has expired.
+ Esta demo caducou.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ A versión completa permÃtelle descargar vÃdeos de máis de %1 minutos e ver vÃdeos sen interrupcións.
+
+
+
+ Without a license, the application will expire in %1 days.
+ Sen licenza o aplicativo expira en %1 dÃas.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Ao comprar a versión completa, tamén vai apoiar o traballo arreo que puxen en crear %1.
+
+
+
+ Use Demo
+ Usar a demostración
+
+
+
+ Enter License
+ Introducir a licenza
+
+
+
+ Buy License
+ Comprar a licenza
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Por %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Todos os vÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos non vistos
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Marcar todos como vistos
+
+
+
+ Show Updated
+ Amosar a actualización
+
+
+
+ Name
+ Nome
+
+
+
+ Last Updated
+ Ãltima actualización
+
+
+
+ Last Added
+ Ãltimo engadido
+
+
+
+ Last Watched
+ Ãltimo visto
+
+
+
+ Most Watched
+ Máis vistos
+
+
+
+ Sort by
+ Ordenar por
+
+
+
+ All Videos
+ Todos os vÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos non vistos
+
+
+
+ There are no updated subscriptions at this time.
+ Neste momento non ten subscricións de actualización.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Non ten subscricións. Utilice o sÃmbolo da estrela para subscribirse ás canles.
+
+
+
+ ClearButton
+
+
+ Clear
+ Limpar
+
+
+
+ DownloadItem
+
+
+ bytes
+ bytes
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ bytes/seg
+
+
+
+ KB/sec
+ KB/seg
+
+
+
+ MB/sec
+ MB/seg
+
+
+
+ seconds
+ segundos
+
+
+
+ minutes
+ minutos
+
+
+
+ %4 %5 remaining
+ %4 %5 restantes
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Isto é só a versión demo de %1.
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Só se poden descargar vÃdeos curtos de menos de %1 minutos para que poida probar a utilidade de descargas.
+
+
+
+ Continue
+ Continuar
+
+
+
+ Get the full version
+ Obter a versión completa
+
+
+
+ %1 downloaded in %2
+ %1 descargado en %2
+
+
+
+ Download finished
+ Rematou a descarga
+
+
+
+ %n Download(s)
+ %n Descarga %n Descargas
+
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Cambiar a localización...
+
+
+
+ Choose the download location
+ Escolla a localización da descarga
+
+
+
+ Download location changed.
+ Cambiada a localización da descarga.
+
+
+
+ Current downloads will still go in the previous location.
+ A descarga actual aÃnda se fai na localización anterior.
+
+
+
+ Downloading to: %1
+ Descargando en: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Descargas
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ Descargando a actualización...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Reproducir
+
+
+
+ Pause
+ Deter
+
+
+
+ Play/Pause
+ Reproducir/deter
+
+
+
+ Stop
+ Parar
+
+
+
+ Stop playing after current track
+ Parar a reprodución despois da pista actual
+
+
+
+ Next track
+ Seguinte pista
+
+
+
+ Previous track
+ Pista anterior
+
+
+
+ Increase volume
+ Aumentar volume
+
+
+
+ Decrease volume
+ DiminuÃr volume
+
+
+
+ Mute
+ Silenciar
+
+
+
+ Seek forward
+ Buscar cara adiante
+
+
+
+ Seek backward
+ Buscar cara atrás
+
+
+
+ HomeView
+
+
+ Search
+ Buscar
+
+
+
+ Find videos and channels by keyword
+ Atopar vÃdeos e canles por palabra clave
+
+
+
+ Browse
+ Examinar
+
+
+
+ Browse videos by category
+ Examinar vÃdeos por categorÃa
+
+
+
+ Subscriptions
+ Subscricións
+
+
+
+ Channel subscriptions
+ Subscricións a canles
+
+
+
+ Make yourself comfortable
+ SÃntase cómodo
+
+
+
+ LoadingWidget
+
+
+ Error
+ Erro
+
+
+
+ MainWindow
+
+
+ &Stop
+ &Parar
+
+
+
+ Stop playback and go back to the search view
+ Parara a reprodución e volver á vista de busca
+
+
+
+ S&kip
+ &Saltar
+
+
+
+ Skip to the next video
+ Saltar ao seguinte vÃdeo
+
+
+
+
+ &Pause
+ &Deter
+
+
+
+
+ Pause playback
+ Deter a reprodución
+
+
+
+ &Full Screen
+ &Pantalla completa
+
+
+
+ Go full screen
+ Ir á pantalla completa
+
+
+
+ Hide the playlist and the toolbar
+ Agochar a lista de reprodución e a barra de tarefas
+
+
+
+ Go to the YouTube video page and pause playback
+ Ir á páxina de vÃdeos YouTube e por en pausa a reprodución
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Copiar a ligazón actual de vÃdeo de YouTube no portapapeis
+
+
+
+ Copy the current video stream URL to the clipboard
+ Copiar o URL actual do fluxo de vÃdeo no portapapeis
+
+
+
+ Find other video parts hopefully in the right order
+ Buscar pezas doutro vÃdeo agardando sexan na orde correcta
+
+
+
+ &Remove
+ &Retirar
+
+
+
+ Remove the selected videos from the playlist
+ Retirar os vÃdeos seleccionados da lista de reprodución
+
+
+
+ Move &Up
+ Mover cara &arriba
+
+
+
+ Move up the selected videos in the playlist
+ Mover cara arriba os vÃdeos seleccionados na lista de reprodución
+
+
+
+ Move &Down
+ Mover cara a&baixo
+
+
+
+ Move down the selected videos in the playlist
+ Mover cara abaixo os vÃdeos seleccionados na lista de reprodución
+
+
+
+ Clear the search history. Cannot be undone.
+ Limpar o historial de buscas. Non se pode desfacer.
+
+
+
+ &Quit
+ &SaÃr
+
+
+
+ Bye
+ Deica logo
+
+
+
+ &Website
+ Sitio &web
+
+
+
+ %1 on the Web
+ %1 na web
+
+
+
+ Please support the continued development of %1
+ Por favor apoie o desenvolvemento continuo de %1
+
+
+
+ &About
+ &Sobre
+
+
+
+ Info about %1
+ Información acerca de %1
+
+
+
+ Search
+ Buscar
+
+
+
+ Mute volume
+ Silenciar o volume
+
+
+
+
+ &Downloads
+ &Descargas
+
+
+
+ Show details about video downloads
+ Mostrar os detalles sobre as descargas de vÃdeo
+
+
+
+ &Download
+ &Descarga
+
+
+
+ Download the current video
+ Descargando o vÃdeo actual
+
+
+
+ &Subscribe to Channel
+ &Subscribirse á canle
+
+
+
+ Share the current video using %1
+ Compartir o vÃdeo actual empregando %1
+
+
+
+ &Email
+ &Correo-e
+
+
+
+ Email
+ Correo-e
+
+
+
+ &Close
+ &Pechar
+
+
+
+ &Float on Top
+ &Flotante e arriba
+
+
+
+ &Stop After This Video
+ &Deter despois deste vÃdeo
+
+
+
+ &Report an Issue...
+ &Informar dun erro...
+
+
+
+ &Refine Search...
+ &Afinar a busca...
+
+
+
+ More...
+ Máis...
+
+
+
+ &Related Videos
+ VÃdeos &relacionados
+
+
+
+ Watch videos related to the current one
+ Ver vÃdeos relacionados co actual
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ &Aplicativo
+
+
+
+ Buy %1...
+ Mercar %1...
+
+
+
+ &Playback
+ &Reproducir
+
+
+
+ &Playlist
+ &Lista de reprodución
+
+
+
+ &Video
+ &VÃdeo
+
+
+
+ &View
+ &Ver
+
+
+
+ &Share
+ &Compartir
+
+
+
+ &Help
+ A&xuda
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Prema %1 para aumentar o volume, %2 para diminuÃlo
+
+
+
+
+ Opening %1
+ Abrindo %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ Desexa saÃr de %1 cunha descarga en proceso?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Se pecha %1 agora, esta descarga vai seren cancelada.
+
+
+
+ Close and cancel download
+ Pechar e cancelar a descarga
+
+
+
+ Wait for download to finish
+ Agardar a que remate a descarga
+
+
+
+ Leave &Full Screen
+ Abandonar a &pantalla completa
+
+
+
+ %1 version %2 is now available.
+ %1 versión %2 xa está dispoñÃbel.
+
+
+
+ Remind me later
+ Lembrar máis adiante
+
+
+
+ Update
+ Actualizar
+
+
+
+ Error: %1
+ Produciuse un erro: %1
+
+
+
+ P&revious
+ A&nterior
+
+
+
+ Go back to the previous track
+ Ir á pista anterior
+
+
+
+ &Compact Mode
+ Modo &compacto
+
+
+
+ Open the &YouTube Page
+ Abrir a páxina de &YouTube
+
+
+
+ Copy the YouTube &Link
+ Copiar a &ligazón de YouTube
+
+
+
+ Copy the Video Stream &URL
+ Copiar o &URL do fluxo de vÃdeo
+
+
+
+ Find Video &Parts
+ Atopar &partes de vÃdeos
+
+
+
+ &Clear Recent Searches
+ &Limpar as buscas recentes
+
+
+
+ Make a &Donation
+ Facer unha &doazón
+
+
+
+ &Manually Start Playing
+ Comezar a reprodución &manualmente
+
+
+
+ Manually start playing videos
+ Comezar manualmente a reprodución dos vÃdeos
+
+
+
+ Choose your content location
+ Escolla a localización do seu contido
+
+
+
+ &Play
+ &Reproducir
+
+
+
+ Resume playback
+ Continuar a reprodución
+
+
+
+ Remaining time: %1
+ Tempo restante: %1
+
+
+
+ Volume at %1%
+ Volume ao %1%
+
+
+
+ Volume is muted
+ O volume está silenciado
+
+
+
+ Volume is unmuted
+ O volume non está silenciado
+
+
+
+ Maximum video definition set to %1
+ Resolución máxima de vÃdeo fixada en %1
+
+
+
+ Your privacy is now safe
+ A súa intimidade agora está segura
+
+
+
+ Downloads complete
+ Descargas completadas
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Agora pode pegar a ligazón de YouTube noutro aplicativo
+
+
+
+ You can now paste the video stream URL into another application
+ Agora pode pegar o URL do fluxo de vÃdeo noutro aplicativo
+
+
+
+ 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.
+ Isto é só a versión demo de %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ PermÃtelle probar o aplicativo e comprobar se vai ao seu xeito.
+
+
+
+ Continue
+ Continuar
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ de
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ peza
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ episodio
+
+
+
+ Sent from %1
+ Enviado desde %1
+
+
+
+ Unsubscribe from %1
+ Darse de baixa de %1
+
+
+
+ Subscribe to %1
+ Subscribirse a %1
+
+
+
+ Get the full version
+ Obter a versión completa
+
+
+
+ Downloading %1
+ Descargando %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ Hai unha nova versión de %1 dispoñible!
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 está agora dispoñible. Tes %3.
+
+
+
+ Would you like to download it now?
+ Queres descargala agora?
+
+
+
+ Skip This Version
+ Saltar esta versión
+
+
+
+ Remind Me Later
+ Acórdamo máis adiante
+
+
+
+ Install Update
+ Instalar a actualización
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Pegar
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %1 vistas
+
+
+
+ %1 of %2 (%3) â %4
+ %1 de %2 (%3) â %4
+
+
+
+ Preparing
+ Preparando
+
+
+
+ Failed
+ Produciuse un fallo
+
+
+
+ Completed
+ Completada
+
+
+
+ Stopped
+ Detida
+
+
+
+ Stop downloading
+ Deter a descarga
+
+
+
+ Show in %1
+ Mostrar en %1
+
+
+
+ Open parent folder
+ Abrir o cartafol pai
+
+
+
+ Restart downloading
+ Reiniciar a descarga
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Buscando...
+
+
+
+ Show %1 More
+ Mostrar %1 máis
+
+
+
+ No videos
+ Non hai vÃdeos
+
+
+
+ No more videos
+ Non hai máis vÃdeos
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ Ordenar por
+
+
+
+ Relevance
+ Relevancia
+
+
+
+
+ Date
+ Data
+
+
+
+ View Count
+ Contador de vistas
+
+
+
+ Rating
+ Cualificación
+
+
+
+ Anytime
+ Calquera momento
+
+
+
+ Today
+ Hoxe
+
+
+
+ 7 Days
+ 7 dÃas
+
+
+
+ 30 Days
+ 30 dÃas
+
+
+
+ Duration
+ Duración
+
+
+
+
+ All
+ Todo
+
+
+
+ Short
+ Curto
+
+
+
+ Medium
+ Medio
+
+
+
+ Long
+ Longo
+
+
+
+ Less than 4 minutes
+ Menos de 4 minutos
+
+
+
+ Between 4 and 20 minutes
+ Entre 4 e 20 minutos
+
+
+
+ Longer than 20 minutes
+ Máis de 20 minutos
+
+
+
+ Quality
+ Calidade
+
+
+
+ High Definition
+ Alta definición
+
+
+
+ 720p or higher
+ 720p ou máis
+
+
+
+ Done
+ Feito
+
+
+
+ RegionsView
+
+
+ Done
+ Feito
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Buscar
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ Benvido a <a href='%1'>%2</a,
+
+
+
+ Get the full version
+ Obter a versión completa
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Introduza
+
+
+
+ a keyword
+ unha palabra clave
+
+
+
+ a channel
+ unha canle
+
+
+
+ to start watching videos.
+ para comezar a ver vÃdeos.
+
+
+
+ Watch
+ Ver
+
+
+
+ Recent keywords
+ Palabra clave recente
+
+
+
+ Recent channels
+ Canles recentes
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ &Atrás
+
+
+
+ Forward to %1
+ Ir a %1
+
+
+
+ Back to %1
+ Volver a %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ Afinar a busca
+
+
+
+ Did you mean: %1
+ Quizás quixo dicir: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Máis popular
+
+
+
+ Most Shared
+ Máis compartido
+
+
+
+ Most Discussed
+ Máis discutido
+
+
+
+ Top Rated
+ Máis destacados
+
+
+
+ All Time Popular
+ O máis popular de sempre
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Non é posÃbel obter o fluxo de vÃdeo de %1
+
+
+
+ Network error: %1 for %2
+ Produciuse un erro na rede: %1 por %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ Alxeria
+
+
+
+ Argentina
+ Arxentina
+
+
+
+ Australia
+ Australia
+
+
+
+ Belgium
+ Bélxica
+
+
+
+ Brazil
+ Brasil
+
+
+
+ Canada
+ Canada
+
+
+
+ Chile
+ Chile
+
+
+
+ Colombia
+ Colombia
+
+
+
+ Czech Republic
+ República Checa
+
+
+
+ Egypt
+ Exipto
+
+
+
+ France
+ Francia
+
+
+
+ Germany
+ Alemania
+
+
+
+ Ghana
+ Ghana
+
+
+
+ Greece
+ Grecia
+
+
+
+ Hong Kong
+ Hong Kong
+
+
+
+ Hungary
+ HungrÃa
+
+
+
+ India
+ India
+
+
+
+ Indonesia
+ Indonesia
+
+
+
+ Ireland
+ Irlanda
+
+
+
+ Israel
+ Israel
+
+
+
+ Italy
+ Italia
+
+
+
+ Japan
+ Xapón
+
+
+
+ Jordan
+ Xordania
+
+
+
+ Kenya
+ Quenia
+
+
+
+ Malaysia
+ Malaisia
+
+
+
+ Mexico
+ México
+
+
+
+ Morocco
+ Marrocos
+
+
+
+ Netherlands
+ Holanda
+
+
+
+ New Zealand
+ Nova Celandia
+
+
+
+ Nigeria
+ Nixeria
+
+
+
+ Peru
+ Perú
+
+
+
+ Philippines
+ Filipinas
+
+
+
+ Poland
+ Polonia
+
+
+
+ Russia
+ Rusia
+
+
+
+ Saudi Arabia
+ Arabia SaudÃ
+
+
+
+ Singapore
+ Singapur
+
+
+
+ South Africa
+ Suráfrica
+
+
+
+ South Korea
+ Corea do Sur
+
+
+
+ Spain
+ España
+
+
+
+ Sweden
+ Suecia
+
+
+
+ Taiwan
+ Taiwan
+
+
+
+ Tunisia
+ Tunisia
+
+
+
+ Turkey
+ TurquÃa
+
+
+
+ Uganda
+ Uganda
+
+
+
+ United Arab Emirates
+ Emiratos Ãrabes Unidos
+
+
+
+ United Kingdom
+ Reino Unido
+
+
+
+ Yemen
+ Iemen
+
+
+
+ Worldwide
+ Todo o mundo
+
+
+
\ No newline at end of file
diff --git a/locale/he_IL.ts b/locale/he_IL.ts
index 14bd9e5..94153f9 100644
--- a/locale/he_IL.ts
+++ b/locale/he_IL.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
×ש ×××× ××××¥ ××פ×פ×!
-
+
Version %1
××¨×¡× %1
-
+
Licensed to: %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.
-
+
You may want to try my other apps as well:
×××××¥ ×× ×¡×ת ××שת×ש ×ש×ר ×××ש×××× ×©××:
-
+
%1, a YouTube music player
%1, × ×× ×××××§× ×××××××
-
+
%1, a music player
%1, × ×× ××××ק×
-
+
Translate %1 to your native language using %2
× ××ª× ×תר×× ×ת %1 ×שפת ××× ×××צע×ת %2
-
+
Icon designed by %1.
×ס×× ×¢××¦× ×¢× ××× %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
×ת×× × ×©×××¨×¨× ×ª×ת ×ª× ×× <a href='%1'>×ר×ש××× ×צ××××¨× ××××× ×©× GNU</a>
-
+
&Close
&ס××ר×
-
+
About
×¢× ××××ת
-
+
What you always wanted to know about %1 and never dared to ask
×× ×©×ª××× ×¨×¦×ת ××עת ×¢× %1 ××× ××¢×ת ×ש×××
@@ -78,17 +78,17 @@
Enter your License Details
-
+ × × ××××× ×ת פר×× ×ר×ש×× ×©××
&Email:
-
+ &××××´×:
&Code:
-
+ &ק××:
@@ -111,7 +111,7 @@
Without a license, the application will expire in %1 days.
-
+ ××× ×¨×ש××× ×××ש×× ×פ×× ××¢×× %1 ××××.
@@ -126,11 +126,100 @@
Enter License
-
+ ××× ×ª ר×ש×××
Buy License
+ ר××שת ר×ש×××
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
×ת××
-
+
KB
ק״×
-
+
MB
××´×
-
+
bytes/sec
×ת××/×©× ×××
-
+
KB/sec
ק״×/×©× ×××
-
+
MB/sec
××´×/×©× ×××
-
+
seconds
×©× ××ת
-
+
minutes
×ק×ת
-
+
%4 %5 remaining
%4 %5 × ×תר×
@@ -193,37 +282,37 @@
DownloadManager
-
+
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
ק××ת ×××¨×¡× ×××××
-
+
%1 downloaded in %2
%1 ×תק×× ××××ר×ת ×©× %2
-
+
Download finished
×××ר×× ××ש×××
-
+
%n Download(s)
××ר×× ××ת %n ××ר××ת
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
ש×× ×× ×××ק××...
-
+
Choose the download location
× × ××××ר ×ת ××ק×× ×××ר××
-
+
Download location changed.
××ק×× ×××ר×× ××©×ª× ×.
-
+
Current downloads will still go in the previous location.
×××ר×× ×× ××××ת ×¢×××× ×ª×ש×ר ×××ק×× ×ק×××.
-
+
Downloading to: %1
×ת×צעת ××ר×× ××: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
××ר××ת
@@ -270,68 +359,68 @@
Downloading update...
-
+ ××¢×××× ×תק××...
GlobalShortcuts
-
+
Play
× ××× ×
-
+
Pause
×ש×××
-
+
Play/Pause
× ××× ×/×ש×××
-
+
Stop
עצ×ר×
-
+
Stop playing after current track
עצ×רת ×× ××× × ×××ר ×רצ××¢× ×× ××××ת
-
+
Next track
×רצ××¢× ××××
-
+
Previous track
×רצ××¢× ×§×××ת
-
+
Increase volume
×××רת עצ×ת ×ש××¢
-
+
Decrease volume
×× ××ת עצ×ת ×ש××¢
-
+
Mute
×שתק×
-
+
Seek forward
סר××§× ×§××××
-
+
Seek backward
סר××§× ×××ר×
@@ -339,27 +428,37 @@
HomeView
-
+
Search
××פ×ש
-
+
Find videos and channels by keyword
-
+ ××פ×ש סר××× × ××××× ×ער×צ×× ××¤× ×××ת ×פת×
-
+
Browse
-
+ ×¢×××
-
+
Browse videos by category
+ ×¢××× ×ק××¢× ××××× ××¤× ×§×××ר××
+
+
+
+ Subscriptions
-
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
ש×× ×× ×××ת×
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
ש××××
@@ -375,426 +474,436 @@
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
××¢×ר ×××¡× ×××
-
+
Hide the playlist and the toolbar
×סתרת רש××ת ××ש××¢× ×סר×× ×××××
-
+
Go to the YouTube video page and pause playback
××¢×ר ××¢××× ××××××× ×Ö¾YouTube ××ש×××ת ×× ××× ×.
-
+
Copy the current video YouTube link to the clipboard
×עתקת ×ק×ש×ר ×× ××××××× ×× ×××× ×× ××× ××××ר××
-
+
Copy the current video stream URL to the clipboard
×עתקת ×ת××ת ת×ר×× ××××××× ×× ××× ××××ר××
-
+
Find other video parts hopefully in the right order
××פ×ש ××ק×× ××ר×× ×תק××× ×©×× ×ס×ר ×× ×××
-
+
&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 the search history. Cannot be undone.
×××קת ××ס××ר××ת ×××פ×ש. ×× × ××ª× ××××
-
+
&Quit
×&צ×××
-
+
Bye
××תר××ת
-
+
&Website
&×תר ×××× ××¨× ×
-
+
%1 on the Web
%1 ×××× ××¨× ×
-
+
Please support the continued development of %1
×× × ×ª××× ××××©× ×פ×ת×× ×©× %1
-
+
&About
&×¢× ××××ת
-
+
Info about %1
××××¢ ××××ת %1
-
+
Search
××פ×ש
-
+
Mute volume
×שתקת ×ש××¢
-
-
+
+
&Downloads
××&ר××ת
-
+
Show details about video downloads
×צ×ת פר××× ×¢× ××××ת ××ר××ת ×××××
-
+
&Download
××&ר××
-
+
Download the current video
××ר×ת סר××× ××××××× ×× ××××
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
ש×ת××£ ××××××× ×× ×××× ××¨× %1
-
+
&Email
&××××´×
-
+
Email
××××´×
-
+
&Close
&ס××ר×
-
+
&Float on Top
&צ××¤× ××××¢××
-
+
&Stop After This Video
×&עצ×ר ×××ר ××××× ××
-
+
&Report an Issue...
&××××× ×¢× ×ª×§××...
-
+
&Refine Search...
&ש×פ×ר ×××פ×ש...
-
+
More...
-
+ ×¢××...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&××ש××
-
+
Buy %1...
ר××שת %1...
-
+
&Playback
× &××× ×
-
+
&Playlist
&רש××ת ×ש××¢×
-
+
&Video
&×××××
-
+
&View
&צפ×××
-
+
&Share
&ש×ת××£
-
+
&Help
&×¢×ר×
-
+
Press %1 to raise the volume, %2 to lower it
× ××ª× ×××××¥ ×¢× %1 ××× ×××××ר ×ת עצ×ת ×ש××¢, %2 ××× ××× ××× ××ת×
-
-
+
+
Opening %1
%1 × ×¤×ª×
-
+
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
×ש ×××ת×× ×ס××× ×××ר××
-
+
Leave &Full Screen
×צ××× ××&×¡× ×××
-
+
%1 version %2 is now available.
%1 ×××¨×¡× %2 ×××× ×עת.
-
+
Remind me later
×××××ר ×× ××××ר ××תר
-
+
Update
×¢××××
-
+
Error: %1
ש××××: %1
-
+
P&revious
×&ק×××
-
+
Go back to the previous track
×××¨× ×רצ××¢× ×ק×××ת
-
+
&Compact Mode
×&×¦× ×ס××× ×
-
+
Open the &YouTube Page
פת××ת ××¢××× ×&××××××
-
+
Copy the YouTube &Link
×עתקת ×&ק×ש×ר ×××××××
-
+
Copy the Video Stream &URL
×עתקת ×ת××ת ת&×ר×× ×××××××
-
+
Find Video &Parts
××פ×ש ק&××¢× ×××××
-
+
&Clear Recent Searches
&× ×ק×× ×××פ×ש×× ×××ר×× ××
-
+
Make a &Donation
×&×שת תר×××
-
+
&Manually Start Playing
×ת××ת × ××× × ×&×× ×ת
-
+
Manually start playing videos
×ת××× ××× ×ת ×× ××× ×ª ק××¢× ×××××××
-
+
Choose your content location
-
+
&Play
&× ××× ×
-
+
Resume playback
×××©× ×× ××× ×
-
+
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 complete
×××ר××ת ××ש×××
@@ -802,65 +911,75 @@
MediaView
-
+
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.
×ק×ש×ר ×××× ×ª×§×£ ×××× ××××× ××××.
-
+
This is just the demo version of %1.
×××× ×¨×§ ×רסת ×××××× ×©× %1.
-
+
It allows you to test the application and see if it works for you.
××¨×¡× ×× ××פשרת ×× ××××× ×ת ×××ש×× ××ר××ת ××× ××× ×ת××× ×צר×××.
-
+
Continue
××ש×
-
+
of
Used in video parts, as in '2 of 3'
×ת××
-
+
part
This is for video parts, as in 'Cool video - part 1'
××ק
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
פרק
-
+
Sent from %1
× ×©×× ××¨× %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
ק××ת ×××¨×¡× ×××××
-
+
Downloading %1
%1 ×תק××
@@ -880,22 +999,22 @@
Would you like to download it now?
-
+ ××× ×רצ×× × ×××ר×× ××ת ×עת?
Skip This Version
-
+ ×תע×××ת ×××¨×¡× ××
Remind Me Later
-
+ ×××××ר ×× ××××ר ××תר
Install Update
-
+ ××ª×§× ×ª ×¢××××
@@ -903,58 +1022,58 @@
Paste
-
+ ×××ק×
PlaylistItemDelegate
-
+
%1 views
%1 צפ××ת
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
-
+
Completed
-
+
Stopped
-
+
Stop downloading
-
+
Show in %1
-
+
Open parent folder
-
+
Restart downloading
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
×××××× ××פ×ש...
-
+
Show %1 More
×צ×ת %1 × ×ספ××
-
+
No videos
××× ×¡×¨××× ××
-
+
No more videos
××× ×¢×× ×¡×¨××× ××
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
ס×××ר ×פ×
-
+
Relevance
ר×××× ×××ת
-
-
+
+
Date
ת×ר××
-
+
View Count
××× × ×¦×¤××ת
-
+
Rating
××ר××
-
+
Anytime
××× ××× ×©×××
-
+
Today
××××
-
+
7 Days
7 ××××
-
+
30 Days
30 ××××
-
+
Duration
×ש×
-
-
+
+
All
××××
-
+
Short
קצר
-
+
Medium
××× ×× ×
-
+
Long
×ר××
-
+
Less than 4 minutes
פ××ת ×Ö¾4 ×ק×ת
-
+
Between 4 and 20 minutes
××× 4 ×Ö¾20 ×ק×ת
-
+
Longer than 20 minutes
×××¢×× ×Ö¾20 ×ק×ת
-
+
Quality
××××ת
-
+
High Definition
×××× × ××××× (HD)
-
+
720p or higher
720p ×××¢××
-
+
Done
×סת×××
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
×סת×××
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
×ר×× ×××× ×× <a href='%1'>%2</a>,
-
+
Get the full version
ק××ת ×××¨×¡× ×××××
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
××× ×
-
+
a keyword
×××ת ×פת×
-
+
a channel
ער××¥
-
+
to start watching videos.
××× ××ת××× ×צפ×ת ×סר××× ××.
-
+
Watch
צפ×××
-
+
Recent keywords
××××ת ××¤×ª× ××ר×× ×ת
-
+
Recent channels
ער×צ×× ××ר×× ××
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
-
+
Forward to %1
-
+
Back to %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
ש×פ×ר ×××פ×ש
-
+
Did you mean: %1
××× ×××× ×ª× ×××ת×: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
×× × ××ª× ×ק×× ×ת ת×ר×× ××××××× ×¢××ר %1
-
+
Network error: %1 for %2
ש×××ת רשת: %1 ×¢××ר %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ ×××׳×ר
-
+
Argentina
-
+ ×ר×× ××× ×
-
+
Australia
-
+ ××ס×ר×××
-
+
Belgium
-
+ ×××××
-
+
Brazil
-
+ ×ר×××
-
+
Canada
-
+ ×§× ××
-
+
Chile
-
+ צ׳×××
-
+
Colombia
-
+ ק×××××××
-
+
Czech Republic
-
+ ×רפ×××××§× ×צ׳××ת
-
+
Egypt
-
+ ×צר×××
-
+
France
-
+ צרפת
-
+
Germany
-
+ ×ר×× ××
-
+
Ghana
-
+ ××× ×
-
+
Greece
-
+ ××××
-
+
Hong Kong
-
+ ××× × ×§×× ×
-
+
Hungary
-
+ ××× ×ר××
-
+
India
-
+ ××××
-
+
Indonesia
-
+ ××× ××× ×××
-
+
Ireland
-
+ ××ר×× ×
-
+
Israel
-
+ ×שר××
-
+
Italy
-
+ ××××××
-
+
Japan
-
+ ×פ×
-
+
Jordan
-
+ ×ר××
-
+
Kenya
-
+ ×§× ××
-
+
Malaysia
-
+ ×××××
-
+
Mexico
-
+ ×קס×ק×
-
+
Morocco
-
+ ×ר×ק×
-
+
Netherlands
-
+ ×××× ×
-
+
New Zealand
-
+ × ×× ×××× ×
-
+
Nigeria
-
+ × ××ר××
-
+
Peru
-
+ פר×
-
+
Philippines
-
+ ×פ×××פ×× ××
-
+
Poland
-
+ פ××××
-
+
Russia
-
+ ר×ס××
-
+
Saudi Arabia
-
+ ×¢×¨× ×סע×××ת
-
+
Singapore
-
+ ס×× ×פ×ר
-
+
South Africa
-
+ ×ר×× ×פר×ק×
-
+
South Korea
-
+ ×ר×× ×§×ר×××
-
+
Spain
-
+ ספר×
-
+
Sweden
-
+ ש××××
-
+
Taiwan
-
+ ××××××
-
+
Tunisia
-
+ ת×× ×ס
-
+
Turkey
-
+ ××רק××
-
+
Uganda
-
+ ×××× ××
-
+
United Arab Emirates
-
+ ××××× × ×¡×××××ת ער×
-
+
United Kingdom
-
+ ×××××× ××××××ת/×× ××××
-
+
Yemen
-
+ ת×××
-
+
Worldwide
-
+ ×× ××¢×××
\ No newline at end of file
diff --git a/locale/hr.ts b/locale/hr.ts
deleted file mode 100644
index 5422ef0..0000000
--- a/locale/hr.ts
+++ /dev/null
@@ -1,1476 +0,0 @@
-
-UTF-8
-
- AboutView
-
-
- There's life outside the browser!
- Život postoji i van browsera!
-
-
-
- Version %1
- Verzija %1
-
-
-
- Licensed to: %1
-
-
-
-
- %1 is Free Software but its development takes precious time.
- %1 je besplatan program ali njegov razvoj zahtjeva dragocjeno vrijeme.
-
-
-
- Please <a href='%1'>donate</a> to support the continued development of %2.
- VaÅ¡a <a href='%1'>donacija</a> Äe pomoÄi daljnjem razvoju %2.
-
-
-
- You may want to try my other apps as well:
- Možete isprobati i moje ostale aplikacije:
-
-
-
- %1, a YouTube music player
- %1, player glazbe sa YouTube
-
-
-
- %1, a music player
- %1, za reprodukciju glazbe
-
-
-
- Translate %1 to your native language using %2
- Prevedite %1 na svoj jezik koristeÄi %2
-
-
-
- Icon designed by %1.
- Dizajn ikone %1.
-
-
-
- Released under the <a href='%1'>GNU General Public License</a>
- Izdano pod <a href='%1'>GNU General Public License</a>
-
-
-
- &Close
- &Zatvori
-
-
-
- About
- O programu
-
-
-
- What you always wanted to know about %1 and never dared to ask
- Sve što ste željeli znati o %1 a niste se usudili pitati
-
-
-
- ActivationDialog
-
-
- Enter your License Details
-
-
-
-
- &Email:
-
-
-
-
- &Code:
-
-
-
-
- ActivationView
-
-
- Please license %1
- Molimo registrirajte %1
-
-
-
- This demo has expired.
- Vaša demo verzija je istekla.
-
-
-
- The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
-
-
-
- Without a license, the application will expire in %1 days.
-
-
-
-
- By purchasing the full version, you will also support the hard work I put into creating %1.
- Kupnjom pune verzije podržati Äete i težak rad uložen u izradu %1.
-
-
-
- Use Demo
- Koristi demo verziju.
-
-
-
- Enter License
-
-
-
-
- Buy License
-
-
-
-
- ClearButton
-
-
- Clear
- Obriši
-
-
-
- DownloadItem
-
-
- bytes
- bajtova
-
-
-
- KB
- KB
-
-
-
- MB
- MB
-
-
-
- bytes/sec
- bajtova/sec
-
-
-
- KB/sec
- KB/sec
-
-
-
- MB/sec
- MB/sec
-
-
-
- seconds
- sekundi
-
-
-
- minutes
- minuta
-
-
-
- %4 %5 remaining
- %4 %5 preostalo
-
-
-
- DownloadManager
-
-
- This is just the demo version of %1.
- Ovo je samo demo verzija %1.
-
-
-
- It can only download videos shorter than %1 minutes so you can test the download functionality.
- Može preuzeti samo video kraÄi od %1 minuta tako da možete testirati moguÄnost preuzimanja.
-
-
-
- Continue
- Nastavi
-
-
-
- Get the full version
- Preuzmi punu verziju
-
-
-
- %1 downloaded in %2
- %1 preuzet u %2
-
-
-
- Download finished
- Preuzimanje završeno
-
-
-
- %n Download(s)
- %n preuzimanje %n preuzimanja %n preuzimanja
-
-
-
- DownloadSettings
-
-
- Change location...
- Promijeni odredište preuzimanja...
-
-
-
- Choose the download location
- Odaberi odredište preuzimanja
-
-
-
- Download location changed.
- Odredište preuzimanja promijenjeno.
-
-
-
- Current downloads will still go in the previous location.
- Trenutna preuzimanja Äe i dalje iÄi u prethodno odrediÅ¡te.
-
-
-
- Downloading to: %1
- Preuzimam u: %1
-
-
-
- DownloadView
-
-
-
- Downloads
- Preuzimanja
-
-
-
- DownloadWidget
-
-
- Downloading update...
-
-
-
-
- GlobalShortcuts
-
-
- Play
- Pokreni
-
-
-
- Pause
- Pauza
-
-
-
- Play/Pause
- Pokreni/Pauza
-
-
-
- Stop
- Stani
-
-
-
- Stop playing after current track
- Stani nakon trenutne stvari.
-
-
-
- Next track
- SlijedeÄa
-
-
-
- Previous track
- Prethodna
-
-
-
- Increase volume
- PojaÄaj zvuk
-
-
-
- Decrease volume
- Stišaj zvuk
-
-
-
- Mute
- Nijemo
-
-
-
- Seek forward
- Premotaj naprijed
-
-
-
- Seek backward
- Premotaj nazad
-
-
-
- HomeView
-
-
- Search
- Traži
-
-
-
- Find videos and channels by keyword
-
-
-
-
- Browse
-
-
-
-
- Browse videos by category
-
-
-
-
- Make yourself comfortable
-
-
-
-
- LoadingWidget
-
-
- Error
- Greška
-
-
-
- MainWindow
-
-
- &Stop
- &Stop
-
-
-
- Stop playback and go back to the search view
- Stani i vrati se na pretraživanje
-
-
-
- S&kip
- &PreskoÄi
-
-
-
- Skip to the next video
- PreskoÄi na slijedeÄi video
-
-
-
-
- &Pause
- &Pauza
-
-
-
-
- Pause playback
- Pauziraj
-
-
-
- &Full Screen
- &Cijeli ekran
-
-
-
- Go full screen
- Prikaži preko cijelog ekrana
-
-
-
- Hide the playlist and the toolbar
- Sakrij play listu i alatnu traku
-
-
-
- Go to the YouTube video page and pause playback
- Idi na Youtube stranicu sa videom i pauziraj
-
-
-
- Copy the current video YouTube link to the clipboard
- Kopiraj YouTube link trenutnog videa u clipboard
-
-
-
- Copy the current video stream URL to the clipboard
- Kopiraj &URL trenutnog video streama u clipboard
-
-
-
- Find other video parts hopefully in the right order
- NaÄi ostale dijelove videa, vjerojatno u pravom rasporedu
-
-
-
- &Remove
- &Ukloni
-
-
-
- Remove the selected videos from the playlist
- Ukloni odabrane video clipove iz play liste
-
-
-
- Move &Up
- Pomakni &gore
-
-
-
- Move up the selected videos in the playlist
- Pomakni gore slektirane video clipove u play listi
-
-
-
- Move &Down
- Pomakni &dolje
-
-
-
- Move down the selected videos in the playlist
- Pomakni dolje slektirane video clipove u play listi
-
-
-
- Clear the search history. Cannot be undone.
- OÄisti povijest pretraga. Ne može se vratiti.
-
-
-
- &Quit
- &Kraj
-
-
-
- Bye
- DoviÄenja
-
-
-
- &Website
- &Web stranice
-
-
-
- %1 on the Web
- %1 na webu
-
-
-
- Please support the continued development of %1
- Molim Vas da podržite daljnji razvoj %1
-
-
-
- &About
- &O programu
-
-
-
- Info about %1
- Informacije o %1
-
-
-
- Search
- Traži
-
-
-
- Mute volume
- Utišaj zvuk
-
-
-
-
- &Downloads
- &Preuzimanja
-
-
-
- Show details about video downloads
- Pokaži informacije o preuzimanjima videa
-
-
-
- &Download
- &Preuzimanje
-
-
-
- Download the current video
- Preuzmi trenutni video
-
-
-
- Share the current video using %1
- Podijeli trenutni video koristeÄi %1
-
-
-
- &Email
- &Email
-
-
-
- Email
- Email
-
-
-
- &Close
- &Zatvori
-
-
-
- &Float on Top
- &Budi na vrhu
-
-
-
- &Stop After This Video
- &Stani nakon ovog videa
-
-
-
- &Report an Issue...
- &Prijavi problem
-
-
-
- &Refine Search...
- &Suzi pretragu
-
-
-
- More...
-
-
-
-
- &Related Videos
-
-
-
-
- Watch videos related to the current one
-
-
-
-
- &Application
- &Program
-
-
-
- Buy %1...
- Kupi %1
-
-
-
- &Playback
- &Sviraj
-
-
-
- &Playlist
- &Play lista
-
-
-
- &Video
- &Video
-
-
-
- &View
- &Pogled
-
-
-
- &Share
- &Podijeli
-
-
-
- &Help
- &PomoÄ
-
-
-
- Press %1 to raise the volume, %2 to lower it
- Pritisnite %1 za glasnije, %2 za tiše
-
-
-
-
- Opening %1
- Otvaram %1
-
-
-
- Do you want to exit %1 with a download in progress?
- Da li stvarno želite napustiti %1 dok traje preuzimanje?
-
-
-
- If you close %1 now, this download will be cancelled.
- Ako sada zatvorite %1, preuzimanje Äe biti poniÅ¡teno.
-
-
-
- Close and cancel download
- Zatvori i poništi preuzimanje
-
-
-
- Wait for download to finish
- PriÄekaj da zavrÅ¡i preuzimanje
-
-
-
- Leave &Full Screen
- IzaÄi iz &Cijelog ekrana
-
-
-
- %1 version %2 is now available.
- %1 verzija %2 je dostupna.
-
-
-
- Remind me later
- Podsjeti me kasnije
-
-
-
- Update
- Unaprijedi
-
-
-
- Error: %1
- Greška: %1
-
-
-
- P&revious
- P&rethodni
-
-
-
- Go back to the previous track
- Idi nazad na prethodnu pjesmu
-
-
-
- &Compact Mode
- &Kompaktni mod
-
-
-
- Open the &YouTube Page
- Otvori &YouTube stranicu
-
-
-
- Copy the YouTube &Link
- Kopiraj YouTube &link
-
-
-
- Copy the Video Stream &URL
- Kopiraj &URL video streama
-
-
-
- Find Video &Parts
- NaÄi &dijelove videa
-
-
-
- &Clear Recent Searches
- &Izbriši nedavne pretrage
-
-
-
- Make a &Donation
- Izvrši &donaciju
-
-
-
- &Manually Start Playing
- &RuÄno pokreni reprodukciju
-
-
-
- Manually start playing videos
- RuÄno pokreni reprodukciju videa
-
-
-
- Choose your content location
-
-
-
-
- &Play
- &Sviraj
-
-
-
- Resume playback
- &Nastavi sviranje
-
-
-
- Remaining time: %1
- Preostalo vrijeme: %1
-
-
-
- Volume at %1%
- GlasnoÄa na %1%
-
-
-
- Volume is muted
- Zvuk je ugašen
-
-
-
- Volume is unmuted
- Zvuk je upaljen
-
-
-
- Maximum video definition set to %1
- Maksimalna video rezolucija postavljena na %1
-
-
-
- Your privacy is now safe
- Vaša privatnost je sada sigurna
-
-
-
- Downloads complete
- Preuzimanja završena
-
-
-
- MediaView
-
-
- You can now paste the YouTube link into another application
- Sada možete zalijepiti Youtube link u neki drugi program
-
-
-
- You can now paste the video stream URL into another application
- Sada možete zalijepiti link video streama u neki drugi program
-
-
-
- The link will be valid only for a limited time.
- Link Äe biti valjan samo ograniÄeno vrijeme.
-
-
-
- This is just the demo version of %1.
- Ovo je samo demo verzija %1.
-
-
-
- It allows you to test the application and see if it works for you.
- OmoguÄava Vam da testirate program i vidite da li Vam odgovara.
-
-
-
- Continue
- Nastavi
-
-
-
- of
- Used in video parts, as in '2 of 3'
- od
-
-
-
- part
- This is for video parts, as in 'Cool video - part 1'
- dio
-
-
-
- episode
- This is for video parts, as in 'Cool series - episode 1'
- epizoda
-
-
-
- Sent from %1
- Poslano sa %1
-
-
-
- Get the full version
- Preuzmi punu verziju
-
-
-
- Downloading %1
- Preuzimam %1
-
-
-
- MessageWidget
-
-
- A new version of %1 is available!
-
-
-
-
- %1 %2 is now available. You have %3.
-
-
-
-
- Would you like to download it now?
-
-
-
-
- Skip This Version
-
-
-
-
- Remind Me Later
-
-
-
-
- Install Update
-
-
-
-
- PasteLineEdit
-
-
- Paste
-
-
-
-
- PlaylistItemDelegate
-
-
- %1 views
- %1 pregleda
-
-
-
- %1 of %2 (%3) â %4
-
-
-
-
- Preparing
-
-
-
-
- Failed
-
-
-
-
- Completed
-
-
-
-
- Stopped
-
-
-
-
- Stop downloading
-
-
-
-
- Show in %1
-
-
-
-
- Open parent folder
-
-
-
-
- Restart downloading
-
-
-
-
- PlaylistModel
-
-
- Searching...
- Pretražujem...
-
-
-
- Show %1 More
-
-
-
-
- No videos
- Nema videa
-
-
-
- No more videos
- Nema više videa
-
-
-
- RefineSearchWidget
-
-
- Sort by
- Sortiraj po
-
-
-
- Relevance
- Važnost
-
-
-
-
- Date
- Datum
-
-
-
- View Count
- Broj pregleda
-
-
-
- Rating
- Ocjena
-
-
-
- Anytime
- Bilo kada
-
-
-
- Today
- Danas
-
-
-
- 7 Days
- 7 dana
-
-
-
- 30 Days
- 30 dana
-
-
-
- Duration
- Trajanje
-
-
-
-
- All
- Sve
-
-
-
- Short
- Kratko
-
-
-
- Medium
- Srednje
-
-
-
- Long
- Dugo
-
-
-
- Less than 4 minutes
- KraÄe od 4 minute
-
-
-
- Between 4 and 20 minutes
- IzmeÄu 4 i 20 minuta
-
-
-
- Longer than 20 minutes
- Duže od 20 minuta
-
-
-
- Quality
- Kvaliteta
-
-
-
- High Definition
- Visoka razluÄivost
-
-
-
- 720p or higher
- 720p ili više
-
-
-
- Done
- Gotovo
-
-
-
- RegionsView
-
-
- Done
-
-
-
-
- SearchLineEdit
-
-
- Search
- Traži
-
-
-
- SearchView
-
-
- Welcome to <a href='%1'>%2</a>,
- Dobrodošli u <a href='%1'>%2</a>,
-
-
-
- Get the full version
- Preuzmi punu verziju
-
-
-
- Enter
- "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
- Unesi
-
-
-
- a keyword
- kljuÄna rijeÄ
-
-
-
- a channel
- kanal
-
-
-
- to start watching videos.
- da poÄnete gledati video.
-
-
-
- Watch
- Gledaj
-
-
-
- Recent keywords
- Nedavne kljuÄne rijeÄi
-
-
-
- Recent channels
- Nedavni kanali
-
-
-
- SidebarHeader
-
-
-
- &Back
- &Nazad
-
-
-
- Forward to %1
-
-
-
-
- Back to %1
-
-
-
-
- SidebarWidget
-
-
- Refine Search
- Suzi pretragu
-
-
-
- Did you mean: %1
- Dali ste mislili: %1
-
-
-
- StandardFeedsView
-
-
- Most Popular
-
-
-
-
- Featured
-
-
-
-
- Most Shared
-
-
-
-
- Most Discussed
-
-
-
-
- Top Rated
-
-
-
-
- Video
-
-
- Cannot get video stream for %1
- Ne mogu naÄi video stream za %1
-
-
-
- Network error: %1 for %2
- Greška mreže: %1 za %2
-
-
-
- YTRegions
-
-
- Algeria
-
-
-
-
- Argentina
-
-
-
-
- Australia
-
-
-
-
- Belgium
-
-
-
-
- Brazil
-
-
-
-
- Canada
-
-
-
-
- Chile
-
-
-
-
- Colombia
-
-
-
-
- Czech Republic
-
-
-
-
- Egypt
-
-
-
-
- France
-
-
-
-
- Germany
-
-
-
-
- Ghana
-
-
-
-
- Greece
-
-
-
-
- Hong Kong
-
-
-
-
- Hungary
-
-
-
-
- India
-
-
-
-
- Indonesia
-
-
-
-
- Ireland
-
-
-
-
- Israel
-
-
-
-
- Italy
-
-
-
-
- Japan
-
-
-
-
- Jordan
-
-
-
-
- Kenya
-
-
-
-
- Malaysia
-
-
-
-
- Mexico
-
-
-
-
- Morocco
-
-
-
-
- Netherlands
-
-
-
-
- New Zealand
-
-
-
-
- Nigeria
-
-
-
-
- Peru
-
-
-
-
- Philippines
-
-
-
-
- Poland
-
-
-
-
- Russia
-
-
-
-
- Saudi Arabia
-
-
-
-
- Singapore
-
-
-
-
- South Africa
-
-
-
-
- South Korea
-
-
-
-
- Spain
-
-
-
-
- Sweden
-
-
-
-
- Taiwan
-
-
-
-
- Tunisia
-
-
-
-
- Turkey
-
-
-
-
- Uganda
-
-
-
-
- United Arab Emirates
-
-
-
-
- United Kingdom
-
-
-
-
- Yemen
-
-
-
-
- Worldwide
-
-
-
-
\ No newline at end of file
diff --git a/locale/hu.ts b/locale/hu.ts
index b6390ac..0d5b55e 100644
--- a/locale/hu.ts
+++ b/locale/hu.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Van élet a böngészÅn kÃvül.
-
+
Version %1
Verzió: %1
-
+
Licensed to: %1
-
+
%1 is Free Software but its development takes precious time.
A %1 szabad szoftver, de a fejlesztése értékes idÅt emészt fel.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
<a href='%1'>Adakozással</a> támogassa a %2 program folyamatos fejlesztését.
-
+
You may want to try my other apps as well:
Ki szeretne próbálni más alkalmazást is?
-
+
%1, a YouTube music player
%1, a YouTube zenelejátszó
-
+
%1, a music player
%1, zenelejátszó
-
+
Translate %1 to your native language using %2
FordÃtsa le a %1 programot az anyanyelvére a következÅvel: %2
-
+
Icon designed by %1.
Ikon tervezÅje: %1
-
+
Released under the <a href='%1'>GNU General Public License</a>
A <a href='%1'>GNU General Public licenccel</a> megjelentetve
-
+
&Close
&Bezárás
-
+
About
Névjegy
-
+
What you always wanted to know about %1 and never dared to ask
Amit tudni szeretett volna a %1 programról, de sosem merte megkérdezni
@@ -134,6 +134,95 @@
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Rendezés
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bájt
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bájt/mp
-
+
KB/sec
KB/mp
-
+
MB/sec
MB/mp
-
+
seconds
másodperc
-
+
minutes
perc
-
+
%4 %5 remaining
HátralévÅ idÅ: %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Ez csak a demó verziója a %1 programnak.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Csak %1 percnél rövidebb videók tölthetÅk le vele a letöltési funkciók teszteléséhez.
-
+
Continue
Folytatás
-
+
Get the full version
Teljes verzió beszerzése
-
+
%1 downloaded in %2
-
+
Download finished
Letöltés befejezve
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Hely módosÃtása...
-
+
Choose the download location
Letöltés helyének kiválasztása
-
+
Download location changed.
A letöltés helye megváltozott.
-
+
Current downloads will still go in the previous location.
A folyamatban lévŠletöltések még a régebbi helyre kerülnek.
-
+
Downloading to: %1
Letöltés ide: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Letöltések
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Lejátszás
-
+
Pause
MegállÃtás
-
+
Play/Pause
Lejátszás/megállÃtás
-
+
Stop
LeállÃtás
-
+
Stop playing after current track
Lejátszás befejezése az aktuális szám után
-
+
Next track
KövetkezŠszám
-
+
Previous track
ElÅzÅ szám
-
+
Increase volume
HangerŠnövelése
-
+
Decrease volume
HangerŠcsökkentése
-
+
Mute
NémÃtás
-
+
Seek forward
Ugrás elÅre
-
+
Seek backward
Ugrás vissza
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Keresés
-
+
Find videos and channels by keyword
-
+ Videók és csatornák keresése kulcsszó alapján
-
+
Browse
Keresés
-
+
Browse videos by category
Videók keresése kategória szerint
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
Helyezze kényelembe magát
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Hiba
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&LeállÃtás
-
+
Stop playback and go back to the search view
Lejátszás befejezése és visszatérés a keresés nézetre
-
+
S&kip
U&grás
-
+
Skip to the next video
Ugrás a következŠvideóra
-
-
+
+
&Pause
&MegállÃtás
-
-
+
+
Pause playback
Lejátszás megállÃtása
-
+
&Full Screen
&Teljes képernyÅ
-
+
Go full screen
Teljes képernyÅre váltás
-
+
Hide the playlist and the toolbar
Lejátszási lista és eszközsor elrejtése
-
+
Go to the YouTube video page and pause playback
Ugrás a YouTube videó oldalára és a lejátszás megállÃtása
-
+
Copy the current video YouTube link to the clipboard
Az aktuális videó Youtube &hivatkozásának másolása a vágólapra
-
+
Copy the current video stream URL to the clipboard
Az aktuális videó adatfolyam URL cÃmének másolása a vágólapra
-
+
Find other video parts hopefully in the right order
További videórészletek keresése remélhetÅleg helyes sorrendben
-
+
&Remove
&EltávolÃtás
-
+
Remove the selected videos from the playlist
Kijelölt videók eltávolÃtása a lejátszási listáról
-
+
Move &Up
Mozgatás &felfelé
-
+
Move up the selected videos in the playlist
Kijelölt videók mozgatása felfelé a lejátszási listában
-
+
Move &Down
Mozgatás &lefelé
-
+
Move down the selected videos in the playlist
Kijelölt videók mozgatása lefelé a lejátszási listában
-
+
Clear the search history. Cannot be undone.
Keresési elÅzmények törlése. Nem vonható vissza.
-
+
&Quit
&Kilépés
-
+
Bye
Viszlát
-
+
&Website
&Webhely
-
+
%1 on the Web
%1 a weben
-
+
Please support the continued development of %1
Támogassa a %1 program folyamatos fejlesztését
-
+
&About
&Névjegy
-
+
Info about %1
Információ a %1 programról
-
+
Search
Keresés
-
+
Mute volume
HangerÅ némÃtása
-
-
+
+
&Downloads
&Letöltések
-
+
Show details about video downloads
A videóletöltések részleteinek megjelenÃtése
-
+
&Download
&Letöltés
-
+
Download the current video
Aktuális videó letöltése
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
Aktuális videó megosztása a következÅvel: %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
&Bezárás
-
+
&Float on Top
&Többi ablak fölött
-
+
&Stop After This Video
&Videó után leállÃtás
-
+
&Report an Issue...
&Hiba bejelentése
-
+
&Refine Search...
&Keresés pontosÃtása
-
+
More...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Alkalmazás
-
+
Buy %1...
%1 megvásárlása...
-
+
&Playback
&Lejátszás
-
+
&Playlist
&Lejátszási lista
-
+
&Video
&Videó
-
+
&View
&Megtekintés
-
+
&Share
&Megosztás
-
+
&Help
&Súgó
-
+
Press %1 to raise the volume, %2 to lower it
HangerŠnövelése: %1, hangerŠcsökkentése: %2
-
-
+
+
Opening %1
%1 megnyitása
-
+
Do you want to exit %1 with a download in progress?
Szeretne kilépni a %1 programból letöltés közben?
-
+
If you close %1 now, this download will be cancelled.
Ha bezárja a %1 programot, a letöltés megszakad.
-
+
Close and cancel download
Bezárás és letöltés megszakÃtása
-
+
Wait for download to finish
A letöltés befejezÅdésének megvárása
-
+
Leave &Full Screen
Kilépés a &teljes képernyÅs módból
-
+
%1 version %2 is now available.
A %1 program %2 verziója elérhetÅ.
-
+
Remind me later
Figyelmeztetés késÅbb
-
+
Update
FrissÃtés
-
+
Error: %1
Hiba: %1
-
+
P&revious
&ElÅzÅ
-
+
Go back to the previous track
Ugrás az elÅzÅ számra
-
+
&Compact Mode
&Kompaktmód
-
+
Open the &YouTube Page
&YouTube oldal megnyitása
-
+
Copy the YouTube &Link
YouTube &hivatkozás másolása
-
+
Copy the Video Stream &URL
&Videó-URL másolása
-
+
Find Video &Parts
További videó&részletek keresése
-
+
&Clear Recent Searches
&Legutóbbi keresések törlése
-
+
Make a &Donation
&Támogasd
-
+
&Manually Start Playing
&Manuális lejátszás
-
+
Manually start playing videos
Videók lejátszása manuális indÃtással
-
+
Choose your content location
-
+
&Play
&Lejátszás
-
+
Resume playback
Lejátszás folytatása
-
+
Remaining time: %1
HátralévÅ idÅ: %1
-
+
Volume at %1%
HangerÅ: %1%
-
+
Volume is muted
HangerÅ némÃtva
-
+
Volume is unmuted
HangerÅ némÃtása feloldva
-
+
Maximum video definition set to %1
Videók maximális felbontásának beállÃtása: %1
-
+
Your privacy is now safe
A személyes adatok most már biztonságban vannak
-
+
Downloads complete
A letöltések befejezÅdtek
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
A YouTube hivatkozás most már beilleszthetŠegy másik alkalmazásba
-
+
You can now paste the video stream URL into another application
Most már beillesztheti a videó adatfolyam URL cÃmét egy másik alkalmazásba
-
+
The link will be valid only for a limited time.
A hivatkozás csak korlátozott ideig lesz érvényben.
-
+
This is just the demo version of %1.
Ez csak a demó verziója a %1 programnak.
-
+
It allows you to test the application and see if it works for you.
Kipróbálhatja az alkalmazást, hogy megfelel-e az igényeinek.
-
+
Continue
Folytatás
-
+
of
Used in video parts, as in '2 of 3'
-
-
+
part
This is for video parts, as in 'Cool video - part 1'
rész
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
epizód
-
+
Sent from %1
A %1 programból küldve
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Teljes verzió beszerzése
-
+
Downloading %1
Letöltés: %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 nézÅ
-
+
%1 of %2 (%3) â %4
%1 %2 közül (%3) â %4
-
+
Preparing
ElÅkészÃtés
-
+
Failed
Hiba
-
+
Completed
Sikeres befejezés
-
+
Stopped
LeállÃtva
-
+
Stop downloading
Letöltés leállÃtása
-
+
Show in %1
MegjelenÃtés a következÅben: %1
-
+
Open parent folder
-
+ SzülÅmappa megnyitása
-
+
Restart downloading
Letöltés újraindÃtása
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Keresés...
-
+
Show %1 More
-
+
No videos
Nincsenek videók
-
+
No more videos
Nincs több videó
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Rendezés
-
+
Relevance
Relevancia
-
-
+
+
Date
Dátum
-
+
View Count
Megtekintések száma
-
+
Rating
Ãrtékelés
-
+
Anytime
Bármikor
-
+
Today
Ma
-
+
7 Days
7 napja
-
+
30 Days
30 napja
-
+
Duration
IdÅtartam
-
-
+
+
All
Ãsszes
-
+
Short
Rövid
-
+
Medium
Közepes
-
+
Long
Hosszú
-
+
Less than 4 minutes
Rövidebb, mint 4 perc
-
+
Between 4 and 20 minutes
4 perc és 20 perc között
-
+
Longer than 20 minutes
Hosszabb, mint 20 perc
-
+
Quality
MinÅség
-
+
High Definition
Nagyfelbontású
-
+
720p or higher
720p vagy nagyobb
-
+
Done
Kész
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Kész
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Ãdvözli a <a href='%1'>%2</a> program,
-
+
Get the full version
Teljes verzió beszerzése
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Ãrjon be
-
+
a keyword
egy kulcsszót
-
+
a channel
egy csatornát
-
+
to start watching videos.
a videók megtekintéséhez.
-
+
Watch
Megtekintés
-
+
Recent keywords
Legutóbbi kulcsszavak
-
+
Recent channels
Legutóbbi csatornák
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Vissza
-
+
Forward to %1
Tovább a %1-re
-
+
Back to %1
Vissza a %1-re
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Keresés finomÃtása
-
+
Did you mean: %1
Ãgy értette: %1?
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
Legnépszerübb
-
- Featured
- Kiemelt
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Nem található videó adatfolyam a következÅhöz: %1
-
+
Network error: %1 for %2
Hálózati hiba: %1 a következÅhöz: %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
Algéria
-
+
Argentina
ArgentÃna
-
+
Australia
Ausztrália
-
+
Belgium
Belgium
-
+
Brazil
BrazÃlia
-
+
Canada
Kanada
-
+
Chile
Chile
-
+
Colombia
Kolumbia
-
+
Czech Republic
Cseh Köztársaság
-
+
Egypt
Egyiptom
-
+
France
Franciaország
-
+
Germany
Németország
-
+
Ghana
Ghána
-
+
Greece
Görögország
-
+
Hong Kong
Hong Kong
-
+
Hungary
Magyarország
-
+
India
India
-
+
Indonesia
Indonézia
-
+
Ireland
Ãrország
-
+
Israel
Izrael
-
+
Italy
Olaszország
-
+
Japan
Japán
-
+
Jordan
Jordánia
-
+
Kenya
Kenya
-
+
Malaysia
Malájzia
-
+
Mexico
Mexikó
-
+
Morocco
Marokkó
-
+
Netherlands
Hollandia
-
+
New Zealand
Ãj Zéland
-
+
Nigeria
Nigéria
-
+
Peru
Peru
-
+
Philippines
Fülöp-szigetek
-
+
Poland
Lengyelország
-
+
Russia
Oroszország
-
+
Saudi Arabia
Szaúd-Arábia
-
+
Singapore
Szingapúr
-
+
South Africa
Dél Afrika
-
+
South Korea
Dél Korea
-
+
Spain
Spanyolország
-
+
Sweden
Svédország
-
+
Taiwan
Tajvan
-
+
Tunisia
Tunézia
-
+
Turkey
Törökország
-
+
Uganda
Uganda
-
+
United Arab Emirates
Egyesült Arab Emirségek
-
+
United Kingdom
Nagy Britannia
-
+
Yemen
Jemen
-
+
Worldwide
Világszerte
diff --git a/locale/ia.ts b/locale/ia.ts
index 89959d5..0f0a580 100644
--- a/locale/ia.ts
+++ b/locale/ia.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Il ha vita foras del navigator!
-
+
Version %1
Version %1
-
+
Licensed to: %1
-
+
%1 is Free Software but its development takes precious time.
%1 es software libere ma su developpamento require un tempore preciose.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
<a href='%1'>Dona</a>, per favor, pro supportar le developpamento continue de %2.
-
+
You may want to try my other apps as well:
Tu pote tamben voler essayar mi altere applicationes
-
+
%1, a YouTube music player
%1, un reproductor de musica de YouTube
-
+
%1, a music player
%1, un sonator de musica
-
+
Translate %1 to your native language using %2
Traduce %1 in tu lingua materne per usar %2
-
+
Icon designed by %1.
Icone designate per %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Liberate sub le <a href='%1'>GNU General Public License</a>
-
+
&Close
&Clauder
-
+
About
Super
-
+
What you always wanted to know about %1 and never dared to ask
Lo que tu sempre ha volite saper super %1 e nunquam osava demandar lo
@@ -134,6 +134,95 @@
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Tote le videos
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+ Nomine
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Ordinar per
+
+
+
+ All Videos
+ Tote le videos
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sec
-
+
KB/sec
KB/sec
-
+
MB/sec
MB/sec
-
+
seconds
secundas
-
+
minutes
minutas
-
+
%4 %5 remaining
%4 %5 restante
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Iste es solmente le version demo de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Il solmente es possibile discargar videos plus curte que %1 minutas pro que assi tu pote testar le functionalitate de discarga.
-
+
Continue
Continuar
-
+
Get the full version
Obtener le version complete
-
+
%1 downloaded in %2
%1 discargate in %2
-
+
Download finished
Discarga terminate
-
+
%n Download(s)
%n discarga(s) %n discarga(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Cambia le localisation...
-
+
Choose the download location
Selige le localisation de discarga
-
+
Download location changed.
Le localisation de discarga esseva cambiate.
-
+
Current downloads will still go in the previous location.
Le discargas actual va ancora al previe localisation.
-
+
Downloading to: %1
A discargar a: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Discargas
@@ -270,68 +359,68 @@
Downloading update...
-
+ Discargante actualisation...
GlobalShortcuts
-
+
Play
Reproducer
-
+
Pause
Pausa
-
+
Play/Pause
Reproducer/Pausa
-
+
Stop
Stop
-
+
Stop playing after current track
Stoppar le reproduction post le pista actual
-
+
Next track
Proxime pista
-
+
Previous track
Previe pista
-
+
Increase volume
Augmentar le sono
-
+
Decrease volume
Diminuer le sono
-
+
Mute
Mute
-
+
Seek forward
Cerca in avante
-
+
Seek backward
Cerca retro
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Cercar
-
+
Find videos and channels by keyword
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Error
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Stop
-
+
Stop playback and go back to the search view
Stoppar le reproduction e vader retro al vista de cercas
-
+
S&kip
S&altar
-
+
Skip to the next video
Saltar al proxime video
-
-
+
+
&Pause
&Pausa
-
-
+
+
Pause playback
Pausar le reproduction
-
+
&Full Screen
&Schermo plen
-
+
Go full screen
Vader a schermo plen
-
+
Hide the playlist and the toolbar
Celar le lista de reproduction e le barra de utensiles
-
+
Go to the YouTube video page and pause playback
Vader al pagina de videos de YouTube e pausa le reproduction
-
+
Copy the current video YouTube link to the clipboard
Copiar le actual &ligamine de video YouTube al area de transferentia
-
+
Copy the current video stream URL to the clipboard
Copiar le currente URL de fluxo de video al area de transferentia
-
+
Find other video parts hopefully in the right order
-
+
&Remove
&Remover
-
+
Remove the selected videos from the playlist
Remover le videos seligite del lista de reproduction
-
+
Move &Up
Mover in &alto
-
+
Move up the selected videos in the playlist
Mover le videos seligite del lista de reproduction in alto
-
+
Move &Down
Mover a &basso
-
+
Move down the selected videos in the playlist
Mover le videos seligite del lista de reproduction a basso
-
+
Clear the search history. Cannot be undone.
Mundar le historia de recerca. Isto non pote ser disfacite.
-
+
&Quit
&Quitar
-
+
Bye
Adeo
-
+
&Website
Sito &web
-
+
%1 on the Web
%1 in le web
-
+
Please support the continued development of %1
Supporta le developpamento continue de %1, per favor
-
+
&About
&Super
-
+
Info about %1
Info super %1
-
+
Search
Cercar
-
+
Mute volume
Sin sono
-
-
+
+
&Downloads
&Discargas
-
+
Show details about video downloads
Monstrar detalios super le discargas de videos
-
+
&Download
&Discarga
-
+
Download the current video
Discarga le video actual
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
Compartir le video currente usante %1
-
+
&Email
&E-posta
-
+
Email
E-posta
-
+
&Close
&Clauder
-
+
&Float on Top
&Flottar in alto
-
+
&Stop After This Video
&Stoppar depost de iste video
-
+
&Report an Issue...
&Reportar un problema...
-
+
&Refine Search...
&Affinar le cerca...
-
+
More...
Plus...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Application
-
+
Buy %1...
Comprar %1...
-
+
&Playback
&Reproduction
-
+
&Playlist
Lista de re&production
-
+
&Video
&Video
-
+
&View
&Vider
-
+
&Share
&Compartir
-
+
&Help
&Adjuta
-
+
Press %1 to raise the volume, %2 to lower it
Preme %1 pro augmentar le sono, %2 pro bassar lo
-
-
+
+
Opening %1
A aperir %1
-
+
Do you want to exit %1 with a download in progress?
Esque tu vole sortir de %1 con un discarga in progresso?
-
+
If you close %1 now, this download will be cancelled.
Si tu claude %1 ora, le discarga essera cancellate.
-
+
Close and cancel download
Claude e cancella le discarga
-
+
Wait for download to finish
Attende que le discarga fini
-
+
Leave &Full Screen
Quita le &schermo plen
-
+
%1 version %2 is now available.
%1 version %2 es ora disponibile.
-
+
Remind me later
Rememora me plus tarde
-
+
Update
Actualisar
-
+
Error: %1
Error: %1
-
+
P&revious
P&revie
-
+
Go back to the previous track
Retroceder al tracia previe
-
+
&Compact Mode
&Modo compacte
-
+
Open the &YouTube Page
Aperir le pagina de &YouTube
-
+
Copy the YouTube &Link
Copiar le &ligamine de YouTube
-
+
Copy the Video Stream &URL
Copiar le &URL de fluxo de video
-
+
Find Video &Parts
Cercar &partes de video
-
+
&Clear Recent Searches
&Mundar le recercas recente
-
+
Make a &Donation
Face un &donation
-
+
&Manually Start Playing
Initiar le reproduction &manualmente
-
+
Manually start playing videos
Initiar manualmente le reproduction de videos
-
+
Choose your content location
Selige le loco de contento
-
+
&Play
Re&producer
-
+
Resume playback
Resumer reproduction
-
+
Remaining time: %1
Tempore restante: %1
-
+
Volume at %1%
Volumine a %1%
-
+
Volume is muted
Sin sono
-
+
Volume is unmuted
Con sono
-
+
Maximum video definition set to %1
Definition maxime de video: %1
-
+
Your privacy is now safe
Ora tu intimitate es secur
-
+
Downloads complete
Discargas complete
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Ora tu pote collar le ligamine de YouTube in un in altere application
-
+
You can now paste the video stream URL into another application
Ora tu pote collar le URL de fluxo de video in un altere application
-
+
The link will be valid only for a limited time.
Le ligamine essera valide solmente durante un tempore limitate.
-
+
This is just the demo version of %1.
Isto es solmente le version demo de %1.
-
+
It allows you to test the application and see if it works for you.
Isto permitte testar le application e vider si illo functiona.
-
+
Continue
Continuar
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodio
-
+
Sent from %1
Inviate ab %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Procura le version complete
-
+
Downloading %1
A discargar %1
@@ -870,7 +989,7 @@
A new version of %1 is available!
-
+ Un nove version de %1 es disponibile!
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 visualisationes
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
Fallite
-
+
Completed
-
+ Completate
-
+
Stopped
-
+
Stop downloading
Stoppar le discarga
-
+
Show in %1
Monstrar in %1
-
+
Open parent folder
-
+
Restart downloading
Recomenciar le discarga
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
A cercar...
-
+
Show %1 More
Monstrar %1 plus
-
+
No videos
Nulle video
-
+
No more videos
In non ha plus de videos
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Ordinar per
-
+
Relevance
-
-
+
+
Date
Data
-
+
View Count
Vider le contator
-
+
Rating
-
+
Anytime
-
+
Today
Hodie
-
+
7 Days
7 dies
-
+
30 Days
30 dies
-
+
Duration
Duration
-
-
+
+
All
Omne
-
+
Short
Curte
-
+
Medium
Medie
-
+
Long
Longe
-
+
Less than 4 minutes
Minus de 4 minutas
-
+
Between 4 and 20 minutes
Inter 4 e 20 minutas
-
+
Longer than 20 minutes
Plus de 20 minutas
-
+
Quality
Qualitate
-
+
High Definition
Alte definition
-
+
720p or higher
720p o plus
-
+
Done
Facite
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Facite
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Benvenite a <a href='%1'>%2</a>,
-
+
Get the full version
Procura le version complete
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Scriber
-
+
a keyword
una parola clave
-
+
a channel
un canal
-
+
to start watching videos.
pro comenciar a reguardar le videos.
-
+
Watch
Reguardar
-
+
Recent keywords
Parolas-clave recente
-
+
Recent channels
Canales recente
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Retro
-
+
Forward to %1
-
+
Back to %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Affinar le cerca
-
+
Did you mean: %1
Tu voleva dicer: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
Le plus compartite
-
+
Most Discussed
Le plus discutite
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Le fluxo de video pro %1 non pote ser obtenite
-
+
Network error: %1 for %2
Error de rete: %1 pro %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
-
+
Argentina
-
+
Australia
-
+
Belgium
-
+
Brazil
-
+
Canada
-
+
Chile
-
+
Colombia
-
+
Czech Republic
-
+
Egypt
-
+
France
-
+
Germany
-
+
Ghana
-
+
Greece
-
+
Hong Kong
-
+
Hungary
-
+
India
-
+
Indonesia
-
+
Ireland
-
+
Israel
-
+
Italy
-
+
Japan
-
+
Jordan
-
+
Kenya
-
+
Malaysia
-
+
Mexico
-
+
Morocco
-
+
Netherlands
-
+
New Zealand
-
+
Nigeria
-
+
Peru
-
+
Philippines
-
+
Poland
-
+
Russia
-
+
Saudi Arabia
-
+
Singapore
-
+
South Africa
-
+
South Korea
-
+
Spain
-
+
Sweden
-
+
Taiwan
-
+
Tunisia
-
+
Turkey
-
+
Uganda
-
+
United Arab Emirates
-
+
United Kingdom
-
+
Yemen
-
+
Worldwide
Tote le mundo
diff --git a/locale/it.ts b/locale/it.ts
index 14f3919..8a57e3f 100644
--- a/locale/it.ts
+++ b/locale/it.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
C'è vita fuori del browser!
-
+
Version %1
Versione %1
-
+
Licensed to: %1
Licenziato a: %1
-
+
%1 is Free Software but its development takes precious time.
%1 è Software Libero ma il suo sviluppo richiede tempo prezioso.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
<a href="%1">Fai una donazione</a> per aiutare lo sviluppo di %2.
-
+
You may want to try my other apps as well:
Prova anche le mie altre applicazioni:
-
+
%1, a YouTube music player
%1, un player musicale per YouTube
-
+
%1, a music player
%1, un player musicale
-
+
Translate %1 to your native language using %2
Traduci %1 nella tua lingua usando %2
-
+
Icon designed by %1.
Icona disegnata da %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Rilasciato sotto licenza <a href="%1">GNU General Public License</a>
-
+
&Close
&Chiudi
-
+
About
Informazioni
-
+
What you always wanted to know about %1 and never dared to ask
Quello che hai sempre voluto sapere su %1 e non hai mai osato chiedere
@@ -134,6 +134,95 @@
Compra una licenza
+
+ ChannelAggregator
+
+
+ By %1
+ Di %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Tutti i video
+
+
+
+ Unwatched Videos
+ Video non visti
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Segna tutti come già visti
+
+
+
+ Show Updated
+ Mostra aggiornati
+
+
+
+ Name
+ Nome
+
+
+
+ Last Updated
+ Aggiornamento
+
+
+
+ Last Added
+ Iscrizione
+
+
+
+ Last Watched
+ Visione
+
+
+
+ Most Watched
+ Più visti
+
+
+
+ Sort by
+ Ordina per
+
+
+
+ All Videos
+ Tutti i video
+
+
+
+ Unwatched Videos
+ Video non visti
+
+
+
+ There are no updated subscriptions at this time.
+ Non ci sono iscrizioni aggiornate in questo momento.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Non hai iscrizioni. Usa il simbolo della stella per sottoscrivere i canali.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sec
-
+
KB/sec
KB/sec
-
+
MB/sec
MB/sec
-
+
seconds
secondi
-
+
minutes
minuti
-
+
%4 %5 remaining
%4 %5 al termine
@@ -193,37 +282,37 @@
DownloadManager
-
+
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
-
+
%1 downloaded in %2
%1 scaricato in %2
-
+
Download finished
Download completato
-
+
%n Download(s)
1 download %n download
@@ -231,27 +320,27 @@
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
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Download
@@ -276,62 +365,62 @@
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
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Ricerca
-
+
Find videos and channels by keyword
Trova video e canali per parola chiave
-
+
Browse
Sfoglia
-
+
Browse videos by category
Sfoglia i video per categoria
-
+
+ Subscriptions
+ Iscrizioni
+
+
+
+ Channel subscriptions
+ Iscrizioni ai canali
+
+
+
Make yourself comfortable
Mettiti comodo
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Errore
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Ferma
-
+
Stop playback and go back to the search view
Ferma il video e torna alla ricerca
-
+
S&kip
&Salta
-
+
Skip to the next video
Salta al prossimo video
-
-
+
+
&Pause
&Pausa
-
-
+
+
Pause playback
Metti in pausa
-
+
&Full Screen
&Schermo intero
-
+
Go full screen
Vai in modalità schermo intero
-
+
Hide the playlist and the toolbar
Nascondi la playlist e la barra degli strumenti
-
+
Go to the YouTube video page and pause playback
Vai su YouTube e metti in pausa
-
+
Copy the current video YouTube link to the clipboard
Copia negli appunti il link a YouTube per il video corrente
-
+
Copy the current video stream URL to the clipboard
Copia negli appunti la URL dello stream per il video corrente
-
+
Find other video parts hopefully in the right order
Trova le parti mancanti di questo video
-
+
&Remove
&Elimina
-
+
Remove the selected videos from the playlist
Elimina i video selezionati dalla playlist
-
+
Move &Up
Sposta &sopra
-
+
Move up the selected videos in the playlist
Sposta video selezionati verso l'alto
-
+
Move &Down
Sposta so&tto
-
+
Move down the selected videos in the playlist
Sposta i video selezionati verso il basso
-
+
Clear the search history. Cannot be undone.
Cancella le ultime ricerche. L'azione non potrà essere annullata.
-
+
&Quit
&Esci
-
+
Bye
Ciao
-
+
&Website
Sito &web
-
+
%1 on the Web
%1 sul Web
-
+
Please support the continued development of %1
Supporta lo sviluppo di %1
-
+
&About
&Informazioni
-
+
Info about %1
Informazioni su %1
-
+
Search
Cerca
-
+
Mute volume
Disattiva l'audio
-
-
+
+
&Downloads
&Download
-
+
Show details about video downloads
Mostra informazioni sui download
-
+
&Download
&Download
-
+
Download the current video
Scarica il video corrente
-
+
+ &Subscribe to Channel
+ &Iscriviti al canale
+
+
+
Share the current video using %1
Condividi il video corrente usando %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
&Chiudi
-
+
&Float on Top
&Fluttua in alto
-
+
&Stop After This Video
&Ferma dopo questo video
-
+
&Report an Issue...
&Segnala un problema...
-
+
&Refine Search...
&Raffina la ricerca...
-
+
More...
Altro...
-
+
&Related Videos
Video &correlati
-
+
Watch videos related to the current one
Guarda i video correlati a quello corrente
-
+
+ Open in &Browser...
+ Apri nel &browser...
+
+
+
&Application
&Applicazione
-
+
Buy %1...
Compra %1...
-
+
&Playback
&Riproduzione
-
+
&Playlist
&Playlist
-
+
&Video
&Video
-
+
&View
&Visualizza
-
+
&Share
&Condividi
-
+
&Help
&Aiuto
-
+
Press %1 to raise the volume, %2 to lower it
Premi %1 per alzare il volume, %2 per abbassarlo
-
-
+
+
Opening %1
Apertura di %1
-
+
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
-
+
Leave &Full Screen
Lascia lo &schermo intero
-
+
%1 version %2 is now available.
E' disponibile %1 versione %2
-
+
Remind me later
Ricordamelo più tardi
-
+
Update
Aggiorna
-
+
Error: %1
Errore: %1
-
+
P&revious
P&recedente
-
+
Go back to the previous track
Torna alla traccia precedente
-
+
&Compact Mode
Modalità &compatta
-
+
Open the &YouTube Page
Apri la pagina di &YouTube
-
+
Copy the YouTube &Link
Copia il &link a YouTube
-
+
Copy the Video Stream &URL
Copia la &URL dello stream video
-
+
Find Video &Parts
Trova le &parti del video
-
+
&Clear Recent Searches
&Cancella le ultime ricerche
-
+
Make a &Donation
Fai una &donazione
-
+
&Manually Start Playing
Riproduzione &manuale
-
+
Manually start playing videos
Inizia a riprodurre i video manualmente
-
+
Choose your content location
Scegli la località dei contenuti
-
+
&Play
&Play
-
+
Resume playback
Continua
-
+
Remaining time: %1
Tempo rimanente: %1
-
+
Volume at %1%
Volume al %1%
-
+
Volume is muted
Audio disattivato
-
+
Volume is unmuted
Audio attivato
-
+
Maximum video definition set to %1
La definizione video massima è impostata a %1
-
+
Your privacy is now safe
La tua privacy è al sicuro
-
+
Downloads complete
I download sono completi
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Ora puoi incollare il link a YouTube in un'altra applicazione
-
+
You can now paste the video stream URL into another application
Ora puoi incollare la URL dello stream in un'altra applicazione
-
+
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
-
+
of
Used in video parts, as in '2 of 3'
di
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodio
-
+
Sent from %1
Inviato da %1
-
+
+ Unsubscribe from %1
+ Annulla iscrizione a %1
+
+
+
+ Subscribe to %1
+ Iscriviti a %1
+
+
+
Get the full version
Compra la versione completa
-
+
Downloading %1
Scarica in: %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%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
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Ricerca...
-
+
Show %1 More
Mostra altri %1
-
+
No videos
Nessun video
-
+
No more videos
Nessun altro video
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Ordina per
-
+
Relevance
Pertinenza
-
-
+
+
Date
Data
-
+
View Count
Visualizzazioni
-
+
Rating
Voto
-
+
Anytime
Qualsiasi
-
+
Today
Oggi
-
+
7 Days
7 giorni
-
+
30 Days
30 giorni
-
+
Duration
Durata
-
-
+
+
All
Tutti
-
+
Short
Breve
-
+
Medium
Media
-
+
Long
Lunga
-
+
Less than 4 minutes
Meno di 4 minuti
-
+
Between 4 and 20 minutes
Tra i 4 e i 20 minuti
-
+
Longer than 20 minutes
Oltre i 20 minuti
-
+
Quality
QualitÃ
-
+
High Definition
Alta definizione
-
+
720p or higher
720p o maggiore
-
+
Done
Fatto
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Fatto
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Benvenuto su <a href="%1">%2</a>,
-
+
Get the full version
Compra la versione completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Scrivi
-
+
a keyword
una parola chiave
-
+
a channel
un canale
-
+
to start watching videos.
per iniziare a guardare i video.
-
+
Watch
Guarda
-
+
Recent keywords
Ultime ricerche
-
+
Recent channels
Ultimi canali
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Indietro
-
+
Forward to %1
Avanza a %1
-
+
Back to %1
Torna a %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Raffina la ricerca
-
+
Did you mean: %1
Forse cercavi: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
Più popolari
-
- Featured
- In primo piano
-
-
-
+
Most Shared
Più condivisi
-
+
Most Discussed
Più discussi
-
+
Top Rated
Più votati
+
+
+ All Time Popular
+ Più popolari di sempre
+
Video
-
+
Cannot get video stream for %1
Impossibile ottenere il flusso video per %1
-
+
Network error: %1 for %2
Errore di rete: %1 per %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
Algeria
-
+
Argentina
Argentina
-
+
Australia
Australia
-
+
Belgium
Belgio
-
+
Brazil
Brasile
-
+
Canada
Canada
-
+
Chile
Cile
-
+
Colombia
Colombia
-
+
Czech Republic
Repubblica Ceca
-
+
Egypt
Egitto
-
+
France
Francia
-
+
Germany
Germania
-
+
Ghana
Ghana
-
+
Greece
Grecia
-
+
Hong Kong
Hong Kong
-
+
Hungary
Ungheria
-
+
India
India
-
+
Indonesia
Indonesia
-
+
Ireland
Irlanda
-
+
Israel
Israele
-
+
Italy
Italia
-
+
Japan
Giappone
-
+
Jordan
Giordania
-
+
Kenya
Kenya
-
+
Malaysia
Malaysia
-
+
Mexico
Messico
-
+
Morocco
Marocco
-
+
Netherlands
Olanda
-
+
New Zealand
Nuova Zelanda
-
+
Nigeria
Nigeria
-
+
Peru
Perù
-
+
Philippines
Filippine
-
+
Poland
Polonia
-
+
Russia
Russia
-
+
Saudi Arabia
Arabia Saudita
-
+
Singapore
Singapore
-
+
South Africa
Sudafrica
-
+
South Korea
Corea del Sud
-
+
Spain
Spagna
-
+
Sweden
Svezia
-
+
Taiwan
Taiwan
-
+
Tunisia
Tunisia
-
+
Turkey
Turchia
-
+
Uganda
Uganda
-
+
United Arab Emirates
Emirati Arabi Uniti
-
+
United Kingdom
Regno Unito
-
+
Yemen
Yemen
-
+
Worldwide
Tutto il mondo
diff --git a/locale/ja_JP.ts b/locale/ja_JP.ts
index baddef2..6051bf5 100644
--- a/locale/ja_JP.ts
+++ b/locale/ja_JP.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Webãã©ã¦ã¶ãªãã§ã大ä¸å¤«!
-
+
Version %1
ãã¼ã¸ã§ã³ %1
-
+
Licensed to: %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.
-
+
You may want to try my other apps as well:
ç§ãä½ã£ãä»ã®ã¢ããªã±ã¼ã·ã§ã³ã«ãèå³ãããã¾ããã
-
+
%1, a YouTube music player
-
+
%1, a music player
%1, ãã¥ã¼ã¸ãã¯ãã¬ã¤ã¤ã¼
-
+
Translate %1 to your native language using %2
%2ã使ã£ã¦ã%1ãããªãã®æ¯èªã«ç¿»è¨³ãã¦ãã ããã
-
+
Icon designed by %1.
ã¢ã¤ã³ã³ã¯%1ããã®ãã¶ã¤ã³ã§ãã
-
+
Released under the <a href='%1'>GNU General Public License</a>
<a href='%1'>GNU General Public License</a>ã§é
å¸ããã¾ã
-
+
&Close
éãã(&C)
-
+
About
ããã°ã©ã ã«ã¤ãã¦
-
+
What you always wanted to know about %1 and never dared to ask
%1ã«ã¤ãã¦ç¥ããããã¨ããã£ãããæããã£ã¦é£çµ¡ããã ãã
@@ -134,6 +134,95 @@
ã©ã¤ã»ã³ã¹ãè³¼å
¥
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
Bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/ç§
-
+
KB/sec
KB/ç§
-
+
MB/sec
MB/ç§
-
+
seconds
ç§
-
+
minutes
å
-
+
%4 %5 remaining
æ®ã %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
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.
-
+
Continue
ç¶ãã
-
+
Get the full version
製åçãå
¥æããã
-
+
%1 downloaded in %2
-
+
Download finished
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
å ´æãå¤æ´...
-
+
Choose the download location
-
+
Download location changed.
-
+
Current downloads will still go in the previous location.
-
+
Downloading to: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
ãã¦ã³ãã¼ã
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
åç
-
+
Pause
ä¸æåæ¢
-
+
Play/Pause
åç/ä¸æåæ¢
-
+
Stop
åæ¢
-
+
Stop playing after current track
ç¾å¨ã®æ²ãçµãã£ããåæ¢
-
+
Next track
次ã®æ²
-
+
Previous track
åã®æ²
-
+
Increase volume
é³éãä¸ãã
-
+
Decrease volume
é³éãä¸ãã
-
+
Mute
ãã¥ã¼ã
-
+
Seek forward
å¾æ¹ã¸
-
+
Seek backward
åæ¹ã¸
@@ -339,27 +428,37 @@
HomeView
-
+
Search
æ¤ç´¢
-
+
Find videos and channels by keyword
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
ãããªã©ãã¯ã¹ãã¾ããã
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
ã¨ã©ã¼
@@ -375,426 +474,436 @@
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
ãã«ã¹ã¯ãªã¼ã³
-
+
Hide the playlist and the toolbar
ãã¬ã¤ãªã¹ãã¨ãã¼ã«ãã¼ãé ã
-
+
Go to the YouTube video page and pause playback
ä¸æåæ¢ãã¦YouTubeã®ãã¼ã¸ãéãã¾ã
-
+
Copy the current video YouTube link to the clipboard
ãã®ãããªã®YouTubeãã¼ã¸ã¸ã®ãªã³ã¯ãã¯ãªãããã¼ãã«ã³ãã¼ãã¾ã
-
+
Copy the current video stream URL to the clipboard
-
+
Find other video parts hopefully in the right order
-
+
&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 the search history. Cannot be undone.
æ¤ç´¢å±¥æ´ãåé¤ãã¾ããåãæ¶ãã¯åºæ¥ã¾ããã
-
+
&Quit
çµäº(&Q)
-
+
Bye
ããã°ã©ã ãçµäº
-
+
&Website
&Webãã¼ã¸ã¸
-
+
%1 on the Web
%1ã®Webãã¼ã¸ãéãã¾ã
-
+
Please support the continued development of %1
%1ã®éçºããµãã¼ããã¦ãã ããï¼
-
+
&About
ããã°ã©ã ã«ã¤ãã¦(&A)
-
+
Info about %1
%1ã«ã¤ãã¦
-
+
Search
æ¤ç´¢
-
+
Mute volume
ãã¥ã¼ãã«ãã
-
-
+
+
&Downloads
ãã¦ã³ãã¼ã(&D)
-
+
Show details about video downloads
-
+
&Download
ãã¦ã³ãã¼ã(&D)
-
+
Download the current video
+ ç¾å¨ã®åç»ããã¦ã³ãã¼ã
+
+
+
+ &Subscribe to Channel
-
+
Share the current video using %1
-
+
&Email
ã¡ã¼ã«(&E)
-
+
Email
ã¡ã¼ã«
-
+
&Close
éãã(&C)
-
+
&Float on Top
-
+
&Stop After This Video
-
+
&Report an Issue...
åé¡ç¹ãå ±å(&R)...
-
+
&Refine Search...
-
+
More...
-
+ ãã®ä»...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
ã¢ããªã±ã¼ã·ã§ã³(&A)
-
+
Buy %1...
%1 ãè³¼å
¥...
-
+
&Playback
-
+ åç(&P)
-
+
&Playlist
ãã¬ã¤ãªã¹ã(&P)
-
+
&Video
åç»(&V)
-
+
&View
表示(&V)
-
+
&Share
å
±æ(&S)
-
+
&Help
ãã«ã(&H)
-
+
Press %1 to raise the volume, %2 to lower it
é³éãä¸ããã«ã¯%1ããä¸ããã«ã¯%2ãæ¼ãã¦ãã ãã
-
-
+
+
Opening %1
%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
-
+
Leave &Full Screen
ãã«ã¹ã¯ãªã¼ã³ã¢ã¼ããçµäºãã(&F)
-
+
%1 version %2 is now available.
%1 ãã¼ã¸ã§ã³ %2 ãå©ç¨å¯è½ã§ã
-
+
Remind me later
ãã¨ã§éç¥ãã
-
+
Update
æ´æ°
-
+
Error: %1
ã¨ã©ã¼: %1
-
+
P&revious
åã¸(&R)
-
+
Go back to the previous track
åã®æ²ã¸é£ã³ã¾ã
-
+
&Compact Mode
ã³ã³ãã¯ã ã¢ã¼ã(&C)
-
+
Open the &YouTube Page
YouTube ã®ãã¼ã¸ãéã(&Y)
-
+
Copy the YouTube &Link
YouTube ã®ãªã³ã¯ãã³ãã¼(&L)
-
+
Copy the Video Stream &URL
-
+
Find Video &Parts
-
+
&Clear Recent Searches
æè¿ã®æ¤ç´¢ãæ¶å»(&C)
-
+
Make a &Donation
å¯ä»ãã(&D)
-
+
&Manually Start Playing
-
+
Manually start playing videos
-
+
Choose your content location
-
+
&Play
åç(&P)
-
+
Resume playback
åçåéãã¾ã
-
+
Remaining time: %1
æ®ãæé: %1
-
+
Volume at %1%
ããªã¥ã¼ã %1%
-
+
Volume is muted
é³éOFFã«ãã¾ãã
-
+
Volume is unmuted
é³éONã«ãã¾ãã
-
+
Maximum video definition set to %1
-
+
Your privacy is now safe
ãã©ã¤ãã·ã¼ã¯ä¿è·ããã¦ãã¾ã
-
+
Downloads complete
ãã¦ã³ãã¼ãå®äº
@@ -802,65 +911,75 @@
MediaView
-
+
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.
-
+
This is just the demo version of %1.
ãã㯠%1 ã®è©¦ç¨çã§ãã
-
+
It allows you to test the application and see if it works for you.
ã¢ããªã±ã¼ã·ã§ã³ã®ãã¹ããåä½ç¢ºèªã«ãå©ç¨ããã ãã¾ãã
-
+
Continue
ç¶ãã
-
+
of
Used in video parts, as in '2 of 3'
-
+
part
This is for video parts, as in 'Cool video - part 1'
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
-
+
Sent from %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
製åçãå
¥æããã
-
+
Downloading %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1å é²è¦§
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
失æ
-
+
Completed
å®äº
-
+
Stopped
-
+
Stop downloading
ãã¦ã³ãã¼ããåæ¢
-
+
Show in %1
-
+
Open parent folder
親ãã©ã«ãã¼ãéã
-
+
Restart downloading
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
æ¤ç´¢ä¸...
-
+
Show %1 More
ããã«%1ã¨ã³ããªè¦³ã
-
+
No videos
è¦ã¤ããã¾ããã§ãã
-
+
No more videos
è¦ã¤ããã¾ããã§ãã
@@ -985,117 +1104,117 @@
RefineSearchWidget
-
+
Sort by
並ã³é
-
+
Relevance
-
-
+
+
Date
æ¥ä»
-
+
View Count
é²è¦§åæ°
-
+
Rating
-
+
Anytime
-
+
Today
ä»æ¥
-
+
7 Days
-
+ 7æ¥é
-
+
30 Days
-
+ 30æ¥é
-
+
Duration
-
-
+
+
All
ãã¹ã¦
-
+
Short
-
+
Medium
-
+
Long
-
+
Less than 4 minutes
-
+ 4å以ä¸
-
+
Between 4 and 20 minutes
-
+ 4ï½20å
-
+
Longer than 20 minutes
-
+ 20åè¶
-
+
Quality
å質
-
+
High Definition
-
+
720p or higher
-
+
Done
-
+ å®äº
RegionsView
-
+
Done
å®äº
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
ãããã<a href='%1'>%2</a>ã¸ï¼
-
+
Get the full version
製åçãå
¥æããã
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
-
+
a keyword
-
+
a channel
-
+
to start watching videos.
-
+
Watch
æ¤ç´¢
-
+
Recent keywords
æè¿æ¤ç´¢ãããã¼ã¯ã¼ã
-
+
Recent channels
æè¿ã®ãã£ã³ãã«
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
æ»ã(&B)
-
+
Forward to %1
%1 ã«é²ã
-
+
Back to %1
%1 ã«æ»ã
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
-
+
Did you mean: %1
ããããã¦: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
-
+
Network error: %1 for %2
ãããã¯ã¼ã¯ã¨ã©ã¼: %1 (%2ã¸ã®ã¢ã¯ã»ã¹ã«ã¦)
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
ã¢ã«ã¸ã§ãªã¢
-
+
Argentina
ã¢ã«ã¼ã³ãã³
-
+
Australia
ãªã¼ã¹ãã©ãªã¢
-
+
Belgium
ãã«ã®ã¼
-
+
Brazil
ãã©ã¸ã«
-
+
Canada
ã«ãã
-
+
Chile
ããª
-
+
Colombia
ã³ãã³ãã¢
-
+
Czech Republic
ãã§ã³å
񆆫
-
+
Egypt
ã¨ã¸ãã
-
+
France
ãã©ã³ã¹
-
+
Germany
ãã¤ã
-
+
Ghana
ã¬ã¼ã
-
+
Greece
ã®ãªã·ã£
-
+
Hong Kong
é¦æ¸¯
-
+
Hungary
ãã³ã¬ãªã¼
-
+
India
ã¤ã³ã
-
+
Indonesia
ã¤ã³ããã·ã¢
-
+
Ireland
ã¢ã¤ã«ã©ã³ã
-
+
Israel
ã¤ã¹ã©ã¨ã«
-
+
Italy
ã¤ã¿ãªã¢
-
+
Japan
æ¥æ¬
-
+
Jordan
ã¨ã«ãã³
-
+
Kenya
ã±ãã¢
-
+
Malaysia
ãã¬ã¼ã·ã¢
-
+
Mexico
ã¡ãã·ã³
-
+
Morocco
ã¢ããã³
-
+
Netherlands
ãªã©ã³ã
-
+
New Zealand
ãã¥ã¼ã¸ã¼ã©ã³ã
-
+
Nigeria
ãã¤ã¸ã§ãªã¢
-
+
Peru
ãã«ã¼
-
+
Philippines
ãã£ãªãã³
-
+
Poland
ãã¼ã©ã³ã
-
+
Russia
ãã·ã¢
-
+
Saudi Arabia
ãµã¦ã¸ã¢ã©ãã¢
-
+
Singapore
ã·ã³ã¬ãã¼ã«
-
+
South Africa
åã¢ããªã«
-
+
South Korea
éå½
-
+
Spain
ã¹ãã¤ã³
-
+
Sweden
ã¹ã¦ã§ã¼ãã³
-
+
Taiwan
å°æ¹¾
-
+
Tunisia
ãã¥ãã¸ã¢
-
+
Turkey
ãã«ã³
-
+
Uganda
ã¦ã¬ã³ã
-
+
United Arab Emirates
ã¢ã©ãé¦é·å½é£é¦
-
+
United Kingdom
ã¤ã®ãªã¹
-
+
Yemen
ã¤ã¨ã¡ã³
-
+
Worldwide
å
¨ä¸ç
diff --git a/locale/jv.ts b/locale/jv.ts
deleted file mode 100644
index fe51334..0000000
--- a/locale/jv.ts
+++ /dev/null
@@ -1,1476 +0,0 @@
-
-UTF-8
-
- AboutView
-
-
- There's life outside the browser!
- Ningkene yoiku urip ning njobone browser!
-
-
-
- Version %1
- Versi %1
-
-
-
- Licensed to: %1
-
-
-
-
- %1 is Free Software but its development takes precious time.
- %1 yoiku Software bebas tapi pangembangane iku mbutuhake wektu sing berhargo.
-
-
-
- Please <a href='%1'>donate</a> to support the continued development of %2.
- Sumonggo <a href='%1'>Nyumbang</a> kanggo ndukung kelanjutane pangembangane seko %2.
-
-
-
- You may want to try my other apps as well:
- Njenengan mungkinwae pingin nyobi aplikasiku liyane jua:
-
-
-
- %1, a YouTube music player
- %1, sakwijining YouTube nggonyetel musik
-
-
-
- %1, a music player
- %1, sakwijining penyetelan musik
-
-
-
- Translate %1 to your native language using %2
- Terjemahke %1 ring boso aslimu gunakno %2
-
-
-
- Icon designed by %1.
- Ndesain ikon oleh %1.
-
-
-
- Released under the <a href='%1'>GNU General Public License</a>
- Dirilis nok ngisore the <a href='%1'>GNU Pusate Lisensine Publik</a>
-
-
-
- &Close
- &Tutup
-
-
-
- About
- Seputarane
-
-
-
- What you always wanted to know about %1 and never dared to ask
- Opo sing kowe slalu kepingin kanggo ngreteni sekitarane %1 lan oratau wani kanggo takon
-
-
-
- ActivationDialog
-
-
- Enter your License Details
-
-
-
-
- &Email:
-
-
-
-
- &Code:
-
-
-
-
- ActivationView
-
-
- Please license %1
- Sumonggo lisensi %1
-
-
-
- This demo has expired.
- Iki demo yo wis enthek.
-
-
-
- The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
-
-
-
- Without a license, the application will expire in %1 days.
-
-
-
-
- By purchasing the full version, you will also support the hard work I put into creating %1.
- Thek tuku versi lengkap, njenengan pingin ugo kadukung karo kerjokeras Kulo dalehi ing njeroning kreasi %1.
-
-
-
- Use Demo
- Gunakke Demo
-
-
-
- Enter License
-
-
-
-
- Buy License
-
-
-
-
- ClearButton
-
-
- Clear
- Resik
-
-
-
- DownloadItem
-
-
- bytes
- bit
-
-
-
- KB
- KB
-
-
-
- MB
- MB
-
-
-
- bytes/sec
- bit/detik
-
-
-
- KB/sec
- KB/detik
-
-
-
- MB/sec
- MB/detik
-
-
-
- seconds
- detik
-
-
-
- minutes
- menit
-
-
-
- %4 %5 remaining
- %4 %5 sisone
-
-
-
- DownloadManager
-
-
- This is just the demo version of %1.
- Iki yoiku mung versi demo seko %1.
-
-
-
- It can only download videos shorter than %1 minutes so you can test the download functionality.
- Iku isone mung ngunduh video sing cekak sekokaro %1 menit sahinggo kowe iso ngetest fungsinane unduhane.
-
-
-
- Continue
- Terusno
-
-
-
- Get the full version
- Enthukno versi komplite
-
-
-
- %1 downloaded in %2
- %1 ngunduhe ing %2
-
-
-
- Download finished
- Ngunduhe wislebar
-
-
-
- %n Download(s)
- %n Ngunduh-unduh(s) %n Ngunduh(s)
-
-
-
- DownloadSettings
-
-
- Change location...
- ngGanti lokasi...
-
-
-
- Choose the download location
- Mileho lokasine unduhan
-
-
-
- Download location changed.
- Lokasi ngunduhe diganti.
-
-
-
- Current downloads will still go in the previous location.
- Downloadte sing sakiki iseh arep mlebu ning lokasi sakdurunge.
-
-
-
- Downloading to: %1
- Ngunduhi reng: %1
-
-
-
- DownloadView
-
-
-
- Downloads
- Ngunduh-unduh
-
-
-
- DownloadWidget
-
-
- Downloading update...
-
-
-
-
- GlobalShortcuts
-
-
- Play
- Nyetel
-
-
-
- Pause
- Lheren sedelhok
-
-
-
- Play/Pause
- Nyetel/Lheren
-
-
-
- Stop
- Mandhek
-
-
-
- Stop playing after current track
- Mandhek nyetele sakwise trek saat iki
-
-
-
- Next track
- Trek saklanjute
-
-
-
- Previous track
- Trek sakdurunge
-
-
-
- Increase volume
- Nambahake volume
-
-
-
- Decrease volume
- Ngurangi volume
-
-
-
- Mute
- Mbisu
-
-
-
- Seek forward
- Nyepetno mengarep
-
-
-
- Seek backward
- Nyepetno memburi
-
-
-
- HomeView
-
-
- Search
- Nelusuri
-
-
-
- Find videos and channels by keyword
-
-
-
-
- Browse
-
-
-
-
- Browse videos by category
-
-
-
-
- Make yourself comfortable
-
-
-
-
- LoadingWidget
-
-
- Error
- Error
-
-
-
- MainWindow
-
-
- &Stop
- &Mandheg
-
-
-
- Stop playback and go back to the search view
- Mandheg playback lan mbalik ning tampilan ngGo ngGoleki
-
-
-
- S&kip
- S&kip
-
-
-
- Skip to the next video
- Lewati reng video saklanjute
-
-
-
-
- &Pause
- &Lheren
-
-
-
-
- Pause playback
- Lheren sedhelok pemutarane
-
-
-
- &Full Screen
- &Layar Kebak
-
-
-
- Go full screen
- Ing Layar Kebak
-
-
-
- Hide the playlist and the toolbar
- Ndhelikno playlist lan toolbar
-
-
-
- Go to the YouTube video page and pause playback
- Lungo Ing halamane video YouTube land nglereni penyetelan
-
-
-
- Copy the current video YouTube link to the clipboard
- Njiplak link-nge video YouTube sing sakiki ning clipboard
-
-
-
- Copy the current video stream URL to the clipboard
- Njiplak video stream URL sing sakiki ning clipboard
-
-
-
- Find other video parts hopefully in the right order
- nggoleki seri video liyone diharapno ing order sing bener
-
-
-
- &Remove
- &ngGuwak
-
-
-
- Remove the selected videos from the playlist
- ngGuwak video sing diseleksi seko playlist
-
-
-
- Move &Up
- Mindah &Unggah
-
-
-
- Move up the selected videos in the playlist
- Mindahno menduwur video sing diseleksi ning playlistt
-
-
-
- Move &Down
- Mindah &Mudhun
-
-
-
- Move down the selected videos in the playlist
- Mindahno mengisor video sing diseleksi ning daftar-nyetel
-
-
-
- Clear the search history. Cannot be undone.
- Ngresiki riwayate penelusuran. Ora iso di balikake.
-
-
-
- &Quit
- &Medhal
-
-
-
- Bye
- Bye
-
-
-
- &Website
- &Website
-
-
-
- %1 on the Web
- %1 nok the Web
-
-
-
- Please support the continued development of %1
- Sumonggo ndukungo kelanjutane pangembangane seko %1
-
-
-
- &About
- &Tentange
-
-
-
- Info about %1
- Info sakitarane %1
-
-
-
- Search
- Nelusuri
-
-
-
- Mute volume
- mBisukno volumene
-
-
-
-
- &Downloads
- &nDownloads
-
-
-
- Show details about video downloads
- Tampilno detaile sak kitarane unduhan-unduhane video
-
-
-
- &Download
- &nDownload
-
-
-
- Download the current video
- Ngunduhi video sing saat iki
-
-
-
- Share the current video using %1
- ngeshare video ketuang keenggo %1
-
-
-
- &Email
- &Layanginternet
-
-
-
- Email
- Layanginternet
-
-
-
- &Close
- &Tutup
-
-
-
- &Float on Top
- &Ngambang ing Pucuk
-
-
-
- &Stop After This Video
- &Mandek Sakwise Video Iki
-
-
-
- &Report an Issue...
- &Laporke sakwijining Isu...
-
-
-
- &Refine Search...
- &Nyaring Penggolekan...
-
-
-
- More...
-
-
-
-
- &Related Videos
-
-
-
-
- Watch videos related to the current one
-
-
-
-
- &Application
- &Applikasi
-
-
-
- Buy %1...
- Tuku %1...
-
-
-
- &Playback
- &Mbaliknyetel
-
-
-
- &Playlist
- &Daftar-nyetel
-
-
-
- &Video
- &Video
-
-
-
- &View
- &nDelok
-
-
-
- &Share
- &Ngedumi
-
-
-
- &Help
- &Nulung
-
-
-
- Press %1 to raise the volume, %2 to lower it
- Pejhet %1 kanggo ningkatno volume, %2 kanggo ngrendahno iku
-
-
-
-
- Opening %1
- Mbukak'i %1
-
-
-
- Do you want to exit %1 with a download in progress?
- Opo kowe pingin metu %1 karo sakwijine unduhan sing isih mlaku prosese?
-
-
-
- If you close %1 now, this download will be cancelled.
- Tek kowe nutup %1 sakiki, ngunduhane iki arep dibatalake.
-
-
-
- Close and cancel download
- Tutup lan mbatalake ngunduhine
-
-
-
- Wait for download to finish
- Nunggu kanggo unduhane rampung
-
-
-
- Leave &Full Screen
- Ninggalno &LayarKebak
-
-
-
- %1 version %2 is now available.
- %1 versinipun %2 yo disediakno sakniki.
-
-
-
- Remind me later
- Elingno kulo mengkowae
-
-
-
- Update
- Nganyarke
-
-
-
- Error: %1
- Error: %1
-
-
-
- P&revious
- P&revious
-
-
-
- Go back to the previous track
- Mbaliko meneh ing sakdurunge trekipun
-
-
-
- &Compact Mode
- &Mode Praktis
-
-
-
- Open the &YouTube Page
- Mbukak &YouTube Halamane
-
-
-
- Copy the YouTube &Link
- Njiplak YouTube &Link
-
-
-
- Copy the Video Stream &URL
- Njiplak Video Stream &URL
-
-
-
- Find Video &Parts
- Nggoleki Video &Seri
-
-
-
- &Clear Recent Searches
- &Ngresiki Penggolekan Sing ketuang
-
-
-
- Make a &Donation
- Nggawe sakwijining &Sumbangan
-
-
-
- &Manually Start Playing
- &Mainke Secoro Manual
-
-
-
- Manually start playing videos
- Ngawiti maenke video secoro manual
-
-
-
- Choose your content location
-
-
-
-
- &Play
- &Nyetel
-
-
-
- Resume playback
- Nglanjutno nyetel-ulang
-
-
-
- Remaining time: %1
- Sisone wektune: %1
-
-
-
- Volume at %1%
- Volume nok %1%
-
-
-
- Volume is muted
- Volume yo Mbisu
-
-
-
- Volume is unmuted
- Volume yo orak mbisu
-
-
-
- Maximum video definition set to %1
- Maksimale video definisine diset ning %1
-
-
-
- Your privacy is now safe
- Privasimu yoiku sakiki aman
-
-
-
- Downloads complete
- Unduhane komplit
-
-
-
- MediaView
-
-
- You can now paste the YouTube link into another application
- Kowe iso paste YouTube link sakiki ninggone aplikasi liyane
-
-
-
- You can now paste the video stream URL into another application
- Kowe sakiki iso paste video stream URL ninggone aplikasi liyane
-
-
-
- The link will be valid only for a limited time.
- Link-nge kepingin diaslikake mung kanggo sak terbatase wektu.
-
-
-
- This is just the demo version of %1.
- Iki yoiku mung demo version of %1.
-
-
-
- It allows you to test the application and see if it works for you.
- Iki diolehno kowe kanggo ngetest aplikasine lan ndeloki tek iku fungsi kanggo kowe.
-
-
-
- Continue
- Nglanjutke
-
-
-
- of
- Used in video parts, as in '2 of 3'
- seko
-
-
-
- part
- This is for video parts, as in 'Cool video - part 1'
- seri
-
-
-
- episode
- This is for video parts, as in 'Cool series - episode 1'
- episode
-
-
-
- Sent from %1
- Kirim seko %1
-
-
-
- Get the full version
- Entukno versi komplite
-
-
-
- Downloading %1
- Ngunduhi %1
-
-
-
- MessageWidget
-
-
- A new version of %1 is available!
-
-
-
-
- %1 %2 is now available. You have %3.
-
-
-
-
- Would you like to download it now?
-
-
-
-
- Skip This Version
-
-
-
-
- Remind Me Later
-
-
-
-
- Install Update
-
-
-
-
- PasteLineEdit
-
-
- Paste
-
-
-
-
- PlaylistItemDelegate
-
-
- %1 views
- %1 tampilan
-
-
-
- %1 of %2 (%3) â %4
-
-
-
-
- Preparing
-
-
-
-
- Failed
-
-
-
-
- Completed
-
-
-
-
- Stopped
-
-
-
-
- Stop downloading
-
-
-
-
- Show in %1
-
-
-
-
- Open parent folder
-
-
-
-
- Restart downloading
-
-
-
-
- PlaylistModel
-
-
- Searching...
- ngGoleki...
-
-
-
- Show %1 More
-
-
-
-
- No videos
- Ora video
-
-
-
- No more videos
- Rak ono video meneh
-
-
-
- RefineSearchWidget
-
-
- Sort by
- Bidik didasarke
-
-
-
- Relevance
- Relefan
-
-
-
-
- Date
- Tanggale
-
-
-
- View Count
- Ndeloki Itungane
-
-
-
- Rating
- Rating
-
-
-
- Anytime
- Kapanwae
-
-
-
- Today
- Dinoiki
-
-
-
- 7 Days
- 7 Ndino
-
-
-
- 30 Days
- 30 Dino
-
-
-
- Duration
- Durasine
-
-
-
-
- All
- Kabeh
-
-
-
- Short
- Cekak
-
-
-
- Medium
- Sedengan
-
-
-
- Long
- Dowo
-
-
-
- Less than 4 minutes
- Kurang seko 4 menit
-
-
-
- Between 4 and 20 minutes
- Antarane 4 lan 20 menit
-
-
-
- Longer than 20 minutes
- Dowone luwih seko 20 menit
-
-
-
- Quality
- Kualitas
-
-
-
- High Definition
- Definisi duwur
-
-
-
- 720p or higher
- 720p utowo saknduwure
-
-
-
- Done
- Rampung
-
-
-
- RegionsView
-
-
- Done
-
-
-
-
- SearchLineEdit
-
-
- Search
- Nelusuri
-
-
-
- SearchView
-
-
- Welcome to <a href='%1'>%2</a>,
- Sugengrawuh kanggo <a href='%1'>%2</a>,
-
-
-
- Get the full version
- Enthukno versi komplite
-
-
-
- Enter
- "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
- Lebokno
-
-
-
- a keyword
- sakwiji kata-kunci
-
-
-
- a channel
- sakwiji saluran
-
-
-
- to start watching videos.
- kanggo ngawiti nyeksikake video.
-
-
-
- Watch
- Nonton
-
-
-
- Recent keywords
- Kata-kunci saat iki
-
-
-
- Recent channels
- Saluran lagekwae
-
-
-
- SidebarHeader
-
-
-
- &Back
- &mBuri
-
-
-
- Forward to %1
-
-
-
-
- Back to %1
-
-
-
-
- SidebarWidget
-
-
- Refine Search
- Nyaring Penggolekane
-
-
-
- Did you mean: %1
- Opo sing bekmaksud: %1
-
-
-
- StandardFeedsView
-
-
- Most Popular
-
-
-
-
- Featured
-
-
-
-
- Most Shared
-
-
-
-
- Most Discussed
-
-
-
-
- Top Rated
-
-
-
-
- Video
-
-
- Cannot get video stream for %1
- Rak iso ngenthukno video stream kanggo %1
-
-
-
- Network error: %1 for %2
- Jaringane error: %1 por %2
-
-
-
- YTRegions
-
-
- Algeria
-
-
-
-
- Argentina
-
-
-
-
- Australia
-
-
-
-
- Belgium
-
-
-
-
- Brazil
-
-
-
-
- Canada
-
-
-
-
- Chile
-
-
-
-
- Colombia
-
-
-
-
- Czech Republic
-
-
-
-
- Egypt
-
-
-
-
- France
-
-
-
-
- Germany
-
-
-
-
- Ghana
-
-
-
-
- Greece
-
-
-
-
- Hong Kong
-
-
-
-
- Hungary
-
-
-
-
- India
-
-
-
-
- Indonesia
-
-
-
-
- Ireland
-
-
-
-
- Israel
-
-
-
-
- Italy
-
-
-
-
- Japan
-
-
-
-
- Jordan
-
-
-
-
- Kenya
-
-
-
-
- Malaysia
-
-
-
-
- Mexico
-
-
-
-
- Morocco
-
-
-
-
- Netherlands
-
-
-
-
- New Zealand
-
-
-
-
- Nigeria
-
-
-
-
- Peru
-
-
-
-
- Philippines
-
-
-
-
- Poland
-
-
-
-
- Russia
-
-
-
-
- Saudi Arabia
-
-
-
-
- Singapore
-
-
-
-
- South Africa
-
-
-
-
- South Korea
-
-
-
-
- Spain
-
-
-
-
- Sweden
-
-
-
-
- Taiwan
-
-
-
-
- Tunisia
-
-
-
-
- Turkey
-
-
-
-
- Uganda
-
-
-
-
- United Arab Emirates
-
-
-
-
- United Kingdom
-
-
-
-
- Yemen
-
-
-
-
- Worldwide
-
-
-
-
\ No newline at end of file
diff --git a/locale/ky.ts b/locale/ky.ts
index 873c2fd..14aa41b 100644
--- a/locale/ky.ts
+++ b/locale/ky.ts
@@ -3,74 +3,74 @@
AboutView
-
+
There's life outside the browser!
ÐÑаÑзеÑдин ÑÑÑÑÐ½Ð´Ð°Ð³Ñ Ð¶Ð°Ñоо!
-
+
Version %1
ÐеÑÑÐ¸Ñ %1
-
+
Licensed to: %1
- ÐиÑензиÑланган: %1
+ %1 Ò¯Ñүн лиÑензиÑланган
-
+
%1 is Free Software but its development takes precious time.
- %1 деген ÑÑкин ÐÐ, биÑок анÑн иÑÑеÑÒ¯Ò¯ÑÒ¯ Ó©ÑÓ© көп ÑбакÑÑÑÐ¼Ð´Ñ Ð°Ð»Ð°Ñ.
+ %1 â Ð±ÐµÐºÐµÑ Ð¿ÑогÑаммалÑк жабдÑк, биÑок анÑн иÑÑеÑÒ¯Ò¯ÑÒ¯ көп ÑбагÑÐ¼Ð´Ñ Ð°Ð»Ð°Ñ.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
- Сизден Ó©Ñүнөм, %2'ка <a href='%1'>ÑаÑÑÑÑ ÐºÑлÑп</a> мÑндан аÑÐºÑ Ð¸ÑÑеÑÒ¯Ò¯Ñүн колдоп беÑиңиз .
+ %2'га <a href='%1'>ÑаÑÑÑÑ ÐºÑлÑп</a> мÑндан аÑÐºÑ Ð¸ÑÑеÑÒ¯Ò¯Ñүн колдоп беÑиңиз.
-
+
You may want to try my other apps as well:
- Сиз менин Ð´Ð°Ð³Ñ Ð±Ð°Ñка ÑиÑкемелеÑимди каÑап көÑÑөңүз болоÑ:
+ ÐаÑка ÑиÑкемелеÑимди да каÑап көÑÑөңүз болоÑ:
-
+
%1, a YouTube music player
%1, YouTube мÑзÑка ойноÑкÑÑÑ
-
+
%1, a music player
%1, мÑзÑка ойноÑкÑÑÑ
-
+
Translate %1 to your native language using %2
- %1'ÑÑ %2 аÑкÑлÑÑ Ñиздин Ñне Ñилиңизге коÑоÑÑÑ
+ %2 аÑкÑлÑÑ %1'Ð´Ñ Ó©Ð· Ñне Ñилиңизге коÑоÑÑÒ£Ñз
-
+
Icon designed by %1.
ÐконканÑн авÑоÑÑ %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
<a href='%1'>GNU General Public License</a> ÑаÑÑÑнда ÑÑгаÑÑлган
-
+
&Close
&ÐабÑÑ
-
+
About
ÐÑогÑамма жөнүндө
-
+
What you always wanted to know about %1 and never dared to ask
- %1 жөнүндө дайма билгиңиз келген неÑÑÐµÐ»ÐµÑ Ð¶Ð°Ð½Ð° ÑÑ ÑбакÑа алаÑÐ´Ñ ÑÑÑамак ÑмеÑÑиз
+ %1 жөнүндө дайÑма билгиңиз келген неÑÑÐµÐ»ÐµÑ Ð±Ð¸Ñок ÑÑÑаганга мүмкүнÑүлүгүңүз жок болгон
@@ -88,7 +88,7 @@
&Code:
- &Ðод:
+ &ÐодÑ:
@@ -106,17 +106,17 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
- ТолÑк веÑÑиÑÑÑ %1 мүнөÑÑөн көбүÑөөк видеолоÑÐ´Ñ Ð¶Ò¯ÐºÑөгөнгө жана видеолоÑÐ´Ñ Ò¯Ð·Ð³Ò¯Ð»ÑүкÑүз көÑгөнгө ÑÑÑкÑÐ°Ñ Ð±ÐµÑеÑ.
+ ТолÑк веÑÑиÑÑÑ %1 минÑÑадан көбүÑөөк видеолоÑÐ´Ñ Ð¶Ò¯ÐºÑөгөнгө жана видеолоÑÐ´Ñ Ò¯Ð·Ð³Ò¯Ð»ÑүкÑүз көÑгөнгө ÑÑÑкÑÐ°Ñ Ð±ÐµÑеÑ.
Without a license, the application will expire in %1 days.
- ÐиÑензиÑÑÑ Ð¶Ð¾Ðº болгон Ò¯Ñүн, ÑиÑкеменин мөөнөÑÒ¯ %1 күндөн кийин бүÑÓ©Ñ.
+ ÐиÑензиÑÑÑз болгондÑкÑан, ÑиÑкеменин мөөнөÑÒ¯ %1 күндөн кийин бүÑÓ©Ñ.
By purchasing the full version, you will also support the hard work I put into creating %1.
- ТолÑк веÑÑиÑÑÑн алганда, %1 Ò¯Ñүн Ð¾Ð¾Ñ Ñмгек ÑалÑм кÑлÑп жаÑканÑÐ¼Ð´Ñ Ð´Ð° колдоп беÑеÑиз.
+ ТолÑк веÑÑиÑÑÑн алÑаңÑз, %1 Ò¯Ñүн Ð¾Ð¾Ñ Ð¶ÑмÑÑ ÐºÑлÑп жаÑканÑÐ¼Ð´Ñ Ð´Ð° колдоп беÑе алаÑÑз.
@@ -134,6 +134,95 @@
ÐиÑензиÑÐ½Ñ ÑаÑÑп алÑÑ
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ ÐаÑдÑк видеолоÑ
+
+
+
+ Unwatched Videos
+ ÐÓ©Ñүлбөгөн видеолоÑ
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ ÐааÑÑн көÑүлдү деп белгилөө
+
+
+
+ Show Updated
+ ÐаңÑланганÑн көÑÑÓ©ÑÒ¯Ò¯
+
+
+
+ Name
+ ÐÑÑ
+
+
+
+ Last Updated
+ Ð¡Ð¾Ò£ÐºÑ Ð¶Ð°Ò£ÑлангандаÑ
+
+
+
+ Last Added
+ Ð¡Ð¾Ò£ÐºÑ ÐºÐ¾ÑÑлгандаÑ
+
+
+
+ Last Watched
+ Ð¡Ð¾Ò£ÐºÑ ÐºÓ©ÑүлгөндөÑ
+
+
+
+ Most Watched
+ ÐÒ£ көп көÑүлгөндөÑ
+
+
+
+ Sort by
+ СоÑÑÑоо
+
+
+
+ All Videos
+ ÐаÑдÑк видеолоÑ
+
+
+
+ Unwatched Videos
+ ÐÓ©Ñүлбөгөн видеолоÑ
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
байÑ
-
+
KB
ÐÐ
-
+
MB
ÐÐ
-
+
bytes/sec
байÑ/Ñек
-
+
KB/sec
ÐÐ/Ñек
-
+
MB/sec
ÐÐ/Ñек
-
+
seconds
ÑекÑнда
-
+
minutes
- мүнөÑ
+ минÑÑа
-
+
%4 %5 remaining
%4 %5 калдÑ
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
- ÐÑл пÑогÑамма %1'ÑÑн демо-веÑÑиÑÑÑ Ð±Ð¾Ð»Ð¾Ñ.
+ ÐÑл жөн Ñле %1'дÑн демо-веÑÑиÑÑÑ.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
- ÐүкÑÓ©Ó© ÑÑнкÑионалдÑÑлÑгÑн ÑекÑеÑÒ¯Ò¯ Ò¯Ñүн, бÑл %1 мүнөÑÑөн кÑÑкаÑаак видеолоÑÐ´Ñ Ð³Ð°Ð½Ð° жүкÑөп беÑе алаÑ.
+ ÐүкÑÓ©Ó© ÑÑнкÑионалдÑÑлÑгÑн ÑекÑеÑÒ¯Ò¯ Ò¯Ñүн, бÑл %1 минÑÑадан кÑÑкаÑаак видеолоÑÐ´Ñ Ð³Ð°Ð½Ð° жүкÑөп беÑе алаÑ.
-
+
Continue
УланÑÑÑ
-
+
Get the full version
ТолÑк веÑÑиÑÑÑн алÑÑ
-
+
%1 downloaded in %2
- %1 ÑÐ°Ð¹Ð»Ñ %2 жеÑине жүкÑөлдү
+ %2 жеÑине %1 ÑÐ°Ð¹Ð»Ñ Ð¶Ò¯ÐºÑөлдү
-
+
Download finished
ÐүкÑөп алÑÑ Ð°ÑкÑалдÑ
-
+
%n Download(s)
@@ -231,36 +320,36 @@
DownloadSettings
-
+
Change location...
- ÐүкÑÓ©Ó© жеÑин өзгөÑÑÒ¯Ò¯...
+ ÐайгаÑкан жеÑин өзгөÑÑÒ¯Ò¯...
-
+
Choose the download location
- ÐүкÑÓ©Ó© жеÑин Ñандоо
+ ÐүкÑөп алÑÑ Ð¶ÐµÑин Ñандоо
-
+
Download location changed.
ÐүкÑөп алÑÑ Ð¶ÐµÑи өзгөÑÑүлдү.
-
+
Current downloads will still go in the previous location.
- ÐезекÑеги жүкÑÓ©Ó©Ð»Ó©Ñ Ð¼ÑÑÑÐ½ÐºÑ Ð¶ÐµÑинде ÑакÑалаÑ.
+ ÐезекÑе жүкÑөлүп жаÑÐºÐ°Ð½Ð´Ð°Ñ Ð¼ÑÑÑÐ½ÐºÑ Ð¶ÐµÑге ÑакÑалаÑ.
-
+
Downloading to: %1
- ÐүкÑөлүп жаÑкан жеÑи: %1
+ %1 папкаÑÑна жүкÑөлүүдө
DownloadView
-
-
+
+
Downloads
ÐүкÑөөлөÑ
@@ -270,68 +359,68 @@
Downloading update...
- ÐаңÑÑÑÑÑлаÑÐ´Ñ Ð¶Ò¯ÐºÑөп алÑÑ...
+ ÐаңÑлоо жүкÑөлүүдө...
GlobalShortcuts
-
+
Play
ÐйноÑÑÑ
-
+
Pause
ÐÐ¸Ñ Ð°Ð·Ð³Ð° ÑокÑоÑÑÑ
-
+
Play/Pause
ÐйноÑÑÑ/ÐÐ¸Ñ Ð°Ð·Ð³Ð° ÑокÑоÑÑÑ
-
+
Stop
ТокÑоÑÑÑ
-
+
Stop playing after current track
ÐезекÑеги жолÑодон кийин ойноÑÑÑÐ½Ñ ÑокÑоÑÑÑ
-
+
Next track
Ðийинки жолÑо
-
+
Previous track
ÐÑÑÑÐ½ÐºÑ Ð¶Ð¾Ð»Ñо
-
+
Increase volume
ÐаÑÑÑÑаак
-
+
Decrease volume
ÐкÑÑÑнÑÑаак
-
+
Mute
ÐаÑаңдаÑÑÑ
-
+
Seek forward
Ðлга ÑÒ¯ÑÒ¯Ò¯
-
+
Seek backward
ÐÑÑка ÑÒ¯ÑÒ¯Ò¯
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Ðздөө
-
+
Find videos and channels by keyword
ÐÑкÑÑ Ñөз менен видеолоÑÐ´Ñ Ð¶Ð°Ð½Ð° каналдаÑÐ´Ñ ÑабÑÒ£Ñз
-
+
Browse
СеÑеп
-
+
Browse videos by category
- ÐидеолоÑÐ´Ñ ÐºÐ°ÑегоÑÐ¸Ñ Ð±Ð¾ÑнÑа каÑоо
+ ÐидеолоÑÐ´Ñ ÐºÐ°ÑегоÑиÑÑÑ Ð±Ð¾ÑнÑа каÑоо
-
+
+ Subscriptions
+ ÐазÑлÑÑлаÑ
+
+
+
+ Channel subscriptions
+ Ðанал жазÑлÑÑлаÑÑ
+
+
+
Make yourself comfortable
Өз үйүңүздөгүдөй болÑÒ£Ñз
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
ÐаÑа
@@ -375,426 +474,436 @@
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
- ТолÑк ÑкÑан Ñежимине Ó©ÑÒ¯Ò¯
+ ТолÑк ÑкÑанга Ó©ÑÒ¯Ò¯
-
+
Hide the playlist and the toolbar
ÐйноÑÑÑ ÑизмеÑин жана аÑпап панелин жаÑÑÑÑÑ
-
+
Go to the YouTube video page and pause playback
ÐидеонÑн YouTube баÑагÑна Ó©ÑÒ¯Ò¯ жана ойноÑÑÑÐ½Ñ Ð±Ð¸Ñ Ð°Ð·Ð³Ð° ÑокÑоÑÑÑ
-
+
Copy the current video YouTube link to the clipboard
ÐезекÑеги видеонÑн YouTube ÑилÑемеÑин алмаÑÑÑ Ð±ÑÑеÑине көÑÒ¯ÑÒ¯Ò¯
-
+
Copy the current video stream URL to the clipboard
ÐезекÑеги видео агÑмдÑн даÑегин алмаÑÑÑ Ð±ÑÑеÑине көÑÒ¯ÑÒ¯Ò¯
-
+
Find other video parts hopefully in the right order
ÐидеонÑн баÑка бөлүкÑÓ©Ñүн Ò¯Ð¼Ò¯Ñ ÐºÑлÑп ÑÑÑÑа иÑеÑи менен ÑабÑÑ
-
+
&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 the search history. Cannot be undone.
Ðздөө ÑаÑÑÑ
Ñн Ñазалоо. ӨзгөÑÑÒ¯Ò¯Ð»Ó©Ñ ÐºÐ°Ð¹ÑаланбаÑ.
-
+
&Quit
&ЧÑгÑÑ
-
+
Bye
ÐÐ¾Ñ Ð±Ð¾Ð»ÑÒ£Ñз
-
+
&Website
&Ðеб-ÑайÑ
-
+
%1 on the Web
%1 инÑеÑнеÑÑе
-
+
Please support the continued development of %1
%1'дÑн мÑндан аÑÐºÑ Ð¸ÑÑеÑÒ¯Ò¯Ñүн колдоп беÑиңиз
-
+
&About
ÐÑогÑамма &жөнүндө
-
+
Info about %1
%1 жөнүндө маалÑмаÑ
-
+
Search
Ðздөө
-
+
Mute volume
Үндү Ó©ÑÒ¯ÑÒ¯Ò¯
-
-
+
+
&Downloads
&ÐүкÑөөлөÑ
-
+
Show details about video downloads
Ðидео жүкÑөөлөÑÒ¯ жөнүндө коÑÑмÑа маалÑÐ¼Ð°Ñ ÐºÓ©ÑÑÓ©ÑÒ¯Ò¯
-
+
&Download
&ÐүкÑөп алÑÑ
-
+
Download the current video
ÐезекÑеги Ð²Ð¸Ð´ÐµÐ¾Ð½Ñ Ð¶Ò¯ÐºÑөп алÑÑ
-
+
+ &Subscribe to Channel
+ Ðаналга &жазÑлÑÑ
+
+
+
Share the current video using %1
ÐезекÑеги Ð²Ð¸Ð´ÐµÐ¾Ð½Ñ %1 аÑкÑлÑÑ Ð±Ó©Ð»Ò¯ÑÒ¯Ò¯
-
+
&Email
&E-mail
-
+
Email
E-mail
-
+
&Close
&ÐабÑÑ
-
+
&Float on Top
Ò®ÑÑүнөн &калкÑÑÑÑ
-
+
&Stop After This Video
ÐÑл видеодон кийин &ÑокÑоÑÑÑ
-
+
&Report an Issue...
- ÐаÑа жөнүндө &маалÑмдоо...
+ ÐаÑÐ°Ð½Ñ &маалÑмдоо...
-
+
&Refine Search...
Ðздөөнү &ÑакÑоо...
-
+
More...
ÐагÑ...
-
+
&Related Videos
&ÐайланÑÑÑÑÑ Ð²Ð¸Ð´ÐµÐ¾Ð»Ð¾Ñ
-
+
Watch videos related to the current one
ÐезекÑегиге байланÑÑÑÑÑ Ð²Ð¸Ð´ÐµÐ¾Ð½Ñ ÐºÓ©ÑÒ¯Ò¯
-
+
+ Open in &Browser...
+
+
+
+
&Application
&ТиÑкеме
-
+
Buy %1...
- %1'ÑÑ ÑаÑÑп алÑÑ...
+ %1'Ð´Ñ ÑаÑÑп алÑÑ...
-
+
&Playback
&ÐйноÑÑÑ
-
+
&Playlist
ÐйноÑÑÑ &ÑизмеÑи
-
+
&Video
&Ðидео
-
+
&View
&ÐÓ©ÑүнүÑ
-
+
&Share
&ÐөлүÑÒ¯Ò¯
-
+
&Help
&ÐаÑдам
-
+
Press %1 to raise the volume, %2 to lower it
- ÐаÑÑÑлÑкÑÑ ÑоңойÑÑÑ Ò¯Ñүн %1 баÑÑÒ£Ñз жана киÑиÑейÑÒ¯Ò¯ Ò¯Ñүн %2
+ Ðөлөмүн ÑоңойÑÑÑ Ò¯Ñүн %1 комбинаÑиÑÑÑн баÑÑÒ£Ñз, киÑиÑейÑÒ¯Ò¯ Ò¯Ñүн %2
-
-
+
+
Opening %1
- %1 аÑÑÑ
+ %1 аÑÑлÑÑда
-
+
Do you want to exit %1 with a download in progress?
- ÐүкÑөп алÑÑ Ð±Ð¾Ð»Ñп жаÑкан кезде %1'дан ÑÑккÑÒ£Ñз келеби?
+ ÐүкÑөп алÑÑ Ð±Ð¾Ð»Ñп жаÑкан кезде %1'дан ÑÑгÑÑÐ½Ñ ÐºÐ°Ð°Ð»Ð°Ð¹ÑÑзбÑ?
-
+
If you close %1 now, this download will be cancelled.
- ÐÐ³ÐµÑ Ñиз %1'ÑÑ Ð°Ð·ÑÑ Ð¶Ð°Ð¿ÑаңÑз, бÑл жүкÑөп алÑÑ Ð¶Ð¾ÐºÐºÐ¾ ÑÑгаÑÑлаÑ.
+ ÐÐ³ÐµÑ Ñиз %1'Ð´Ñ Ð°Ð·ÑÑ Ð¶Ð°Ð¿ÑаңÑз, бÑл жүкÑÓ©Ó© жокко ÑÑгаÑÑлаÑ.
-
+
Close and cancel download
- ÐабÑÑ Ð¶Ð°Ð½Ð° жүкÑөп алÑÑÐ½Ñ Ð¶Ð¾ÐºÐºÐ¾ ÑÑгаÑÑÑ
+ ÐабÑÑ Ð¶Ð°Ð½Ð° жүкÑөөнү жокко ÑÑгаÑÑÑ
-
+
Wait for download to finish
ÐүкÑөп алÑÑнÑн аÑкÑооÑÑн күÑÒ¯Ò¯
-
+
Leave &Full Screen
- &ТолÑк ÑкÑан Ñежиминен ÑÑгÑÑ
+ &ТолÑк ÑкÑандан ÑÑгÑÑ
-
+
%1 version %2 is now available.
- %1 веÑÑÐ¸Ñ %2 азÑÑÐºÑ ÐºÐµÐ·Ð´Ðµ колго жеÑеÑдик.
+ %1 веÑÑÐ¸Ñ %2 азÑÑ Ð¶ÐµÑкиликÑÒ¯Ò¯.
-
+
Remind me later
ÐеÑиÑÑÑк ÑÑке ÑалÑÑ
-
+
Update
- ÐаңÑÑÑÑÑ
+ ÐаңÑлоо
-
+
Error: %1
- ÐаÑа: %1
+ ÐаÑаÑÑ: %1
-
+
P&revious
&ÐÑÑÑнкÑ
-
+
Go back to the previous track
ÐÑÑÑÐ½ÐºÑ Ð¶Ð¾Ð»Ñого кайÑÑÑ
-
+
&Compact Mode
- &ÐÐ¾Ð¼Ð¿Ð°ÐºÑ Ñежими
+ &ТÑгÑз Ñежим
-
+
Open the &YouTube Page
&YouTube баÑагÑн аÑÑÑ
-
+
Copy the YouTube &Link
YouTube &ÑилÑемеÑин көÑÒ¯ÑÒ¯Ò¯
-
+
Copy the Video Stream &URL
Ðидео агÑмдÑн &ÑилÑемеÑин көÑÒ¯ÑÒ¯Ò¯
-
+
Find Video &Parts
- Ðидео &ÑÑагменÑÑеÑди ÑабÑÑ
+ Ðидео&ÑÑагменÑÑеÑди ÑабÑÑ
-
+
&Clear Recent Searches
Ð¡Ð¾Ò£ÐºÑ Ð¸Ð·Ð´Ó©Ó©Ð»Ó©Ñдү &Ñазалоо
-
+
Make a &Donation
&ТаÑÑÑÑ ÐºÑлÑÑ
-
+
&Manually Start Playing
ÐйноÑÑÑÐ½Ñ &кол менен баÑÑаÑÑÑ
-
+
Manually start playing videos
Ðидео ойноÑÑÑÐ½Ñ ÐºÐ¾Ð» менен баÑÑаÑÑÑ
-
+
Choose your content location
- ÐазмÑндÑн ÑÑÑган жеÑин ÑандаңÑз
+ ÐазмÑндÑн жайгаÑкан жеÑин ÑандаңÑз
-
+
&Play
&ÐйноÑÑÑ
-
+
Resume playback
ÐйноÑÑÑÐ½Ñ ÑланÑÑÑ
-
+
Remaining time: %1
- Ðалган ÑбакÑÑ: %1
+ Ðалган ÑбагÑ: %1
-
+
Volume at %1%
- ÐаÑÑÑлÑк %1%
+ Ðөлөмү %1%
-
+
Volume is muted
- Үн Ó©ÑÒ¯Ñүлдү
+ Үнү Ó©ÑÒ¯Ñүлдү
-
+
Volume is unmuted
- Үн күйгүзүлдү
+ Үнү күйгүзүлдү
-
+
Maximum video definition set to %1
- ÐидеонÑн ÑеÑиминин жогоÑÐºÑ Ñеги: %1
+ ÐидеонÑн жогоÑÐºÑ ÑеÑими: %1
-
+
Your privacy is now safe
ÐаÑÑÑÑндÑÑлÑгÑÒ£Ñз камÑÑздалдÑ
-
+
Downloads complete
ÐүкÑөп алÑÑ Ð°ÑкÑалдÑ
@@ -802,67 +911,77 @@
MediaView
-
+
You can now paste the YouTube link into another application
- Ðми Ñиз видеонÑн YouTube ÑилÑемеÑин баÑка ÑиÑкемеге ÐºÐ¾Ñ Ð°Ð»Ð°ÑÑз
+ YouTube'дÑн даÑегин Ñми баÑка ÑиÑкемеге койÑоңÑз болоÑ
-
+
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.
- ÐÑл пÑогÑамма %1'ÑÑн демо-веÑÑиÑÑÑ Ð±Ð¾Ð»Ð¾Ñ.
+ ÐÑл жөн Ñле %1'дÑн демо-веÑÑиÑÑÑ.
-
+
It allows you to test the application and see if it works for you.
ÐÑл ÑиÑкемени ÑÑнап көÑгөнгө мүмкүндүк беÑеÑ.
-
+
Continue
УланÑÑÑ
-
+
of
Used in video parts, as in '2 of 3'
/
-
+
part
This is for video parts, as in 'Cool video - part 1'
бөлүк
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
Ñпизод
-
+
Sent from %1
%1 жеÑинен жөнөÑÒ¯Ò¯
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
ТолÑк веÑÑиÑÑÑн алÑÑ
-
+
Downloading %1
- %1 жүкÑөп алÑÑ
+ %1 жүкÑөп алÑнÑÑда
@@ -895,7 +1014,7 @@
Install Update
- ÐаңÑÑÑÑÑлаÑÐ´Ñ Ð¾ÑноÑÑÑ
+ ÐаңÑлоолоÑÐ´Ñ Ð¾ÑноÑÑÑ
@@ -909,75 +1028,75 @@
PlaylistItemDelegate
-
+
%1 views
%1 көÑÒ¯Ò¯
-
+
%1 of %2 (%3) â %4
- %1/%2 (%3) â %4
+ %1 / %2 (%3) â %4
-
+
Preparing
ÐаÑÑдоо
-
+
Failed
ÐаÑа
-
+
Completed
ÐÑкÑалдÑ
-
+
Stopped
ТокÑоÑÑлдÑ
-
+
Stop downloading
ÐүкÑөп алÑÑÐ½Ñ ÑокÑоÑÑÑ
-
+
Show in %1
%1 жеÑинен көÑÑÓ©ÑÒ¯Ò¯
-
+
Open parent folder
- Ðне каÑалогÑн аÑÑÑ
+ ÐÑа-Ñне каÑалогÑн аÑÑÑ
-
+
Restart downloading
- ÐүкÑөп алÑÑÐ½Ñ ÐºÐ°Ð¹Ñа баÑÑаÑÑÑ
+ ÐүкÑөп алÑÑÐ½Ñ ÐºÐ°Ð¹Ñадан жүÑгүзүү
PlaylistModel
-
+
Searching...
Ðздөө...
-
+
Show %1 More
- ÐÐ°Ð³Ñ ÐºÓ©ÑÑÓ©ÑÒ¯Ò¯ %1
+ ÐÐ°Ð³Ñ %1 Ð²Ð¸Ð´ÐµÐ¾Ð½Ñ ÐºÓ©ÑÑÓ©ÑÒ¯Ò¯
-
+
No videos
ÐÐ¸Ð´ÐµÐ¾Ð»Ð¾Ñ Ð¶Ð¾Ðº
-
+
No more videos
ÐÐ°Ð³Ñ Ð²Ð¸Ð´ÐµÐ¾Ð»Ð¾Ñ Ð¶Ð¾Ðº
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
- СоÑÑÑоо ÑкмаÑÑ
+ СоÑÑÑоо
-
+
Relevance
РелеванÑÑÑÑлÑк
-
-
+
+
Date
ÐаÑа
-
+
View Count
ÐÓ©ÑÒ¯Ò¯ ÑанÑ
-
+
Rating
РейÑинг
-
+
Anytime
Ðаалаган ÑбакÑÑ
-
+
Today
Ðүгүн
-
+
7 Days
7 күн
-
+
30 Days
30 күн
-
+
Duration
УзÑндÑк
-
-
+
+
All
ÐааÑÑ
-
+
Short
ÐÑÑка
-
+
Medium
ÐÑÑоÑо
-
+
Long
УзÑн
-
+
Less than 4 minutes
- 4 мүнөÑÑөн кÑÑкаÑаак
+ 4 минÑÑадан кÑÑкаÑаак
-
+
Between 4 and 20 minutes
- 4 менен 20 мүнөÑÑүн аÑаÑÑнан
+ 4 менен 20 минÑÑанÑн аÑаÑÑнан
-
+
Longer than 20 minutes
- 20 мүнөÑÑөн көбүÑөөк
+ 20 минÑÑадан көбүÑөөк
-
+
Quality
СапаÑ
-
+
High Definition
ÐогоÑÐºÑ ÑеÑим
-
+
720p or higher
720p же ÑоңÑÑаак
-
+
Done
ÐаÑÑ
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
ÐаÑÑ
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
- <a href='%1'>%2</a>'ка ÐºÐ¾Ñ ÐºÐµÐ»Ð¸Ò£Ð¸Ð·,
+ <a href='%1'>%2</a>'га ÐºÐ¾Ñ ÐºÐµÐ»Ð¸Ò£Ð¸Ð·,
-
+
Get the full version
ТолÑк веÑÑиÑÑÑн ÑаÑÑп алÑÑ
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
ÐидеолоÑдÑ
-
+
a keyword
аÑкÑÑ Ñөз
-
+
a channel
канал
-
+
to start watching videos.
менен ÑабÑп көÑÒ¯Ò¯.
-
+
Watch
ÐÓ©ÑÒ¯Ò¯
-
+
Recent keywords
Ð¡Ð¾Ò£ÐºÑ Ð°ÑкÑÑ ÑөздөÑ
-
+
Recent channels
Ð¡Ð¾Ò£ÐºÑ ÐºÐ°Ð½Ð°Ð»Ð´Ð°Ñ
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&ÐÑÑка
-
+
Forward to %1
%1 алга
-
+
Back to %1
- %1 кайÑÑÑ
+ %1 видеоÑÑна кайÑÑÑ
SidebarWidget
-
+
Refine Search
Ðздөөнү ÑакÑоо
-
+
Did you mean: %1
ÐÑÐ½Ñ Ð±Ð¾Ð»Ð¶Ð¾Ð³Ð¾Ð½ жокÑÑзбÑ: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
ÐÒ£ попÑлÑÑдÑÑ
-
- Featured
- ТандалмалаÑ
-
-
-
+
Most Shared
Ðөп бөлүÑкөндөÑ
-
+
Most Discussed
Ðөп ÑалкÑÑлангандаÑ
-
+
Top Rated
ÐÑкÑÑлаÑ
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
- %1 Ò¯Ñүн видео агÑÐ¼Ð´Ñ Ð°Ð»ÑÑ Ð¾Ò£Ñнан ÑÑккан жок
+ %1 Ò¯Ñүн видео агÑмÑн алÑÑ Ð¼Ò¯Ð¼ÐºÒ¯Ð½ ÑмеÑ
-
+
Network error: %1 for %2
ТаÑмак каÑаÑÑ: %1 %2 Ò¯Ñүн
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
ÐлжиÑ
-
+
Argentina
ÐÑгенÑина
-
+
Australia
ÐвÑÑÑалиÑ
-
+
Belgium
ÐелгиÑ
-
+
Brazil
ÐÑазилиÑ
-
+
Canada
Ðанада
-
+
Chile
Чили
-
+
Colombia
ÐолÑмбиÑ
-
+
Czech Republic
ЧеÑ
иÑ
-
+
Egypt
ÐгипÑ
-
+
France
ФÑанÑиÑ
-
+
Germany
ÐеÑманиÑ
-
+
Ghana
Ðана
-
+
Greece
ÐÑеÑиÑ
-
+
Hong Kong
Ðонконг
-
+
Hungary
ÐенгÑиÑ
-
+
India
ÐндиÑ
-
+
Indonesia
ÐндонезиÑ
-
+
Ireland
ÐÑландиÑ
-
+
Israel
ÐзÑаилÑ
-
+
Italy
ÐÑалиÑ
-
+
Japan
ЯпониÑ
-
+
Jordan
ÐоÑдан
-
+
Kenya
ÐениÑ
-
+
Malaysia
ÐалайзиÑ
-
+
Mexico
ÐекÑика
-
+
Morocco
ÐаÑокко
-
+
Netherlands
ÐидеÑланддаÑ
-
+
New Zealand
ÐÐ°Ò£Ñ ÐеландиÑ
-
+
Nigeria
ÐигеÑиÑ
-
+
Peru
ÐеÑÑ
-
+
Philippines
ФилиппиндеÑ
-
+
Poland
ÐолÑÑа
-
+
Russia
ÐÑÑÑиÑ
-
+
Saudi Arabia
СаÑд ÐÑавиÑÑÑ
-
+
Singapore
СингапÑÑ
-
+
South Africa
ТүÑÑүк ÐÑÑика
-
+
South Korea
ТүÑÑүк ÐоÑеÑ
-
+
Spain
ÐÑпаниÑ
-
+
Sweden
ШвеÑиÑ
-
+
Taiwan
ТайванÑ
-
+
Tunisia
ТÑниÑ
-
+
Turkey
ТүÑкиÑ
-
+
Uganda
Уганда
-
+
United Arab Emirates
ÐиÑиккен ÐÑаб ÐмиÑаÑÑаÑÑ
-
+
United Kingdom
УлÑÑ ÐÑиÑаниÑ
-
+
Yemen
Ðемен
-
+
Worldwide
ÐÒ¯Ñкүл дүйнөлүк
diff --git a/locale/locale.pri b/locale/locale.pri
index 36aa566..60568a8 100644
--- a/locale/locale.pri
+++ b/locale/locale.pri
@@ -4,7 +4,7 @@ INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
# ls -1 *.ts | tr '\n' ' '
-TRANSLATIONS += ar.ts ca.ts ca_ES.ts cs_CZ.ts da.ts de_DE.ts el.ts en.ts es.ts es_AR.ts es_ES.ts fi.ts fi_FI.ts fr.ts he_IL.ts hr.ts hu.ts ia.ts it.ts ja_JP.ts jv.ts ky.ts nl.ts pl.ts pl_PL.ts pt_BR.ts ro.ts ru.ts sk.ts sl.ts tr.ts zh_CN.ts
+TRANSLATIONS += ar.ts ast.ts bg_BG.ts ca.ts cs_CZ.ts da.ts de_DE.ts el.ts en.ts es.ts es_AR.ts es_ES.ts fi.ts fi_FI.ts fr.ts gl.ts he_IL.ts hu.ts ia.ts it.ts ja_JP.ts ky.ts ms_MY.ts nb.ts nl.ts pl.ts pl_PL.ts pt_BR.ts ro.ts ru.ts sk.ts sl.ts sq.ts sv_SE.ts tr.ts uk.ts uk_UA.ts zh_CN.ts zh_TW.ts
isEmpty(QMAKE_LRELEASE) {
win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\lrelease.exe
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
diff --git a/locale/ms_MY.ts b/locale/ms_MY.ts
new file mode 100644
index 0000000..e46ffa3
--- /dev/null
+++ b/locale/ms_MY.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ There's life outside the browser!
+
+
+
+ Version %1
+ Versi %1
+
+
+
+ Licensed to: %1
+ Dilesenkan kepada: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 merupakan Perisian Bebas tetapi pembangunannya mengambil masa yang berharga.
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Sila <a href='%1'>beri sumbangan</a> untuk menyokong pembangunan berterusan %2.
+
+
+
+ You may want to try my other apps as well:
+ Anda mahu cuba aplikasi saya yang lain:
+
+
+
+ %1, a YouTube music player
+ %1, merupakan pemain muzik YouTube
+
+
+
+ %1, a music player
+ %1, merupakan pemain muzik
+
+
+
+ Translate %1 to your native language using %2
+ Terjemah %1 kepada bahasa ibunda anda menggunakan %2
+
+
+
+ Icon designed by %1.
+ Ikon direka oleh %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Dikeluarkan dibawah <a href='%1'>Lesen Awam Am GNU</a>
+
+
+
+ &Close
+ %Tutup
+
+
+
+ About
+ Perihal
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Apakah yang anda mahu tahu mengenai %1 tetapi segan untuk menanya
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ Masukkan Perincian Lesen anda
+
+
+
+ &Email:
+ &Emel:
+
+
+
+ &Code:
+ &Kod:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Sila lesenkan %1
+
+
+
+ This demo has expired.
+ Demo ini telah tamat tempoh.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ Versi penuh membolehkan anda muat turun video yang lebih panjang dari %1 minit dan dapat menonton video tanpa gangguan.
+
+
+
+ Without a license, the application will expire in %1 days.
+ Tanpa lesen, aplikasi akan luput dalam tempoh %1 hari.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Dengan pembelian versi penuh, anda akan menyokong hasil kerja yang saya lakukan ketika menghasilkan %1.
+
+
+
+ Use Demo
+ Guna Demo
+
+
+
+ Enter License
+ Masukkan Lesen
+
+
+
+ Buy License
+ Beli Lesen
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Oleh %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Semua Video
+
+
+
+ Unwatched Videos
+ Video Tidak Ditonton
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Tanda semua sebagai ditonton
+
+
+
+ Show Updated
+ Papar Dikemaskini
+
+
+
+ Name
+ Nama
+
+
+
+ Last Updated
+ Terakhir Dikemaskini
+
+
+
+ Last Added
+ Terakhir Ditambah
+
+
+
+ Last Watched
+ Terakhir Ditonton
+
+
+
+ Most Watched
+ Paling Banyak Ditonton
+
+
+
+ Sort by
+ Isih mengikut
+
+
+
+ All Videos
+ Semua Video
+
+
+
+ Unwatched Videos
+ Video Tidak Ditonton
+
+
+
+ There are no updated subscriptions at this time.
+ Tiada langganan dikemaskini buat masa ini.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Anda tidak mempunyai langganan. Gunakan simbol bintang untuk melanggan saluran.
+
+
+
+ ClearButton
+
+
+ Clear
+ Kosongkan
+
+
+
+ DownloadItem
+
+
+ bytes
+ bait
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ bait/saat
+
+
+
+ KB/sec
+ KB/saat
+
+
+
+ MB/sec
+ MB/saat
+
+
+
+ seconds
+ saat
+
+
+
+ minutes
+ minit
+
+
+
+ %4 %5 remaining
+ %4 %5 berbaki
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Ini hanyalah versi demo %1.
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Ia hanya boleh muat turun video kurang daripada %1 minit supaya anda boleh menguji kefungsian muat turunnya.
+
+
+
+ Continue
+ Teruskan
+
+
+
+ Get the full version
+ Dapatkan versi penuh
+
+
+
+ %1 downloaded in %2
+ %1 dimuat turun dalam %2
+
+
+
+ Download finished
+ Muat turun selesai
+
+
+
+ %n Download(s)
+
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Ubah lokasi...
+
+
+
+ Choose the download location
+ Pilih lokasi muat turun
+
+
+
+ Download location changed.
+ Lokasi muat turun berubah.
+
+
+
+ Current downloads will still go in the previous location.
+ Muat turun semasa masih lagi berjalan pada lokasi terdahulu.
+
+
+
+ Downloading to: %1
+ Memuat turun ke: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Muat turun
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ Memuat turun kemaskini...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Main
+
+
+
+ Pause
+ Jeda
+
+
+
+ Play/Pause
+ Main/Jeda
+
+
+
+ Stop
+ Henti
+
+
+
+ Stop playing after current track
+ Henti main selepas trek semasa
+
+
+
+ Next track
+ Trek berikutnya
+
+
+
+ Previous track
+ Trek terdahulu
+
+
+
+ Increase volume
+ Tingkatkan volum
+
+
+
+ Decrease volume
+ Rendahkan volum
+
+
+
+ Mute
+ Senyap
+
+
+
+ Seek forward
+ Jangkau kehadapan
+
+
+
+ Seek backward
+ Jangkau mengundur
+
+
+
+ HomeView
+
+
+ Search
+ Gelintar
+
+
+
+ Find videos and channels by keyword
+ Cari video dan saluran mengikut kata kunci
+
+
+
+ Browse
+ Layar
+
+
+
+ Browse videos by category
+ Layar video mengikut kategori
+
+
+
+ Subscriptions
+ Langganan
+
+
+
+ Channel subscriptions
+ Langganan saluran
+
+
+
+ Make yourself comfortable
+ Sila guna mengikut keselesaan anda
+
+
+
+ LoadingWidget
+
+
+ Error
+ Ralat
+
+
+
+ MainWindow
+
+
+ &Stop
+ &Henti
+
+
+
+ Stop playback and go back to the search view
+ Henti main balik dan kembali ke paparan gelintar
+
+
+
+ S&kip
+ Lang&kau
+
+
+
+ Skip to the next video
+ Langkau ke video berikutnya
+
+
+
+
+ &Pause
+ &Jeda
+
+
+
+
+ Pause playback
+ Jeda main balik
+
+
+
+ &Full Screen
+ Skrin &Penuh
+
+
+
+ Go full screen
+ Pergi ke skrin penuh
+
+
+
+ Hide the playlist and the toolbar
+ Sembunyi senarai main dan palang alat
+
+
+
+ Go to the YouTube video page and pause playback
+ Pergi ke halaman video YouTube dan jedakan main balik
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Salin pautan YouTube semasa ke papan keratan
+
+
+
+ Copy the current video stream URL to the clipboard
+ Salin URL strim video semasa ke papan keratan
+
+
+
+ Find other video parts hopefully in the right order
+ Cari bahagian video lain yang diharapkan dalam tertib yang betul
+
+
+
+ &Remove
+ &Buang
+
+
+
+ Remove the selected videos from the playlist
+ Buang video terpilih dari senarai main
+
+
+
+ Move &Up
+ Alih Ke &Atas
+
+
+
+ Move up the selected videos in the playlist
+ Alih video terpilih ke atas di dalam senarai main
+
+
+
+ Move &Down
+ Alih Ke &Bawah
+
+
+
+ Move down the selected videos in the playlist
+ Alih video terpilih ke bawah dalam senarai main
+
+
+
+ Clear the search history. Cannot be undone.
+ Kosongkan sejarah gelintar. Tidak dapat patah balik.
+
+
+
+ &Quit
+ &Keluar
+
+
+
+ Bye
+ Selamat Tinggal
+
+
+
+ &Website
+ Laman Sesa&wang
+
+
+
+ %1 on the Web
+ %1 pada Sesawang
+
+
+
+ Please support the continued development of %1
+ Sila beri sokongan pada pembangunan berterusan %1
+
+
+
+ &About
+ Perih&al
+
+
+
+ Info about %1
+ Maklumat mengenai %1
+
+
+
+ Search
+ Gelintar
+
+
+
+ Mute volume
+ Senyapkan volum
+
+
+
+
+ &Downloads
+ Muat T&urun
+
+
+
+ Show details about video downloads
+ Papar perincian mengenai muat turun video
+
+
+
+ &Download
+ Muat T&urun
+
+
+
+ Download the current video
+ Muat turun video semasa
+
+
+
+ &Subscribe to Channel
+ &Langgan ke Saluran
+
+
+
+ Share the current video using %1
+ Kongsi video semasa menggunakan %1
+
+
+
+ &Email
+ &Emel
+
+
+
+ Email
+ Emel
+
+
+
+ &Close
+ &Tutup
+
+
+
+ &Float on Top
+ Te&rapung Diatas
+
+
+
+ &Stop After This Video
+ &Henti Selepas Video Ini
+
+
+
+ &Report an Issue...
+ &Laporkan Masalah...
+
+
+
+ &Refine Search...
+ Pe&rhalusi Gelintar...
+
+
+
+ More...
+ Lagi...
+
+
+
+ &Related Videos
+ Video Be&rkaitan
+
+
+
+ Watch videos related to the current one
+ Tonton video berkaitan dengan video semasa
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ &Aplikasi
+
+
+
+ Buy %1...
+ Beli %1...
+
+
+
+ &Playback
+ &Main Balik
+
+
+
+ &Playlist
+ Se&narai Main
+
+
+
+ &Video
+ &Video
+
+
+
+ &View
+ &Papar
+
+
+
+ &Share
+ K&ongsi
+
+
+
+ &Help
+ &Bantuan
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Tekan %1 untuk tingkatkan volum, %2 untuk rendahkannya
+
+
+
+
+ Opening %1
+ Membuka %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ Anda hendak keluar dari %1 dengan muat turun masih berjalan?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Jika anda tutup %1 sekarang, muat turun ini akan dibatalkan.
+
+
+
+ Close and cancel download
+ Tutup dan batalkan muat turun
+
+
+
+ Wait for download to finish
+ Tunggu sehingga muat turun selesai
+
+
+
+ Leave &Full Screen
+ Tinggalkan Skrin P&enuh
+
+
+
+ %1 version %2 is now available.
+ %1 versi %2 kini sudah tersedia.
+
+
+
+ Remind me later
+ Maklum saya kemudian
+
+
+
+ Update
+ Kemaskini
+
+
+
+ Error: %1
+ Ralat: %1
+
+
+
+ P&revious
+ Te&rdahulu
+
+
+
+ Go back to the previous track
+ Pergi kembali ke trek terdahulu
+
+
+
+ &Compact Mode
+ Mod Pa&dat
+
+
+
+ Open the &YouTube Page
+ Buka Halaman &YouTube
+
+
+
+ Copy the YouTube &Link
+ Salin Pa&utan YouTube
+
+
+
+ Copy the Video Stream &URL
+ Salin &URL Strim Video
+
+
+
+ Find Video &Parts
+ Cari Ba&hagian Video
+
+
+
+ &Clear Recent Searches
+ K&osongkan Gelintar Baru-baru Ini
+
+
+
+ Make a &Donation
+ Beri S&umbangan
+
+
+
+ &Manually Start Playing
+ Mula Main Secara &Manual
+
+
+
+ Manually start playing videos
+ Mula memainkan video secara manual
+
+
+
+ Choose your content location
+ Pilih lokasi kandungan anda
+
+
+
+ &Play
+ &Main
+
+
+
+ Resume playback
+ Sambung semula main balik
+
+
+
+ Remaining time: %1
+ Masa berbaki: %1
+
+
+
+ Volume at %1%
+ Volum pada %1%
+
+
+
+ Volume is muted
+ Volum disenyapkan
+
+
+
+ Volume is unmuted
+ Volum disuarakan
+
+
+
+ Maximum video definition set to %1
+ Definasi video maksimum ditetapkan ke %1
+
+
+
+ Your privacy is now safe
+ Kerahsiaan anda kini selamat
+
+
+
+ Downloads complete
+ Muat turun selesai
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Anda kini boleh menampal pautan YouTube ke dalam aplikasi lain
+
+
+
+ You can now paste the video stream URL into another application
+ Anda kini boleh menampal pautan strim video ke dalam aplikasi lain
+
+
+
+ The link will be valid only for a limited time.
+ Pautan hanya sah untuk masa yang terhad.
+
+
+
+ This is just the demo version of %1.
+ Ini hanyalah versi demo %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Ia membolehkan anda uji aplikasi dan lihat jika ia berfungsi untuk anda.
+
+
+
+ Continue
+ Teruskan
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ daripada
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ bahagian
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ episod
+
+
+
+ Sent from %1
+ Dihantar dari %1
+
+
+
+ Unsubscribe from %1
+ Buang langganan dari %1
+
+
+
+ Subscribe to %1
+ Langgan ke %1
+
+
+
+ Get the full version
+ Dapatkan versi penuh
+
+
+
+ Downloading %1
+ Memuat turun %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ Versi baru %1 tersedia!
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 kini tersedia. Anda mempunyai %3.
+
+
+
+ Would you like to download it now?
+ Anda hendak muat turun ia sekarang?
+
+
+
+ Skip This Version
+ Langkau Versi Ini
+
+
+
+ Remind Me Later
+ Maklum Saya Kemudian
+
+
+
+ Install Update
+ Pasang Kemaskini
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Tampal
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ ditonton %1 kali
+
+
+
+ %1 of %2 (%3) â %4
+ %1 daripada %2 (%3) â %4
+
+
+
+ Preparing
+ Menyediakan
+
+
+
+ Failed
+ Gagal
+
+
+
+ Completed
+ Selesai
+
+
+
+ Stopped
+ Dihentikan
+
+
+
+ Stop downloading
+ Henti memuat turun
+
+
+
+ Show in %1
+ Papar dalam %1
+
+
+
+ Open parent folder
+ Buka folder induk
+
+
+
+ Restart downloading
+ Mulakan semula memuat turun
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Menggelintar...
+
+
+
+ Show %1 More
+ Papar %1 Lagi
+
+
+
+ No videos
+ Tiada video
+
+
+
+ No more videos
+ Tiada lagi video
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ Isih mengikut
+
+
+
+ Relevance
+ Kaitan
+
+
+
+
+ Date
+ Tarikh
+
+
+
+ View Count
+ Kiraan Papar
+
+
+
+ Rating
+ Penarafan
+
+
+
+ Anytime
+ Bila-bila Masa
+
+
+
+ Today
+ Hari Ini
+
+
+
+ 7 Days
+ 7 Hari
+
+
+
+ 30 Days
+ 30 Hari
+
+
+
+ Duration
+ Jangkamasa
+
+
+
+
+ All
+ Semua
+
+
+
+ Short
+ Pendek
+
+
+
+ Medium
+ Sederhana
+
+
+
+ Long
+ Panjang
+
+
+
+ Less than 4 minutes
+ Kurang dari 4 minit
+
+
+
+ Between 4 and 20 minutes
+ Diantara 4 hingga 20 minit
+
+
+
+ Longer than 20 minutes
+ Lebih panjang dari 20 minit
+
+
+
+ Quality
+ Kualiti
+
+
+
+ High Definition
+ Definasi Tinggi
+
+
+
+ 720p or higher
+ 720p atau lebih tinggi
+
+
+
+ Done
+ Selesai
+
+
+
+ RegionsView
+
+
+ Done
+ Selesai
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Gelintar
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ Selamat datang ke <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ Dapatkan versi penuh
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Masukkan
+
+
+
+ a keyword
+ kata kunci
+
+
+
+ a channel
+ saluran
+
+
+
+ to start watching videos.
+ untuk menonton video.
+
+
+
+ Watch
+ Tonton
+
+
+
+ Recent keywords
+ Kata kunci baru-baru ini
+
+
+
+ Recent channels
+ Saluran baru-baru ini
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ &Undur
+
+
+
+ Forward to %1
+ Maju ke %1
+
+
+
+ Back to %1
+ Undur ke %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ Perhalusi Gelintar
+
+
+
+ Did you mean: %1
+ Adakah anda maksudkan: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Paling Popular
+
+
+
+ Most Shared
+ Paling Banyak Dikongsi
+
+
+
+ Most Discussed
+ Paling Banyak Dibincangkan
+
+
+
+ Top Rated
+ Penarafan Tertinggi
+
+
+
+ All Time Popular
+ Popular Sepanjang Masa
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Tidak dapat strim video untuk %1
+
+
+
+ Network error: %1 for %2
+ Ralat rangkaian: %1 untuk %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ Algeria
+
+
+
+ Argentina
+ Argentina
+
+
+
+ Australia
+ Australia
+
+
+
+ Belgium
+ Belgium
+
+
+
+ Brazil
+ Brazil
+
+
+
+ Canada
+ Canada
+
+
+
+ Chile
+ Chile
+
+
+
+ Colombia
+ Colombia
+
+
+
+ Czech Republic
+ Republik Czech
+
+
+
+ Egypt
+ Mesir
+
+
+
+ France
+ Perancis
+
+
+
+ Germany
+ Jerman
+
+
+
+ Ghana
+ Ghana
+
+
+
+ Greece
+ Yunani
+
+
+
+ Hong Kong
+ Hong Kong
+
+
+
+ Hungary
+ Hungary
+
+
+
+ India
+ India
+
+
+
+ Indonesia
+ Indonesia
+
+
+
+ Ireland
+ Ireland
+
+
+
+ Israel
+ Israel
+
+
+
+ Italy
+ Itali
+
+
+
+ Japan
+ Jepun
+
+
+
+ Jordan
+ Jordan
+
+
+
+ Kenya
+ Kenya
+
+
+
+ Malaysia
+ Malaysia
+
+
+
+ Mexico
+ Mexico
+
+
+
+ Morocco
+ Maghribi
+
+
+
+ Netherlands
+ Belanda
+
+
+
+ New Zealand
+ New Zealand
+
+
+
+ Nigeria
+ Nigeria
+
+
+
+ Peru
+ Peru
+
+
+
+ Philippines
+ Filipina
+
+
+
+ Poland
+ Poland
+
+
+
+ Russia
+ Rusia
+
+
+
+ Saudi Arabia
+ Arab Saudi
+
+
+
+ Singapore
+ Singapura
+
+
+
+ South Africa
+ Afrika Selatan
+
+
+
+ South Korea
+ Korea Selatan
+
+
+
+ Spain
+ Sepanyol
+
+
+
+ Sweden
+ Sweden
+
+
+
+ Taiwan
+ Taiwan
+
+
+
+ Tunisia
+ Tunisia
+
+
+
+ Turkey
+ Turki
+
+
+
+ Uganda
+ Uganda
+
+
+
+ United Arab Emirates
+ Emiriah Arab Bersatu
+
+
+
+ United Kingdom
+ United Kingdom
+
+
+
+ Yemen
+ Yaman
+
+
+
+ Worldwide
+ Seluruh Dunia
+
+
+
\ No newline at end of file
diff --git a/locale/nb.ts b/locale/nb.ts
new file mode 100644
index 0000000..a91f6f3
--- /dev/null
+++ b/locale/nb.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Det finnes et liv utenfor nettleseren!
+
+
+
+ Version %1
+ Versjon %1
+
+
+
+ Licensed to: %1
+ Lisensiert til: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 er fri programvare, men utviklingen tar dyrebar tid.
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Vennligst <a href='%1'>doner</a> for og støtte videre utvikling av %2.
+
+
+
+ You may want to try my other apps as well:
+ Du vil kanskje prøve mine andre programmer også:
+
+
+
+ %1, a YouTube music player
+ %1, en musikkspiller for YouTube
+
+
+
+ %1, a music player
+ %1, en musikkspiller
+
+
+
+ Translate %1 to your native language using %2
+ Oversett %1 til ditt morsmål ved hjelp av %2
+
+
+
+ Icon designed by %1.
+ Ikonet er designet av %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Utgitt under <a href='%1'>GNU General Public License</a>
+
+
+
+ &Close
+ &Steng
+
+
+
+ About
+ Om
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Hva du alltid har ønsket å vite om %1, men aldri turte spørre om
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ Angi lisensdetaljer
+
+
+
+ &Email:
+ &E-post:
+
+
+
+ &Code:
+ &Kode:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Vennligst lisensier %1
+
+
+
+ This demo has expired.
+ Demoen er utløpt.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ Den fulle versjon lar deg laste ned videoer større enn %1 minutter og se på videoer uten avbrudd.
+
+
+
+ Without a license, the application will expire in %1 days.
+ Uten lisens, vil programmet utløper i %1 dager.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Ved å kjøpe fullversjonen, støtter du det harde arbeidet som ble lagt inn i å skape %1.
+
+
+
+ Use Demo
+ Bruk demoen
+
+
+
+ Enter License
+ Angi Lisens
+
+
+
+ Buy License
+ Kjøp Lisens
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
+
+ ClearButton
+
+
+ Clear
+ Nullstill
+
+
+
+ DownloadItem
+
+
+ bytes
+ bytes
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ bytes/sek
+
+
+
+ KB/sec
+ KB/sek
+
+
+
+ MB/sec
+ MB/sek
+
+
+
+ seconds
+ sekunder
+
+
+
+ minutes
+ minutter
+
+
+
+ %4 %5 remaining
+ %4 %5 gjenstår
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Dette er kun demo-versjonen av %1.
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Den kan kun laste ned videoer på under %1 minutter, for at du skal kunne prøve ut nedlastingsfunksjonen.
+
+
+
+ Continue
+ Fortsett
+
+
+
+ Get the full version
+ Kjøp fullversjonen
+
+
+
+ %1 downloaded in %2
+ %1 nedlastet i %2
+
+
+
+ Download finished
+ Nedlastingen ferdig
+
+
+
+ %n Download(s)
+ %n nedlasting %n nedlastinger
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Endre sted ...
+
+
+
+ Choose the download location
+ Velg nedlastingsmappe
+
+
+
+ Download location changed.
+ Nedlastingsmappe endret.
+
+
+
+ Current downloads will still go in the previous location.
+ Pågående nedlastinger vil bli lagret i den forrige mappen.
+
+
+
+ Downloading to: %1
+ Laster ned til: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Nedlastinger
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ Laster ned oppdatering...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Spill av
+
+
+
+ Pause
+ Pause
+
+
+
+ Play/Pause
+ Spill av/Pause
+
+
+
+ Stop
+ Stopp
+
+
+
+ Stop playing after current track
+ Stopp avspilling etter denne videoen.
+
+
+
+ Next track
+ Neste video
+
+
+
+ Previous track
+ Forrige video
+
+
+
+ Increase volume
+ Ãk lydvolumet
+
+
+
+ Decrease volume
+ Senk lydvolumet
+
+
+
+ Mute
+ Lydløs
+
+
+
+ Seek forward
+ Søk forover
+
+
+
+ Seek backward
+ Søk bakover
+
+
+
+ HomeView
+
+
+ Search
+ Søk
+
+
+
+ Find videos and channels by keyword
+ Finn videoer og kanaler med søkeord
+
+
+
+ Browse
+ Bla gjennom
+
+
+
+ Browse videos by category
+ Bla gjennom videoer etter kategori
+
+
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
+ Make yourself comfortable
+ Gjøre deg komfortabel
+
+
+
+ LoadingWidget
+
+
+ Error
+ Feil
+
+
+
+ MainWindow
+
+
+ &Stop
+ &Stopp
+
+
+
+ Stop playback and go back to the search view
+ Stopp avspilling og gå tilbake til søkevisningen
+
+
+
+ S&kip
+ &Hopp over
+
+
+
+ Skip to the next video
+ Hopp til neste video
+
+
+
+
+ &Pause
+ &Pause
+
+
+
+
+ Pause playback
+ Sett avspilling på pause
+
+
+
+ &Full Screen
+ &Fullskjerm
+
+
+
+ Go full screen
+ Fullskjermsvisning
+
+
+
+ Hide the playlist and the toolbar
+ Gjem spillelista og verktøylinja
+
+
+
+ Go to the YouTube video page and pause playback
+ GÃ¥ til YouTube video siden og pause avspillingen
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Kopier denne YouTube video linken til utklippstavle
+
+
+
+ Copy the current video stream URL to the clipboard
+ Kopier denne video stream URL til utklippstavle
+
+
+
+ Find other video parts hopefully in the right order
+ Finn andre videosegment, forhåpentligvis i rett rekkefølge
+
+
+
+ &Remove
+ &Fjern
+
+
+
+ Remove the selected videos from the playlist
+ Fjern valgte videoer fra spillelista
+
+
+
+ Move &Up
+ Flytt &opp
+
+
+
+ Move up the selected videos in the playlist
+ Flytt opp valgte videoer i spillelista
+
+
+
+ Move &Down
+ Flytt &Ned
+
+
+
+ Move down the selected videos in the playlist
+ Flytt ned valgte videoer i spillelista
+
+
+
+ Clear the search history. Cannot be undone.
+ Fjern all søkehistorie. Kan ikke angres.
+
+
+
+ &Quit
+ &Avslutt
+
+
+
+ Bye
+ Farvel
+
+
+
+ &Website
+ &Nettsted
+
+
+
+ %1 on the Web
+ %1 på internett
+
+
+
+ Please support the continued development of %1
+ Vi håper du kan bidra til å fortsette arbeidet med utvikling av %1
+
+
+
+ &About
+ &Om
+
+
+
+ Info about %1
+ Informasjon om %1
+
+
+
+ Search
+ Søk
+
+
+
+ Mute volume
+ Lydløs
+
+
+
+
+ &Downloads
+ &Nedlastinger
+
+
+
+ Show details about video downloads
+ Vis detaljer om nedlasting av video
+
+
+
+ &Download
+ &Nedlasting
+
+
+
+ Download the current video
+ Last ned denne videoen
+
+
+
+ &Subscribe to Channel
+
+
+
+
+ Share the current video using %1
+ Del denne videoen med %1
+
+
+
+ &Email
+ &Epost
+
+
+
+ Email
+ Epost
+
+
+
+ &Close
+ &Steng
+
+
+
+ &Float on Top
+ &Vis over andre
+
+
+
+ &Stop After This Video
+ &Stopp etter denne videoen
+
+
+
+ &Report an Issue...
+ &Rapporter et Problem
+
+
+
+ &Refine Search...
+ &Detaljert søk...
+
+
+
+ More...
+ Mer...
+
+
+
+ &Related Videos
+ &Relaterte Videoer
+
+
+
+ Watch videos related to the current one
+ Se videoer relatert til den nåværende
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ Applikasjon
+
+
+
+ Buy %1...
+ Kjøp %1 â¦
+
+
+
+ &Playback
+ &Avspilling
+
+
+
+ &Playlist
+ &Spilleliste
+
+
+
+ &Video
+ &Video
+
+
+
+ &View
+ &Visning
+
+
+
+ &Share
+ &Del
+
+
+
+ &Help
+ &Hjelp
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Trykk på %1 for å øke lydvolumet, %2 for å senke
+
+
+
+
+ Opening %1
+ Ã
pner %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ Vil du avslutte %1 mens nedlastinger pågår?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Vis du stenger %1 nå, vil nedlastingen bli avbrutt
+
+
+
+ Close and cancel download
+ Steng og avbryt nedlastingen
+
+
+
+ Wait for download to finish
+ Vent mens nedlastingen fullføres
+
+
+
+ Leave &Full Screen
+ Forlat &Full Skjerm
+
+
+
+ %1 version %2 is now available.
+ Versjon %2 av %1 er nå tilgjengelig.
+
+
+
+ Remind me later
+ Minn meg på det senere
+
+
+
+ Update
+ Oppdater
+
+
+
+ Error: %1
+ Feil: %1
+
+
+
+ P&revious
+ &Forrige
+
+
+
+ Go back to the previous track
+ GÃ¥ til forrige spor
+
+
+
+ &Compact Mode
+ &Kompakt modus
+
+
+
+ Open the &YouTube Page
+ Ã
pne siden på &YouTube
+
+
+
+ Copy the YouTube &Link
+ Kopier &lenken til YouTube
+
+
+
+ Copy the Video Stream &URL
+ Kopier &URL-en til videostrømmen
+
+
+
+ Find Video &Parts
+ Finn &deler av videoen
+
+
+
+ &Clear Recent Searches
+ T&øm siste søk
+
+
+
+ Make a &Donation
+ Gi en &donasjon
+
+
+
+ &Manually Start Playing
+ Start avspillingen &manuelt
+
+
+
+ Manually start playing videos
+ Spill av videoer manuelt
+
+
+
+ Choose your content location
+ Velg innholdsplassering
+
+
+
+ &Play
+ &Spill av
+
+
+
+ Resume playback
+ Gjenoppta avspilling
+
+
+
+ Remaining time: %1
+ Gjenstående tid: %1
+
+
+
+ Volume at %1%
+ Volum %1%
+
+
+
+ Volume is muted
+ Lydløst er på
+
+
+
+ Volume is unmuted
+ Lydløst er av
+
+
+
+ Maximum video definition set to %1
+ Maksimum video definisjon innstilling til %1
+
+
+
+ Your privacy is now safe
+ Ditt privatliv er nå sikkert
+
+
+
+ Downloads complete
+ Nedlastinger fullført
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Du kan nå lime inn YouTube linken i et annet program
+
+
+
+ You can now paste the video stream URL into another application
+ Du kan nå lime inn video stream URL i et annet applikasjon
+
+
+
+ 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.
+ Dette er kun demoversjonen av %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Dette gir deg muligheten til å prøve ut applikasjonen og se om du den er noe for deg.
+
+
+
+ Continue
+ Fortsett
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ av
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ del
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ episode
+
+
+
+ Sent from %1
+ Sent fra %1
+
+
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
+ Get the full version
+ Kjøp fullversjonen
+
+
+
+ Downloading %1
+ Nedlasting %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ En ny versjon av %1 er tilgjengelig!
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 er nå tilgjengelig. Du har %3.
+
+
+
+ Would you like to download it now?
+ Vil du last den ned nå?
+
+
+
+ Skip This Version
+ Hopp Over Denne Versjonen
+
+
+
+ Remind Me Later
+ Minn Meg Senere
+
+
+
+ Install Update
+ Installer Oppdatering
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Lim
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %1 visninger
+
+
+
+ %1 of %2 (%3) â %4
+ %1 av %2 (%3) â %4
+
+
+
+ Preparing
+ Forbereder
+
+
+
+ Failed
+ Mislykket
+
+
+
+ Completed
+ Fullført
+
+
+
+ Stopped
+ Stoppet
+
+
+
+ Stop downloading
+ Stoppe nedlastingen
+
+
+
+ Show in %1
+ Vis i %1
+
+
+
+ Open parent folder
+ Ã
pen foreldre mappe
+
+
+
+ Restart downloading
+ Omstart nedlasting
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Søker...
+
+
+
+ Show %1 More
+ Vis %1 Mer
+
+
+
+ No videos
+ Ingen videoer
+
+
+
+ No more videos
+ Ingen flere videoer
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ Sorter etter
+
+
+
+ Relevance
+ Relevans
+
+
+
+
+ Date
+ Dato
+
+
+
+ View Count
+ Antall ganger sett
+
+
+
+ Rating
+ Vurdering
+
+
+
+ Anytime
+ NÃ¥r som helst
+
+
+
+ Today
+ I dag
+
+
+
+ 7 Days
+ 7 Dager
+
+
+
+ 30 Days
+ 30 Dager
+
+
+
+ Duration
+ Varighet
+
+
+
+
+ All
+ Alle
+
+
+
+ Short
+ Kort
+
+
+
+ Medium
+ Medium
+
+
+
+ Long
+ Lange
+
+
+
+ Less than 4 minutes
+ Mindre enn 4 minutter
+
+
+
+ Between 4 and 20 minutes
+ Mellom 4 og 20 minutter
+
+
+
+ Longer than 20 minutes
+ Lenger en 20 minutter
+
+
+
+ Quality
+ Kvalitet
+
+
+
+ High Definition
+ Høy Definisjon
+
+
+
+ 720p or higher
+ 720p eller høyer
+
+
+
+ Done
+ Ferdig
+
+
+
+ RegionsView
+
+
+ Done
+ Ferdig
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Søk
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ Velkommen til <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ Kjøpfullversjon
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Skriv
+
+
+
+ a keyword
+ ett nøkkelord
+
+
+
+ a channel
+ en kanal
+
+
+
+ to start watching videos.
+ for å begynne avspilling av video
+
+
+
+ Watch
+ Se
+
+
+
+ Recent keywords
+ Seneste søkeord
+
+
+
+ Recent channels
+ Seneste kanaler
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ &Tilbake
+
+
+
+ Forward to %1
+ Fremover til %1
+
+
+
+ Back to %1
+ Tilbake til %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ Detaljert søk
+
+
+
+ Did you mean: %1
+ Mente du: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Mest Populære
+
+
+
+ Most Shared
+ Mest Delt
+
+
+
+ Most Discussed
+ Mest Diskutert
+
+
+
+ Top Rated
+ Toppklassifisert
+
+
+
+ All Time Popular
+
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Kan ikke hente mediastrøm for %1
+
+
+
+ Network error: %1 for %2
+ Feil på nettverk: %1 for %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ Algerie
+
+
+
+ Argentina
+ Argentina
+
+
+
+ Australia
+ Australia
+
+
+
+ Belgium
+ Belgia
+
+
+
+ Brazil
+ Brasil
+
+
+
+ Canada
+ Canada
+
+
+
+ Chile
+ Chile
+
+
+
+ Colombia
+ Colombia
+
+
+
+ Czech Republic
+ Czech Republic
+
+
+
+ Egypt
+ Egypt
+
+
+
+ France
+ France
+
+
+
+ Germany
+ Tyskland
+
+
+
+ Ghana
+ Ghana
+
+
+
+ Greece
+ Hellas
+
+
+
+ Hong Kong
+ Hong Kong
+
+
+
+ Hungary
+ Hungary
+
+
+
+ India
+ India
+
+
+
+ Indonesia
+ Indonesia
+
+
+
+ Ireland
+ Irland
+
+
+
+ Israel
+ Israel
+
+
+
+ Italy
+ Italia
+
+
+
+ Japan
+ Japan
+
+
+
+ Jordan
+ Jordan
+
+
+
+ Kenya
+ Kenya
+
+
+
+ Malaysia
+ Malaysia
+
+
+
+ Mexico
+ Mexico
+
+
+
+ Morocco
+ Marokko
+
+
+
+ Netherlands
+ Nederland
+
+
+
+ New Zealand
+ New Zealand
+
+
+
+ Nigeria
+ Nigeria
+
+
+
+ Peru
+ Peru
+
+
+
+ Philippines
+ Filippinene
+
+
+
+ Poland
+ Polen
+
+
+
+ Russia
+ Russland
+
+
+
+ Saudi Arabia
+ Saudi Arabia
+
+
+
+ Singapore
+ Singapore
+
+
+
+ South Africa
+ Sør Africa
+
+
+
+ South Korea
+ Sør Korea
+
+
+
+ Spain
+ Spania
+
+
+
+ Sweden
+ Sverige
+
+
+
+ Taiwan
+ Taiwan
+
+
+
+ Tunisia
+ Tunisia
+
+
+
+ Turkey
+ Tyrkia
+
+
+
+ Uganda
+ Uganda
+
+
+
+ United Arab Emirates
+ De Forente Arabiske Emirater
+
+
+
+ United Kingdom
+ Storbritannia
+
+
+
+ Yemen
+ Yemen
+
+
+
+ Worldwide
+ Over heile verda
+
+
+
\ No newline at end of file
diff --git a/locale/nl.ts b/locale/nl.ts
index 563ae0e..8643c3b 100644
--- a/locale/nl.ts
+++ b/locale/nl.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Er is leven buiten de browser!
-
+
Version %1
Versie %1
-
+
Licensed to: %1
-
+ Gelicenseerd aan: %1
-
+
%1 is Free Software but its development takes precious time.
%1 is gratis software, maar de ontwikkeling ervan vergt kostbare tijd.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
<a href='%1'>Doneer</a> om bij te dragen aan de verdere ontwikkeling van %2.
-
+
You may want to try my other apps as well:
Misschien wilt u ook mijn andere apps proberen:
-
+
%1, a YouTube music player
%1, een YouTube-muziekspeler
-
+
%1, a music player
%1, een muziekspeler
-
+
Translate %1 to your native language using %2
Vertaal %1 naar uw moedertaal met behulp van %2
-
+
Icon designed by %1.
Pictogram ontworpen door %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Uitgebracht onder de <a href='%1'>GNU General Public License</a>
-
+
&Close
&Sluit
-
+
About
Over
-
+
What you always wanted to know about %1 and never dared to ask
Wat u altijd al had willen weten over %1 maar nooit heeft durven vragen
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Vul uw licentie-details in
&Email:
-
+ &E-mailadres:
&Code:
-
+ &Code:
@@ -106,12 +106,12 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ De volledige versie stelt u in staat om video's te downloaden die langer zijn dan %1 minuten en om video's te kijken zonder onderbrekingen.
Without a license, the application will expire in %1 days.
-
+ Zonder een licentie zal deze applicatie vervallen in %1 dagen.
@@ -126,12 +126,101 @@
Enter License
-
+ Vul licentie in
Buy License
-
+ Koop licentie
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ D.m.v. %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Alle video's
+
+
+
+ Unwatched Videos
+ Niet-bekeken video's
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Markeer alles als bekeken
+
+
+
+ Show Updated
+ Toon bijgewerkte
+
+
+
+ Name
+ Naam
+
+
+
+ Last Updated
+ Laatst bijgewerkt
+
+
+
+ Last Added
+ Laatst toegevoegd
+
+
+
+ Last Watched
+ Laatst bekeken
+
+
+
+ Most Watched
+ Vaakst bekeken
+
+
+
+ Sort by
+ Sorteer op
+
+
+
+ All Videos
+ Alle video's
+
+
+
+ Unwatched Videos
+ Niet-bekeken video's
+
+
+
+ There are no updated subscriptions at this time.
+ Er zijn op dit moment geen bijgewerkte abonnementen.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ U heeft geen abonnementen. Gebruik het ster-symbool om te abonneren op kanalen.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sec
-
+
KB/sec
KB/sec
-
+
MB/sec
MB/sec
-
+
seconds
seconden
-
+
minutes
minuten
-
+
%4 %5 remaining
%4 %5 resterend
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Dit is slechts de demoversie van %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Het kan alleen maar videos downloaden korter dan %1 minuten zodat u de downloadfunctionaliteit kunt testen.
-
+
Continue
Ga door
-
+
Get the full version
Verkrijg de volledige versie
-
+
%1 downloaded in %2
%1 gedownload in %2
-
+
Download finished
Download greed
-
+
%n Download(s)
%n Download %n Downloads
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Verander locatie...
-
+
Choose the download location
Kies de downloadlocatie
-
+
Download location changed.
Downloadlocatie aangepast.
-
+
Current downloads will still go in the previous location.
Huidige downloads zullen in de vorige locatie worden geplaatst.
-
+
Downloading to: %1
Downloaden naar:%1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Downloads
@@ -270,68 +359,68 @@
Downloading update...
-
+ Bezig met downloaden van update...
GlobalShortcuts
-
+
Play
Speel af
-
+
Pause
Pauzeer
-
+
Play/Pause
Speel af/Pauzeer
-
+
Stop
Stop
-
+
Stop playing after current track
Stop afspelen na huidig nummer
-
+
Next track
Volgend nummer
-
+
Previous track
Vorig nummer
-
+
Increase volume
Verhoog volume
-
+
Decrease volume
Verlaag volume
-
+
Mute
Demp
-
+
Seek forward
Spoel naar voren
-
+
Seek backward
Spoel naar achteren
@@ -339,35 +428,45 @@
HomeView
-
+
Search
Zoek
-
+
Find videos and channels by keyword
-
+ Vind video's en kanalen d.m.v. sleutelwoord
-
+
Browse
-
+ Blader
-
+
Browse videos by category
-
+ Blader video's d.m.v. categorie
-
+
+ Subscriptions
+ Abonnementen
+
+
+
+ Channel subscriptions
+ Kanaal-abonnementen
+
+
+
Make yourself comfortable
-
+ Maak het u zelf gemakkelijk
LoadingWidget
-
+
Error
Fout
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Stop
-
+
Stop playback and go back to the search view
Stop het afspelen en keer terug naar het zoekvenster
-
+
S&kip
&Sla over
-
+
Skip to the next video
Spoel door naar de volgende vieo
-
-
+
+
&Pause
&Pauzeer
-
-
+
+
Pause playback
Pauzeer afspelen
-
+
&Full Screen
&Volledig scherm
-
+
Go full screen
Schakel over naar Volledig scherm
-
+
Hide the playlist and the toolbar
Verberg de afspeellijst en de werkbalk
-
+
Go to the YouTube video page and pause playback
Ga naar de YouTube-videopagina en pauzeer het afspelen
-
+
Copy the current video YouTube link to the clipboard
Kopieer de huidige YouTube-link naar het klembord
-
+
Copy the current video stream URL to the clipboard
Kopieer de huidige videostream-URL naar het klembord
-
+
Find other video parts hopefully in the right order
Vind gerelateerde videofragmenten, hopelijk in de juiste volgorde
-
+
&Remove
&Verwijder
-
+
Remove the selected videos from the playlist
Verwijder de geselecteerde video's uit de afspeellijst
-
+
Move &Up
Verplaats &omhoog
-
+
Move up the selected videos in the playlist
Verplaats de geselecteerde video's in de afspeellijst naar boven
-
+
Move &Down
Verplaats &omlaag
-
+
Move down the selected videos in the playlist
Verplaats de geselecteerde video's in de afspeelijst naar beneden
-
+
Clear the search history. Cannot be undone.
Wis de zoek geschiedenis. Dit kan niet ongedaan worden gemaakt.
-
+
&Quit
&Sluit af
-
+
Bye
Tot ziens
-
+
&Website
&Website
-
+
%1 on the Web
%1 op het internet
-
+
Please support the continued development of %1
Ondersteun alstublieft de ontwikkeling van %1
-
+
&About
&Over
-
+
Info about %1
Informatie over %1
-
+
Search
Zoek
-
+
Mute volume
Demp volume
-
-
+
+
&Downloads
&Downloads
-
+
Show details about video downloads
Geef details weer van videodownloads
-
+
&Download
&Download
-
+
Download the current video
Download de huidige video
-
+
+ &Subscribe to Channel
+ &Abonneer op kanaal
+
+
+
Share the current video using %1
Deel de huidige video door middel van %1
-
+
&Email
&E-mail
-
+
Email
E-mail
-
+
&Close
&Sluit
-
+
&Float on Top
&Zweef erboven
-
+
&Stop After This Video
&Stop na deze video
-
+
&Report an Issue...
&Rapporteer een Probleem...
-
+
&Refine Search...
&Verfijn Zoekopdracht...
-
+
More...
-
+ Meer...
-
+
&Related Videos
-
+ &Gerelateerde video's
-
+
Watch videos related to the current one
+ Bekijk video's gerelateerd aan de huidige
+
+
+
+ Open in &Browser...
-
+
&Application
&Programma
-
+
Buy %1...
Koop %1...
-
+
&Playback
&Afspeelopties
-
+
&Playlist
&Afspeellijst
-
+
&Video
&Video
-
+
&View
&Weergave
-
+
&Share
&Deel
-
+
&Help
&Help
-
+
Press %1 to raise the volume, %2 to lower it
Druk op %1 om het volume te verhogen, op %2 om het te verlagen
-
-
+
+
Opening %1
Bezig met openen van %1
-
+
Do you want to exit %1 with a download in progress?
Wilt u %1 afsluiten terwijl er een download bezig is?
-
+
If you close %1 now, this download will be cancelled.
Als u nu %1 afsluit, zal de download worden beëindigd.
-
+
Close and cancel download
Sluit en annuleer het downloaden
-
+
Wait for download to finish
Wacht tot het downloaden is voltooid
-
+
Leave &Full Screen
Verlaat &volledig scherm
-
+
%1 version %2 is now available.
%1 versie %2 nu beschikbaar.
-
+
Remind me later
Herinner mij later
-
+
Update
Werk bij
-
+
Error: %1
Fout: %1
-
+
P&revious
V&orige
-
+
Go back to the previous track
Ga terug naar het vorige nummer
-
+
&Compact Mode
&Compacte modus
-
+
Open the &YouTube Page
Open de &Youtube-pagina
-
+
Copy the YouTube &Link
Kopieer de YouTube-&link
-
+
Copy the Video Stream &URL
Kopieer de videostream-&URL
-
+
Find Video &Parts
Vind video&fragmenten
-
+
&Clear Recent Searches
&Wis recente zoekopdrachten
-
+
Make a &Donation
Geef een &donatie
-
+
&Manually Start Playing
&Speel handmatig af
-
+
Manually start playing videos
Speel handmatig video's af
-
+
Choose your content location
-
+ Kies uw inhoudslocatie
-
+
&Play
&Speel af
-
+
Resume playback
Hervat afspelen
-
+
Remaining time: %1
Resterende tijd: %1
-
+
Volume at %1%
Volume op %1%
-
+
Volume is muted
Volume is gedempt
-
+
Volume is unmuted
Volume is niet gedempt
-
+
Maximum video definition set to %1
Maximale videokwaliteit staat op %1
-
+
Your privacy is now safe
Uw privacy is nu gewaarborgd
-
+
Downloads complete
Downloads afgerond
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
U kunt nu uw YouTube-link kopieren naar een ander programma
-
+
You can now paste the video stream URL into another application
U kunt nu uw videostream-URL kopieren naar een ander programma
-
+
The link will be valid only for a limited time.
De link zal maar een beperkte tijd geldig zijn.
-
+
This is just the demo version of %1.
Dit is slechts de demoversie van %1.
-
+
It allows you to test the application and see if it works for you.
Het biedt de mogelijkheid de applicatie te testen en te beoordelen.
-
+
Continue
Ga door
-
+
of
Used in video parts, as in '2 of 3'
van
-
+
part
This is for video parts, as in 'Cool video - part 1'
fragment
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
aflevering
-
+
Sent from %1
Verstuurd vanaf %1
-
+
+ Unsubscribe from %1
+ Zeg abonnement op van %1
+
+
+
+ Subscribe to %1
+ Abonneer op %1
+
+
+
Get the full version
Verkrijg de volledige versie
-
+
Downloading %1
Bezig met downloaden van %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ Een nieuwe versie van %1 is beschikbaar!
%1 %2 is now available. You have %3.
-
+ %1 %2 is nu beschikbaar. U heeft %3.
Would you like to download it now?
-
+ Wilt u deze nu downloaden?
Skip This Version
-
+ Sla deze versie over
Remind Me Later
-
+ Herinner me later
Install Update
-
+ Installeer update
@@ -903,191 +1022,191 @@
Paste
-
+ Plakken
PlaylistItemDelegate
-
+
%1 views
%1 bekeken
-
+
%1 of %2 (%3) â %4
-
+ %1 van %2 (%3) â %4
-
+
Preparing
-
+ Aan het voorbereiden
-
+
Failed
-
+ Mislukt
-
+
Completed
-
+ Voltooid
-
+
Stopped
-
+ Gestopt
-
+
Stop downloading
-
+ Stop het downloaden
-
+
Show in %1
-
+ Toon in %1
-
+
Open parent folder
-
+ Open oudermap
-
+
Restart downloading
-
+ Herstart het downloaden
PlaylistModel
-
+
Searching...
Bezig met zoeken...
-
+
Show %1 More
-
+ Toon %1 meer
-
+
No videos
Geen video's
-
+
No more videos
-
+ Geen video's meer
RefineSearchWidget
-
+
Sort by
Sorteer op
-
+
Relevance
Relevantie
-
-
+
+
Date
Datum
-
+
View Count
Weergaven
-
+
Rating
Waardering
-
+
Anytime
Elke Periode
-
+
Today
Vandaag
-
+
7 Days
7 Dagen
-
+
30 Days
30 Dagen
-
+
Duration
Duur
-
-
+
+
All
Alles
-
+
Short
Kort
-
+
Medium
Gemiddeld
-
+
Long
Lang
-
+
Less than 4 minutes
Minder dan 4 minuten
-
+
Between 4 and 20 minutes
Tussen 4 en 20 minuten
-
+
Longer than 20 minutes
Langer dan 20 minuten
-
+
Quality
Kwaliteit
-
+
High Definition
HD Resolutie
-
+
720p or higher
720p of hover
-
+
Done
Klaar
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Klaar
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Welkom bij <a href='%1'>%2</a>,
-
+
Get the full version
Verkrijg de volledige versie
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Typ
-
+
a keyword
een zoekwoord
-
+
a channel
een kanaal
-
+
to start watching videos.
om te beginnen met het bekijken van video's.
-
+
Watch
Bekijk
-
+
Recent keywords
Recente zoekwoorden
-
+
Recent channels
Recente kanalen
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Terug
-
+
Forward to %1
-
+ Spoel vooruit naar %1
-
+
Back to %1
-
+ Spoel terug naar %1
SidebarWidget
-
+
Refine Search
Verfijn Zoekopdracht
-
+
Did you mean: %1
Bedoelde je: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ Meest populair
-
- Featured
-
-
-
-
+
Most Shared
-
+ Vaakst gedeeld
-
+
Most Discussed
-
+ Meest bediscussieerd
-
+
Top Rated
-
+ Hoogst gewaardeerd
+
+
+
+ All Time Popular
+ Altijd populaire
Video
-
+
Cannot get video stream for %1
Kan de videostream niet verkrijgen voor %1
-
+
Network error: %1 for %2
Netwerkfout: %1 voor %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Algerije
-
+
Argentina
-
+ Argentinië
-
+
Australia
-
+ Australië
-
+
Belgium
-
+ België
-
+
Brazil
-
+ Brazilië
-
+
Canada
-
+ Canada
-
+
Chile
-
+ Chili
-
+
Colombia
-
+ Colombia
-
+
Czech Republic
-
+ Tsjechië
-
+
Egypt
-
+ Egypte
-
+
France
-
+ Frankrijk
-
+
Germany
-
+ Duitsland
-
+
Ghana
-
+ Ghana
-
+
Greece
-
+ Griekenland
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ Hongarije
-
+
India
-
+ India
-
+
Indonesia
-
+ Indonesië
-
+
Ireland
-
+ Ierland
-
+
Israel
-
+ Israël
-
+
Italy
-
+ Italië
-
+
Japan
-
+ Japan
-
+
Jordan
-
+ Jordanië
-
+
Kenya
-
+ Kenia
-
+
Malaysia
-
+ Maleisië
-
+
Mexico
-
+ Mexico
-
+
Morocco
-
+ Marokko
-
+
Netherlands
-
+ Nederland
-
+
New Zealand
-
+ Nieuw-Zeeland
-
+
Nigeria
-
+ Nigeria
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Filipijnen
-
+
Poland
-
+ Polen
-
+
Russia
-
+ Rusland
-
+
Saudi Arabia
-
+ Saoedi-Arabië
-
+
Singapore
-
+ Singapore
-
+
South Africa
-
+ Zuid-Afrika
-
+
South Korea
-
+ Zuid-Korea
-
+
Spain
-
+ Spanje
-
+
Sweden
-
+ Zweden
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ Tunesië
-
+
Turkey
-
+ Turkije
-
+
Uganda
-
+ Oeganda
-
+
United Arab Emirates
-
+ Verenigde Emiraten
-
+
United Kingdom
-
+ Verenigd Koninkrijk
-
+
Yemen
-
+ Jemen
-
+
Worldwide
-
+ Wereldwijd
\ No newline at end of file
diff --git a/locale/pl.ts b/locale/pl.ts
index f7290c6..f337bae 100644
--- a/locale/pl.ts
+++ b/locale/pl.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Istnieje życie poza przeglÄ
darkÄ
!
-
+
Version %1
Wersja %1
-
+
Licensed to: %1
-
+ Licencjonowane dla: %1
-
+
%1 is Free Software but its development takes precious time.
%1 jest wolnym oprogramowaniem, ale jego rozwój pochÅania cenney czas.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
ProszÄ <a href='%1'>wesprzyj nas darowiznÄ
</a> żybyÅmy mogli ciÄ
gle rozwijaÄ %2.
-
+
You may want to try my other apps as well:
-
+ ByÄ może chciaÅbyÅ wypróbowaÄ moje inne aplikacje:
-
+
%1, a YouTube music player
-
+ %1, odtwarzacz muzyki YouTube
-
+
%1, a music player
-
+ %1, odtwarzacz muzyki
-
+
Translate %1 to your native language using %2
PrzetÅumacz %1 na swój jÄzyk używajÄ
c %2
-
+
Icon designed by %1.
Ikony zaprojektowane przez %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Wydane na licencji<a href='%1'>GNU General Public License</a>
-
+
&Close
&Zamknij
-
+
About
- O programie Minitube
+ O programie
-
+
What you always wanted to know about %1 and never dared to ask
To co zawsze chcieliÅcie wiedzieÄ o %1 ale nigdy siÄ nie odważyliÅcie zapytaÄ
@@ -78,7 +78,7 @@
Enter your License Details
-
+ Wpisz szczegóÅy Twojej licencji
@@ -88,7 +88,7 @@
&Code:
-
+ &Kod:
@@ -134,6 +134,95 @@
Kup LicencjÄ
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ Sortuj wedÅug
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bajty
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bajtów/sekundÄ
-
+
KB/sec
KB/sek
-
+
MB/sec
MB/sek
-
+
seconds
sekund
-
+
minutes
minut
-
+
%4 %5 remaining
%4 %5 pozostaÅo do koÅca
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
To jest tylko wersja demo%1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Może jedynie pobieraÄ filmy krótsze niż%1 minut, wiÄc można przetestowaÄ funkcje pobierania.
-
+
Continue
Kontynuuj
-
+
Get the full version
Pobierz peÅnÄ
wersjÄ
-
+
%1 downloaded in %2
-
+ %1 pobrane w %2
-
+
Download finished
Pobieranie ukoÅczone
-
+
%n Download(s)
%n Pobieranie %n Pobieranie %n Pobieranie
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
ZmieÅ katalog pobierania...
-
+
Choose the download location
Wybierz katalog pobierania
-
+
Download location changed.
Katalog pobierania zostaÅ zmieniony.
-
+
Current downloads will still go in the previous location.
Aktualnie pobierane pliki zostanÄ
we wczeÅniejszym katalogu pobierania.
-
+
Downloading to: %1
Pobierane do: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Pobrane pliki
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Odtwarzaj
-
+
Pause
Pauza
-
+
Play/Pause
Odtwarzaj/Wstrzymaj
-
+
Stop
Zatrzymaj
-
+
Stop playing after current track
Zatrzymaj odtwarzanie po tej Åcieżce
-
+
Next track
NastÄpny
-
+
Previous track
Poprzedni
-
+
Increase volume
GÅoÅniej
-
+
Decrease volume
Ciszej
-
+
Mute
Wycisz
-
+
Seek forward
PrzewiŠw przód
-
+
Seek backward
PrzewiÅ w tyÅ
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Szukaj
-
+
Find videos and channels by keyword
-
+
Browse
PrzeglÄ
daj
-
+
Browse videos by category
PrzeglÄ
daj wideo wedÅug kategorii
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
Poczuj siÄ komfortowo
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
BÅÄ
d
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Zatrzymaj
-
+
Stop playback and go back to the search view
Zatrzymaj odtwarzanie i wrÃ³Ä do wyszukiwania
-
+
S&kip
Prze&skocz dalej
-
+
Skip to the next video
Skocz do nastÄpnego pliku wideo
-
-
+
+
&Pause
&Pauza
-
-
+
+
Pause playback
Wstrzymaj odtwarzanie
-
+
&Full Screen
PeÅny ekran (&F)
-
+
Go full screen
PrzeÅÄ
cz na peÅny ekran
-
+
Hide the playlist and the toolbar
Ukryj listÄ odtwarzania i pasek narzÄdzi
-
+
Go to the YouTube video page and pause playback
Otwórz na stronie Youtube i wstrzymaj odtwarzanie
-
+
Copy the current video YouTube link to the clipboard
Kopiuj link aktualnie odtwarzanego video do schowka
-
+
Copy the current video stream URL to the clipboard
Kopiuj adres URL odtwarzanego wideo do schowka
-
+
Find other video parts hopefully in the right order
-
+
&Remove
UsuÅ (&D)
-
+
Remove the selected videos from the playlist
UsuÅ wybrane pliki z listy odtwarzania
-
+
Move &Up
PrzenieŠ&Wyżej
-
+
Move up the selected videos in the playlist
PrzenieÅ wyżej zaznaczony plik w liÅcie odtwarzania
-
+
Move &Down
PrzenieŠ&Niżej
-
+
Move down the selected videos in the playlist
PrzenieÅ niżej zaznaczony plik w liÅcie odtwarzania
-
+
Clear the search history. Cannot be undone.
WyczyÅÄ historiÄ wyszukiwania. NIEODWRACALNIE.
-
+
&Quit
Wyjdź (&Q)
-
+
Bye
Żegnaj
-
+
&Website
Strona domowa projektu (&W)
-
+
%1 on the Web
%1 w sieci
-
+
Please support the continued development of %1
Prosimy o wsparcie dla dalszego rozwoju %1
-
+
&About
O programie (&A)
-
+
Info about %1
Informacje o %1
-
+
Search
Szukaj
-
+
Mute volume
Wycisz
-
-
+
+
&Downloads
&Pobrane
-
+
Show details about video downloads
Pokaż szczegóÅy o pobranych plikach
-
+
&Download
&Pobierz
-
+
Download the current video
Pobierz aktualny plik
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
UdostÄpnij te wideo używajÄ
c %1
-
+
&Email
&E-mail
-
+
Email
E-mail
-
+
&Close
&Zamknij
-
+
&Float on Top
-
+
&Stop After This Video
-
+
&Report an Issue...
-
+ &ZgÅoÅ problem...
-
+
&Refine Search...
-
+
More...
WiÄcej...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplikacje
-
+
Buy %1...
Kup %1...
-
+
&Playback
&Odtwarzanie
-
+
&Playlist
&Lista odtwarzania
-
+
&Video
&Wideo
-
+
&View
&Widok
-
+
&Share
Udo&stÄpnij
-
+
&Help
&Pomoc
-
+
Press %1 to raise the volume, %2 to lower it
WciÅcnij %1 żeby zwiÄkszyÄ gÅoÅnoÅÄ, %2 żeby zmiejszyÄ gÅoÅnoÅÄ
-
-
+
+
Opening %1
Otwieranie %1
-
+
Do you want to exit %1 with a download in progress?
Czy na pewno chcesz zamknÄ
Ä %1 w trakcie pobierania???
-
+
If you close %1 now, this download will be cancelled.
JeÅli zamkniesz %1 teraz, To pobieranie bÄdzie anulowane.
-
+
Close and cancel download
Zamnij i anuluj pobieranie
-
+
Wait for download to finish
Poczekaj na zakoÅczenie pobierania
-
+
Leave &Full Screen
OpuÅÄ &tryb peÅnoekranowy
-
+
%1 version %2 is now available.
%1 wersja %2 jest teraz dostÄpna.
-
+
Remind me later
Przypomnij mi później
-
+
Update
Aktualizuj
-
+
Error: %1
BÅÄ
d %1
-
+
P&revious
Pop&rzedni
-
+
Go back to the previous track
Powrót do poprzedniego utworu
-
+
&Compact Mode
-
+
Open the &YouTube Page
Otwórz na &Youtube
-
+
Copy the YouTube &Link
-
+
Copy the Video Stream &URL
Kopiuj adres &URL strumienia wideo
-
+
Find Video &Parts
-
+
&Clear Recent Searches
Wy&czyÅÄ Ostatnie Poszukiwania
-
+
Make a &Donation
Przekaż &darowiznÄ
-
+
&Manually Start Playing
-
+
Manually start playing videos
-
+
Choose your content location
-
+
&Play
&Odtwarzaj
-
+
Resume playback
Kontynuuj odtwarzanie
-
+
Remaining time: %1
PozostaÅy czas %1
-
+
Volume at %1%
GÅoÅnoÅÄ na %1%
-
+
Volume is muted
DźwiÄk jest wyciszony
-
+
Volume is unmuted
Przywrócono dźwiÄk
-
+
Maximum video definition set to %1
Maksymalna rozdzielczoÅÄ wideo ustawiona na %1
-
+
Your privacy is now safe
Twoja prywatnoÅÄ jest teraz bezpieczna
-
+
Downloads complete
Pobieranie ukoÅczone
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Teraz możesz wkleiÄ link Youtube do innej aplikacji
-
+
You can now paste the video stream URL into another application
Teraz możesz wkleiÄ URL do innej aplikacji
-
+
The link will be valid only for a limited time.
Link bÄdzie ważny tylko przez ograniczony czas.
-
+
This is just the demo version of %1.
To jest tylko wersja demo %1.
-
+
It allows you to test the application and see if it works for you.
Pozwala Ci to na testowanie i sprawdzenie dziaÅania aplikacji.
-
+
Continue
Kontynuuj
-
+
of
Used in video parts, as in '2 of 3'
z
-
+
part
This is for video parts, as in 'Cool video - part 1'
czÄÅÄ
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
odcinek
-
+
Sent from %1
WysÅano z %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Pobierz peÅnÄ
wersjÄ
-
+
Downloading %1
Pobieranie %1
@@ -870,12 +989,12 @@
A new version of %1 is available!
-
+ Nowa wersja %1 jest dostÄpna!
%1 %2 is now available. You have %3.
-
+ %1 %2 jest już dostÄpny, Ty masz %3.
@@ -895,7 +1014,7 @@
Install Update
-
+ Zainstaluj aktualizacjÄ
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 widziane
-
+
%1 of %2 (%3) â %4
%1 z %2 (%3) â %4
-
+
Preparing
PrzegotowujÄ
-
+
Failed
Niepowodzenie
-
+
Completed
ZakoÅczone
-
+
Stopped
Zatrzymano
-
+
Stop downloading
Zatrzymaj pobieranie
-
+
Show in %1
Pokaż w %1
-
+
Open parent folder
-
+
Restart downloading
Pobierz od nowa
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Szukanie...
-
+
Show %1 More
Pokaż kolejne %1
-
+
No videos
Brak wideo
-
+
No more videos
Nie ma wiÄcej wideo
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Sortuj wedÅug
-
+
Relevance
-
-
+
+
Date
Daty
-
+
View Count
-
+
Rating
-
+
Anytime
Kiedykolwiek
-
+
Today
Dzisiaj
-
+
7 Days
7 Dni
-
+
30 Days
30 Dni
-
+
Duration
-
-
+
+
All
Wszystko
-
+
Short
-
+ Krótkie
-
+
Medium
-
+ Årednie
-
+
Long
-
+ DÅugie
-
+
Less than 4 minutes
Krótsze niż 4 minuty
-
+
Between 4 and 20 minutes
PomiÄdzy 4 a 20 minutami
-
+
Longer than 20 minutes
DÅuższe niż 20 minut
-
+
Quality
JakoÅÄ
-
+
High Definition
-
+
720p or higher
-
+
Done
UkoÅczono
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
UkoÅczono
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Witaj w <a href='%1'>%2</a>,
-
+
Get the full version
Pobierz peÅnÄ
wersjÄ
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Zatwierdź
-
+
a keyword
sÅowo kluczowe
-
+
a channel
kanaÅ
-
+
to start watching videos.
aby rozpoczÄ
Ä oglÄ
danie
-
+
Watch
OglÄ
daj
-
+
Recent keywords
Ostatnio szukane
-
+
Recent channels
Odwiedzone kanaÅy
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Wstecz
-
+
Forward to %1
PrzewiÅ do %1
-
+
Back to %1
Cofnij do %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
-
+
Did you mean: %1
Czy chodziÅo o: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Nie można uzyskaÄ dostÄpu do %1
-
+
Network error: %1 for %2
BÅÄ
d sieci: %1 for %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
Algieria
-
+
Argentina
Argentyna
-
+
Australia
Australia
-
+
Belgium
Belgia
-
+
Brazil
Brazylia
-
+
Canada
Kanada
-
+
Chile
Chile
-
+
Colombia
Kolumbia
-
+
Czech Republic
Czechy
-
+
Egypt
Egipt
-
+
France
Francja
-
+
Germany
Niemcy
-
+
Ghana
-
+
Greece
Grecja
-
+
Hong Kong
Hong Kong
-
+
Hungary
WÄgry
-
+
India
Indie
-
+
Indonesia
Indonezja
-
+
Ireland
Irlandia
-
+
Israel
Izrael
-
+
Italy
WÅochy
-
+
Japan
Japonia
-
+
Jordan
-
+
Kenya
Kenia
-
+
Malaysia
Malezja
-
+
Mexico
Meksyk
-
+
Morocco
Maroko
-
+
Netherlands
-
+ Holandia
-
+
New Zealand
Nowa Zelandia
-
+
Nigeria
Nigeria
-
+
Peru
Peru
-
+
Philippines
Filipiny
-
+
Poland
Polska
-
+
Russia
Rosja
-
+
Saudi Arabia
Arabia Saudyjska
-
+
Singapore
Singapur
-
+
South Africa
PoÅudniowa Afryka
-
+
South Korea
PoÅudniowa Korea
-
+
Spain
Hiszpania
-
+
Sweden
Szwecja
-
+
Taiwan
Tajwan
-
+
Tunisia
Tunezja
-
+
Turkey
Turcja
-
+
Uganda
Uganda
-
+
United Arab Emirates
-
+
United Kingdom
-
+
Yemen
-
+
Worldwide
-
+ OgólnoÅwiatowy
\ No newline at end of file
diff --git a/locale/pl_PL.ts b/locale/pl_PL.ts
index fb2321e..99f072f 100644
--- a/locale/pl_PL.ts
+++ b/locale/pl_PL.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Å»ycie istnieje też poza przeglÄ
darkÄ
!
-
+
Version %1
Wersja %1
-
+
Licensed to: %1
Licencjonowane dla: %1
-
+
%1 is Free Software but its development takes precious time.
%1 jest darmowym oprogramowaniem, ale jego stworzenie też wymaga cennego czasu.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
ProszÄ o <a href='%1'>dotacje</a> dla dalszego rozwoju %2.
-
+
You may want to try my other apps as well:
Może chcesz wypróbowaÄ inne moje aplikacje:
-
+
%1, a YouTube music player
%1, odtwarzacz muzyki z YouTube'a
-
+
%1, a music player
%1, odtwarzacz muzyki
-
+
Translate %1 to your native language using %2
PrzetÅumacz %1 na swój jÄzyk używajÄ
c %2
-
+
Icon designed by %1.
Ikony zaprojektowane przez %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Wydane na licencji<a href='%1'>GNU General Public License</a>
-
+
&Close
&Zamknij
-
+
About
O programie
-
+
What you always wanted to know about %1 and never dared to ask
Wszystko, co chcieliÅcie wiedzieÄ o %1, ale baliÅcie siÄ zapytaÄ
@@ -134,6 +134,95 @@
Kup licencjÄ
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Wszystkie filmy
+
+
+
+ Unwatched Videos
+ Nieobejrzane filmy
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Oznacz wszystkie jako obserwowane
+
+
+
+ Show Updated
+ Pokaż zaktualizowane
+
+
+
+ Name
+ Nazwa
+
+
+
+ Last Updated
+ Ostatnio Zaktualizowane
+
+
+
+ Last Added
+ Ostatnio Dodane
+
+
+
+ Last Watched
+ Ostatnio Zaobserwowane
+
+
+
+ Most Watched
+ NajczÄÅciej Obserwowane
+
+
+
+ Sort by
+ Sortuj wedÅug
+
+
+
+ All Videos
+ Wszystkie filmy
+
+
+
+ Unwatched Videos
+ Nieobejrzane filmy
+
+
+
+ There are no updated subscriptions at this time.
+ Brak zaktualizowanych subskrypcji.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
B
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
B/s
-
+
KB/sec
KB/s
-
+
MB/sec
MB/s
-
+
seconds
sek.
-
+
minutes
min.
-
+
%4 %5 remaining
pozostaÅo %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
To jest tylko wersja demo %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Może pobieraÄ jedynie filmy krótsze niż %1 minut, dla przetestowania funkcji pobierania.
-
+
Continue
Dalej
-
+
Get the full version
Pobierz peÅnÄ
wersjÄ
-
+
%1 downloaded in %2
%1 ÅciÄ
gniÄte w %2
-
+
Download finished
ÅciÄ
ganie zakoÅczone
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
ZmieÅ katalog pobierania...
-
+
Choose the download location
Wybierz katalog pobierania
-
+
Download location changed.
Katalog pobierania zostaÅ zmieniony.
-
+
Current downloads will still go in the previous location.
Aktualnie pobierane pliki zostanÄ
we wczeÅniejszym katalogu pobierania.
-
+
Downloading to: %1
Pobierane do: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Pobrane pliki
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Graj
-
+
Pause
Wstrzymaj
-
+
Play/Pause
Graj/Wstrzymaj
-
+
Stop
Stop (przerwij)
-
+
Stop playing after current track
Zatrzymaj odtwarzanie po tej Åcieżce
-
+
Next track
NastÄpna Åcieżka
-
+
Previous track
Poprzednia Åcieżka
-
+
Increase volume
GÅoÅniej
-
+
Decrease volume
Ciszej
-
+
Mute
Wycisz
-
+
Seek forward
PrzewiŠw przód
-
+
Seek backward
PrzewiÅ do tyÅu
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Szukaj
-
+
Find videos and channels by keyword
Znajdź filmy i kanaÅy po sÅowie kluczowym
-
+
Browse
PrzeglÄ
daj
-
+
Browse videos by category
PrzeglÄ
daj filmy po kategorii
-
+
+ Subscriptions
+ Subskrypcje
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
RozgoÅÄ siÄ
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
BÅÄ
d
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Zatrzymaj
-
+
Stop playback and go back to the search view
Przerwij odtwarzanie i wrÃ³Ä do wyszukiwania
-
+
S&kip
Prze&skocz dalej
-
+
Skip to the next video
Przejdź do nastÄpnego pliku wideo
-
-
+
+
&Pause
&Pauza
-
-
+
+
Pause playback
Wstrzymaj odtwarzanie
-
+
&Full Screen
&PeÅny ekran
-
+
Go full screen
PrzeÅÄ
cz na peÅny ekran
-
+
Hide the playlist and the toolbar
Ukryj listÄ odtwarzania i pasek narzÄdzi
-
+
Go to the YouTube video page and pause playback
Przejdź do strony YouTube i wstrzymaj odtwarzanie
-
+
Copy the current video YouTube link to the clipboard
Skopiuj link YouTube odtwarzanego filmu do schowka
-
+
Copy the current video stream URL to the clipboard
Kopiuj adres URL odtwarzanego wideo do schowka
-
+
Find other video parts hopefully in the right order
Znajdź pozostaÅe czÄÅci filmu w, miejmy nadziejÄ, dobrej kolejnoÅci
-
+
&Remove
&UsuÅ
-
+
Remove the selected videos from the playlist
UsuÅ wybrane pliki z listy odtwarzania
-
+
Move &Up
PrzesuÅ w &GórÄ
-
+
Move up the selected videos in the playlist
PrzesuŠwyżej zaznaczone pliki
-
+
Move &Down
PrzesuÅ w &DóÅ
-
+
Move down the selected videos in the playlist
PrzesuŠniżej zaznaczone pliki
-
+
Clear the search history. Cannot be undone.
CzyÅci historiÄ wyszukiwania. Nieodwracalnie.
-
+
&Quit
&Weź to wyÅÄ
cz
-
+
Bye
Narciarz
-
+
&Website
&WyÅwietl stronÄ
-
+
%1 on the Web
%1 on the Web
-
+
Please support the continued development of %1
Wesprzyj dalszy rozwój %1
-
+
&About
O &Programie
-
+
Info about %1
Informacje o %1
-
+
Search
Szukaj
-
+
Mute volume
Wycisz
-
-
+
+
&Downloads
&Pobrane
-
+
Show details about video downloads
Pokaż szczegóÅy o pobranych plikach
-
+
&Download
&Pobierz
-
+
Download the current video
Pobierz aktualny plik
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
Podziel siÄ tym filmem przez %1
-
+
&Email
&E-mail
-
+
Email
e-mail
-
+
&Close
&Zamknij
-
+
&Float on Top
&Ustaw na wierzchu
-
+
&Stop After This Video
&Zatrzymaj po tym filmie
-
+
&Report an Issue...
ZgÅoÅ problem...
-
+
&Refine Search...
&ZawÄź wyszukiwanie...
-
+
More...
WiÄcej...
-
+
&Related Videos
PowiÄ
zane filmy
-
+
Watch videos related to the current one
OglÄ
daj filmy powiÄ
zane z aktualnie oglÄ
danym
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplikacja
-
+
Buy %1...
Kup%1
-
+
&Playback
&Odtwarzanie
-
+
&Playlist
&Lista odtwarzania
-
+
&Video
&Wideo
-
+
&View
&Widok
-
+
&Share
&Podziel siÄ
-
+
&Help
&Halp znaczy pomoc
-
+
Press %1 to raise the volume, %2 to lower it
NaciÅnij %1 aby podgÅoÅniÄ, %2 aby przyciszyÄ
-
-
+
+
Opening %1
Otwieranie %1
-
+
Do you want to exit %1 with a download in progress?
Czy na pewno chcesz zamknÄ
Ä %1 w trakcie pobierania???
-
+
If you close %1 now, this download will be cancelled.
JeÅli zamkniesz %1 teraz, To pobieranie bÄdzie anulowane.
-
+
Close and cancel download
Zamnij i anuluj pobieranie
-
+
Wait for download to finish
Poczekaj na zakoÅczenie pobierania
-
+
Leave &Full Screen
OpuÅÄ peÅny ekran (&F)
-
+
%1 version %2 is now available.
Wersja %1 %2 jest dostÄpna
-
+
Remind me later
Przypomnij później
-
+
Update
Zaktualizuj
-
+
Error: %1
BÅÄ
d %1
-
+
P&revious
P&oprzedni
-
+
Go back to the previous track
WrÃ³Ä do poprzedniej Åcieżki
-
+
&Compact Mode
&Tryb kompaktowy
-
+
Open the &YouTube Page
Otwórz stronÄ &YouTube
-
+
Copy the YouTube &Link
Skopiuj &link do strony Youtube
-
+
Copy the Video Stream &URL
Skopiuj &URL strumienia wideo
-
+
Find Video &Parts
Znajdź czÄÅci filmu
-
+
&Clear Recent Searches
&WyczyÅÄ ostatnie wyszukiwania
-
+
Make a &Donation
Przekaż &dotacjÄ
-
+
&Manually Start Playing
&RÄczne rozpoczynanie odtwarzania
-
+
Manually start playing videos
RÄcznie odtwarzaj filmy
-
+
Choose your content location
Wybierz swojÄ
lokalizacjÄ
-
+
&Play
&Graj
-
+
Resume playback
PrzywrÃ³Ä odtwarzanie
-
+
Remaining time: %1
PozostaÅy czas: %1
-
+
Volume at %1%
GÅoÅnoÅÄ: %1%
-
+
Volume is muted
DźwiÄk wyciszony
-
+
Volume is unmuted
DźwiÄk przywrócony
-
+
Maximum video definition set to %1
Maksymalna rozdzielczoÅÄ wideo ustawiona na %1
-
+
Your privacy is now safe
Twoja prywatnoÅÄ jest już bezpieczna
-
+
Downloads complete
Pobieranie ukoÅczone
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Teraz można wkleiÄ link YouTube do innej aplikacji
-
+
You can now paste the video stream URL into another application
Teraz możesz wkleiÄ URL do innej aplikacji
-
+
The link will be valid only for a limited time.
Link bÄdzie ważny tylko przez ograniczony czas.
-
+
This is just the demo version of %1.
To jest tylko wersja demo %1.
-
+
It allows you to test the application and see if it works for you.
Pozwala przetestowaÄ aplikacjÄ, i zobaczyÄ czy Ci odpowiada.
-
+
Continue
Dalej
-
+
of
Used in video parts, as in '2 of 3'
z
-
+
part
This is for video parts, as in 'Cool video - part 1'
czÄÅÄ
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
odcinek
-
+
Sent from %1
PrzesÅane od %1
-
+
+ Unsubscribe from %1
+ UsuÅ subskrypcje %1
+
+
+
+ Subscribe to %1
+ Subskrybuj %1
+
+
+
Get the full version
ZdobÄ
dź peÅnÄ
wersjÄ
-
+
Downloading %1
Pobieranie %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1widziany
-
+
%1 of %2 (%3) â %4
%1 z %2 (%3) â %4
-
+
Preparing
Przygotowywanie
-
+
Failed
Niepowodzenie
-
+
Completed
UkoÅczone
-
+
Stopped
Zatrzymano
-
+
Stop downloading
Przerwij pobieranie
-
+
Show in %1
Pokaż w %1
-
+
Open parent folder
Otwórz katalog nadrzÄdny
-
+
Restart downloading
Pobierz ponownie
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Szukanie...
-
+
Show %1 More
Pokaż kolejne %1
-
+
No videos
Brak filmów
-
+
No more videos
Nie ma wiÄcej filmów
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Sortuj wedÅug
-
+
Relevance
TrafnoÅÄ
-
-
+
+
Date
Data
-
+
View Count
-
+ WyÅwietlenia
-
+
Rating
Ocena
-
+
Anytime
Kiedykolwiek
-
+
Today
Dzisiaj
-
+
7 Days
7 dni
-
+
30 Days
30 dni
-
+
Duration
Czas trwania
-
-
+
+
All
Wszystkie
-
+
Short
Krótkie
-
+
Medium
Årednie
-
+
Long
DÅugie
-
+
Less than 4 minutes
Krótsze niż 4 minuty
-
+
Between 4 and 20 minutes
PomiÄdzy 4 a 20 minut
-
+
Longer than 20 minutes
DÅuższe niż 20 minut
-
+
Quality
JakoÅÄ
-
+
High Definition
JakoÅÄ HD
-
+
720p or higher
720p lub wyższa
-
+
Done
Zrobione
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Zrobione
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Witaj w <a href='%1'>%2</a>,
-
+
Get the full version
Pobierz peÅnÄ
wersjÄ
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Zatwierdź
-
+
a keyword
sÅowo kluczowe
-
+
a channel
kanaÅ
-
+
to start watching videos.
aby rozpoczÄ
Ä oglÄ
danie
-
+
Watch
OglÄ
daj
-
+
Recent keywords
Ostatnie wyszukiwania
-
+
Recent channels
Ostatnie kanaÅy
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Wstecz
-
+
Forward to %1
Idź do %1
-
+
Back to %1
PowrÃ³Ä do %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
ZawÄź wyszukiwanie
-
+
Did you mean: %1
Masz na myÅli: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
Najpopularniejsze
-
- Featured
- Wyróżnione
-
-
-
+
Most Shared
NajwiÄcej udostÄpniane
-
+
Most Discussed
NajczÄÅciej dyskutowane
-
+
Top Rated
Najlepiej oceniane
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Strumieniowanie %1 nie powiodÅo siÄ
-
+
Network error: %1 for %2
BÅÄ
d sieci: %1 dla %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
Algieria
-
+
Argentina
Argentyna
-
+
Australia
Australia
-
+
Belgium
Belgia
-
+
Brazil
Brazylia
-
+
Canada
Kanada
-
+
Chile
Chile
-
+
Colombia
Kolumbia
-
+
Czech Republic
Czechy
-
+
Egypt
Egipt
-
+
France
Francja
-
+
Germany
Niemcy
-
+
Ghana
Ghana
-
+
Greece
Grecja
-
+
Hong Kong
Hong Kong
-
+
Hungary
WÄgry
-
+
India
Indie
-
+
Indonesia
Indonezja
-
+
Ireland
Irlandia
-
+
Israel
Izrael
-
+
Italy
WÅochy
-
+
Japan
Japonia
-
+
Jordan
Jordania
-
+
Kenya
Kenia
-
+
Malaysia
Malezja
-
+
Mexico
Meksyk
-
+
Morocco
Maroko
-
+
Netherlands
Holandia
-
+
New Zealand
Nowa Zelandia
-
+
Nigeria
Nigeria
-
+
Peru
Peru
-
+
Philippines
Filipiny
-
+
Poland
Polska
-
+
Russia
Rosja
-
+
Saudi Arabia
Arabia Saudyjska
-
+
Singapore
Singapur
-
+
South Africa
PoÅudniowa Afryka
-
+
South Korea
Korea PoÅudniowa
-
+
Spain
Hiszpania
-
+
Sweden
Szwecja
-
+
Taiwan
Tajwan
-
+
Tunisia
Tunezja
-
+
Turkey
Turcja
-
+
Uganda
Uganda
-
+
United Arab Emirates
Zjednoczone Emiraty Arabskie
-
+
United Kingdom
Wielka Brytania
-
+
Yemen
Jemen
-
+
Worldwide
OgólnoÅwiatowy
diff --git a/locale/pt_BR.ts b/locale/pt_BR.ts
index fca6446..1df5b37 100644
--- a/locale/pt_BR.ts
+++ b/locale/pt_BR.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Há vida fora do navegador!
-
+
Version %1
Versão %1
-
+
Licensed to: %1
-
+ Licenciado a: %1
-
+
%1 is Free Software but its development takes precious time.
%1 é um Software livre, mas seu desenvolvimento toma um tempo precioso.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Por favor <a href='%1'>doe</a> para apoiar o desenvolvimento continuado de %2.
-
+
You may want to try my other apps as well:
Você pode querer tentar os meus outros aplicativos também:
-
+
%1, a YouTube music player
%1, um tocador de música para YouTube
-
+
%1, a music player
%1, um tocador de música
-
+
Translate %1 to your native language using %2
Traduza %1 para seu idioma nativo usando %2
-
+
Icon designed by %1.
Ãcone desenhado por %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Lançado sob a <a href='%1'>Licença Pública Geral GNU</a>
-
+
&Close
&Fechar
-
+
About
Sobre
-
+
What you always wanted to know about %1 and never dared to ask
O que você sempre quis saber sobre %1 e nunca se atreveu a perguntar
@@ -78,17 +78,17 @@
Enter your License Details
-
+ Entre com seus Detalhes de Licença
&Email:
-
+ E-mail:
&Code:
-
+ Código:
@@ -106,12 +106,12 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ A versão completa permite que você baixe vÃdeos com mais de %1 minutos e assista-os sem interrupções.
Without a license, the application will expire in %1 days.
-
+ Sem licença, a aplicação irá expirar em %1 dias.
@@ -126,12 +126,101 @@
Enter License
-
+ Entrar com a Licença.
Buy License
-
+ Comprar a Licença.
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Por %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Todos Os VÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos Não Assistidos
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Marcar tudo como assistido
+
+
+
+ Show Updated
+ Mostrar Atualização
+
+
+
+ Name
+ Nome
+
+
+
+ Last Updated
+ Ãltima Atualização
+
+
+
+ Last Added
+ Ãltimo Adicionado
+
+
+
+ Last Watched
+ Ãltimo Assistido
+
+
+
+ Most Watched
+ Mais Assistidos
+
+
+
+ Sort by
+ Ordenar por
+
+
+
+ All Videos
+ Todos Os VÃdeos
+
+
+
+ Unwatched Videos
+ VÃdeos Não Assistidos
+
+
+
+ There are no updated subscriptions at this time.
+ Não há assinaturas atualizadas neste momento.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Você não tem assinaturas. Use o sÃmbolo da estrela para assinar canais.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/seg
-
+
KB/sec
KB/seg
-
+
MB/sec
MB/seg
-
+
seconds
segundos
-
+
minutes
minutos
-
+
%4 %5 remaining
%4 %5 restantes
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Esta é apenas a versão demonstração de %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Só pode fazer download de vÃdeos menores que %1 minutos para que você possa testar a funcionalidade de download.
-
+
Continue
Continuar
-
+
Get the full version
Obter a versão completa
-
+
%1 downloaded in %2
%1 baixados em %2
-
+
Download finished
Download terminou
-
+
%n Download(s)
%n Download %n Downloads
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Alterar local...
-
+
Choose the download location
Escolha um local para o download
-
+
Download location changed.
Local de download alterado.
-
+
Current downloads will still go in the previous location.
Downloads atuais ainda irão para o local anterior.
-
+
Downloading to: %1
Baixando para: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Downloads
@@ -270,68 +359,68 @@
Downloading update...
-
+ Baixando atualização...
GlobalShortcuts
-
+
Play
Reproduzir
-
+
Pause
Pausar
-
+
Play/Pause
Reproduzir/Pausar
-
+
Stop
Parar
-
+
Stop playing after current track
Parar reprodução após a faixa atual
-
+
Next track
Próxima faixa
-
+
Previous track
Faixa anterior
-
+
Increase volume
Aumentar volume
-
+
Decrease volume
Diminuir volume
-
+
Mute
Mudo
-
+
Seek forward
Avançar
-
+
Seek backward
Voltar
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Pesquisar
-
+
Find videos and channels by keyword
-
+ Encontrar vÃdeos e canais por palavra-chave
-
+
Browse
-
+ Procurar
-
+
Browse videos by category
-
+ Procurar vÃdeos por categoria
+
+
+
+ Subscriptions
+ Assinados
+
+
+
+ Channel subscriptions
+ Canais assinados
-
+
Make yourself comfortable
Sinta-se confortável
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Erro
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Parar
-
+
Stop playback and go back to the search view
Parar a reprodução e voltar à visualização da pesquisa
-
+
S&kip
Pu&lar
-
+
Skip to the next video
Pular para o próximo vÃdeo
-
-
+
+
&Pause
&Pausar
-
-
+
+
Pause playback
Pausar a reprodução
-
+
&Full Screen
&Tela Cheia
-
+
Go full screen
Ir para a tela cheia
-
+
Hide the playlist and the toolbar
Ocultar a playlist e a barra de ferramentas
-
+
Go to the YouTube video page and pause playback
Ir à página de vÃdeo do YouTube e pausar a reprodução
-
+
Copy the current video YouTube link to the clipboard
Copiar o link do vÃdeo atual do YouTube para a área de transferência
-
+
Copy the current video stream URL to the clipboard
Copiar a URL do stream do vÃdeo atual para a área de transferência
-
+
Find other video parts hopefully in the right order
Localizar partes de outro vÃdeo esperando na ordem certa
-
+
&Remove
&Remover
-
+
Remove the selected videos from the playlist
Remover os vÃdeos selecionados da playlist
-
+
Move &Up
Mover para &cima
-
+
Move up the selected videos in the playlist
Mover para cima os vÃdeos selecionados na playlist
-
+
Move &Down
Mover para &baixo
-
+
Move down the selected videos in the playlist
Mover para baixo os vÃdeos selecionados na playlist
-
+
Clear the search history. Cannot be undone.
Apagar o histórico de pesquisa. Não pode ser desfeito.
-
+
&Quit
&Sair
-
+
Bye
Tchau
-
+
&Website
Si&te
-
+
%1 on the Web
%1 na Web
-
+
Please support the continued development of %1
Por favor, apoie o desenvolvimento continuado de %1
-
+
&About
&Sobre
-
+
Info about %1
Informações sobre %1
-
+
Search
Pesquisar
-
+
Mute volume
Volume mudo
-
-
+
+
&Downloads
&Downloads
-
+
Show details about video downloads
Mostrar detalhes sobre os downloads de vÃdeo
-
+
&Download
&Download
-
+
Download the current video
Baixar o vÃdeo atual
-
+
+ &Subscribe to Channel
+ A&ssinar um canal
+
+
+
Share the current video using %1
Compartilhar o vÃdeo atual usando %1
-
+
&Email
&E-mail
-
+
Email
E-mail
-
+
&Close
&Fechar
-
+
&Float on Top
&Sempre Acima
-
+
&Stop After This Video
&Parar Após Este VÃdeo
-
+
&Report an Issue...
&Relatar um problema...
-
+
&Refine Search...
&Refinar Pesquisa...
-
+
More...
-
+ Mais...
-
+
&Related Videos
-
+ VÃdeos &relacionados
-
+
Watch videos related to the current one
+ Assistir vÃdeos relacionados à atual
+
+
+
+ Open in &Browser...
-
+
&Application
&Aplicação
-
+
Buy %1...
Adquirir %1...
-
+
&Playback
&Reprodução
-
+
&Playlist
&Playlist
-
+
&Video
&VÃdeo
-
+
&View
&Visualizar
-
+
&Share
&Compartilhar
-
+
&Help
&Ajuda
-
+
Press %1 to raise the volume, %2 to lower it
Pressione %1 para aumentar o volume, %2 para diminui-lo
-
-
+
+
Opening %1
Abrindo %1
-
+
Do you want to exit %1 with a download in progress?
Você deseja sair de "%1" com uma transferência em curso?
-
+
If you close %1 now, this download will be cancelled.
Se você fechar %1 agora, este download será cancelado.
-
+
Close and cancel download
Fechar e cancelar download
-
+
Wait for download to finish
Aguardar o download terminar
-
+
Leave &Full Screen
Deixar Em &Tela Cheia
-
+
%1 version %2 is now available.
%1 versão %2 está agora disponÃvel.
-
+
Remind me later
Lembrar mais tarde
-
+
Update
Atualizar
-
+
Error: %1
Erro: %1
-
+
P&revious
Ante&rior
-
+
Go back to the previous track
Ir para a faixa anterior
-
+
&Compact Mode
Modo &Compacto
-
+
Open the &YouTube Page
Abrir a Página do &YouTube
-
+
Copy the YouTube &Link
Copiar o &Link do YouTube
-
+
Copy the Video Stream &URL
Copiar a &URL do Stream do VÃdeo
-
+
Find Video &Parts
Localizar &Parte Do VÃdeo
-
+
&Clear Recent Searches
&Limpar Buscas Recentes
-
+
Make a &Donation
Faça uma &Doação
-
+
&Manually Start Playing
Iniciar &Manualmente A Reprodução
-
+
Manually start playing videos
Iniciar manualmente a reprodução de vÃdeos
-
+
Choose your content location
-
+ Escolher seu conteúdo local
-
+
&Play
&Reproduzir
-
+
Resume playback
Continuar reprodução
-
+
Remaining time: %1
Tempo restante: %1
-
+
Volume at %1%
Volume a %1%
-
+
Volume is muted
Volume está mudo
-
+
Volume is unmuted
Volume não está mudo
-
+
Maximum video definition set to %1
Máxima definição de vÃdeo definida para %1
-
+
Your privacy is now safe
Sua privacidade está agora segura
-
+
Downloads complete
Downloads finalizados
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Agora você pode colar o link do YouTube em outro programa
-
+
You can now paste the video stream URL into another application
Agora você pode colar a URL do stream de vÃdeo em outro programa
-
+
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.
Esta é apenas a versão demonstação de %1.
-
+
It allows you to test the application and see if it works for you.
Ele permite que você teste o aplicativo e veja se ele funciona para você.
-
+
Continue
Continuar
-
+
of
Used in video parts, as in '2 of 3'
de
-
+
part
This is for video parts, as in 'Cool video - part 1'
parte
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
epsódio
-
+
Sent from %1
Envido de %1
-
+
+ Unsubscribe from %1
+ Cancelar a assinatura de %1
+
+
+
+ Subscribe to %1
+ Assinar %1
+
+
+
Get the full version
Obter a versão completa
-
+
Downloading %1
Baixando %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ Uma nova versão do %1 está disponÃvel!
%1 %2 is now available. You have %3.
-
+ %1 %2 está disponÃvel. Você está usando %3.
Would you like to download it now?
-
+ Gostaria de fazer o download agora?
Skip This Version
-
+ Pular esta versão.
Remind Me Later
-
+ Me lembre mais tarde.
Install Update
-
+ Instalar atualização.
@@ -903,58 +1022,58 @@
Paste
-
+ Colar.
PlaylistItemDelegate
-
+
%1 views
%1 visualizações
-
+
%1 of %2 (%3) â %4
%1 de %2 (%3) â %4
-
+
Preparing
Preparando
-
+
Failed
Falhou
-
+
Completed
Finalizado
-
+
Stopped
Parado
-
+
Stop downloading
Parar download
-
+
Show in %1
Mostrar em %1
-
+
Open parent folder
Abrir pasta pai
-
+
Restart downloading
Reiniciar download
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Pesquisando...
-
+
Show %1 More
Mostrar mais %1
-
+
No videos
Sem vÃdeos
-
+
No more videos
Não há mais vÃdeos
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Ordenar por
-
+
Relevance
Relevância
-
-
+
+
Date
Data
-
+
View Count
Número De Visualizações
-
+
Rating
Avaliação
-
+
Anytime
Sempre
-
+
Today
Hoje
-
+
7 Days
7 Dias
-
+
30 Days
30 Dias
-
+
Duration
Duração
-
-
+
+
All
Todos
-
+
Short
Breve
-
+
Medium
Médio
-
+
Long
Longo
-
+
Less than 4 minutes
Menos de 4 minutos
-
+
Between 4 and 20 minutes
Entre 4 e 20 minutos
-
+
Longer than 20 minutes
Mais de 20 minutos
-
+
Quality
Qualidade
-
+
High Definition
Alta Definição
-
+
720p or higher
720p ou superior
-
+
Done
Feito
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ Feito
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Bem-vindo ao <a href='%1'>%2</a>,
-
+
Get the full version
Obter a versão completa
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Digite
-
+
a keyword
uma palavra chave
-
+
a channel
um canal
-
+
to start watching videos.
para começar a assistir vÃdeos.
-
+
Watch
Assistir
-
+
Recent keywords
Palavra-chave recente
-
+
Recent channels
Canais recentes
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
&Voltar
-
+
Forward to %1
-
+ Avançar para %1
-
+
Back to %1
-
+ Voltar para %1
SidebarWidget
-
+
Refine Search
Refinar Pesquisa
-
+
Did you mean: %1
Você quis dizer: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
-
-
-
- Featured
-
+ Mais Popular
-
+
Most Shared
-
+ Mais Compartilhado
-
+
Most Discussed
-
+ Mais Discutido
-
+
Top Rated
-
+ Mais Populares
+
+
+
+ All Time Popular
+ Todos Os Tempos Populares
Video
-
+
Cannot get video stream for %1
Não foi possÃvel obter stream de vÃdeo de %1
-
+
Network error: %1 for %2
Erro na rede: %1 para %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Argélia
-
+
Argentina
-
+ Argentina
-
+
Australia
-
+ Austrália
-
+
Belgium
-
+ Bélgica
-
+
Brazil
-
+ Brasil
-
+
Canada
-
+ Canadá
-
+
Chile
-
+ Chile
-
+
Colombia
-
+ Colômbia
-
+
Czech Republic
-
+ República Tcheca
-
+
Egypt
-
+ Egito
-
+
France
-
+ França
-
+
Germany
-
+ Alemanha
-
+
Ghana
-
+ Gana
-
+
Greece
-
+ Grécia
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ Hungria
-
+
India
-
+ Ãndia
-
+
Indonesia
-
+ Indonésia
-
+
Ireland
-
+ Irlanda
-
+
Israel
-
+ Israel
-
+
Italy
-
+ Itália
-
+
Japan
-
+ Japão
-
+
Jordan
-
+ Jordânia
-
+
Kenya
-
+ Quênia
-
+
Malaysia
-
+ Malásia
-
+
Mexico
-
+ México
-
+
Morocco
-
+ Marrocos
-
+
Netherlands
-
+ Holanda
-
+
New Zealand
-
+ Nova Zelândia
-
+
Nigeria
-
+ Nigéria
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Filipinas
-
+
Poland
-
+ Polônia
-
+
Russia
-
+ Rússia
-
+
Saudi Arabia
-
+ Arábia Saudita
-
+
Singapore
-
+ Singapura
-
+
South Africa
-
+ Ãfrica do Sul
-
+
South Korea
-
+ Coréia do Sul
-
+
Spain
-
+ Espanha
-
+
Sweden
-
+ Suécia
-
+
Taiwan
-
+ Taiwan
-
+
Tunisia
-
+ TunÃsia
-
+
Turkey
-
+ Turquia
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Emirados Ãrabes Unidos
-
+
United Kingdom
-
+ Reino Unido
-
+
Yemen
-
+ Iémen
-
+
Worldwide
-
+ Mundial
\ No newline at end of file
diff --git a/locale/ro.ts b/locale/ro.ts
index 44824e7..d031261 100644
--- a/locale/ro.ts
+++ b/locale/ro.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
ExistÄ viaÈÄ dincolo de browser!
-
+
Version %1
Versiunea %1
-
+
Licensed to: %1
LicenÈÄ pentru %1
-
+
%1 is Free Software but its development takes precious time.
%1 este un program gratuit, dar dezvoltarea acestuia necesitÄ timp preÈios.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
VÄ rugÄm sÄ <a href='%1'>donaÈi</a> pentru a ajuta la continuarea dezvoltÄrii %2.
-
+
You may want to try my other apps as well:
PuteÈi încerca Èi celelalte aplicaÈii ale mele:
-
+
%1, a YouTube music player
%1, un player pentru colecÈia muzicalÄ de pe YouTube
-
+
%1, a music player
%1, un player pentru colecÈia muzicalÄ proprie
-
+
Translate %1 to your native language using %2
Tradu %1 în limba proprie folosind %2
-
+
Icon designed by %1.
IconiÈa a fost conceputÄ de %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Oferit sub <a href='%1'>LicenÈa PublicÄ GeneralÄ GNU</a>
-
+
&Close
Ãn&chide
-
+
About
Despre
-
+
What you always wanted to know about %1 and never dared to ask
Tot ce ai vrut sÄ Ètii despre %1 dar nu ai îndrÄznit sÄ Ã®ntrebi
@@ -134,6 +134,95 @@
CumpÄrÄ LicenÈÄ
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ SorteazÄ dupÄ
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bytes
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bytes/sec
-
+
KB/sec
KB/sec
-
+
MB/sec
MB/sec
-
+
seconds
secunde
-
+
minutes
minute
-
+
%4 %5 remaining
%4 %5 rÄmase
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Aceasta este doar o versiune demo a %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Poate sÄ descarce doar videoclipurile mai mici de %1 minute în aÈa fel încât sÄ puteÈi testa funcÈionalitatea de descÄrcare.
-
+
Continue
ContinuÄ
-
+
Get the full version
ObÈineIa versiunea integralÄ
-
+
%1 downloaded in %2
%1 descÄrcat în %2
-
+
Download finished
DescÄrcare terminatÄ
-
+
%n Download(s)
%n DescÄrcare %n DescÄrcÄri %n DescÄrcÄri
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
SchimbÄ locaÈia...
-
+
Choose the download location
Alege locaÈia de descÄrcare
-
+
Download location changed.
LocaÈia de descÄrcare a fost schimbatÄ.
-
+
Current downloads will still go in the previous location.
FiÅierele în curs de descÄrcare vor fi salvate în locaÈia anterioarÄ.
-
+
Downloading to: %1
DescÄrcare în: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
DescÄrcÄri
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Redare
-
+
Pause
PauzÄ
-
+
Play/Pause
Redare/PauzÄ
-
+
Stop
Stop
-
+
Stop playing after current track
OpreÅte redarea dupÄ piesa curentÄ
-
+
Next track
Piesa urmÄtoare
-
+
Previous track
Piesa anterioarÄ
-
+
Increase volume
CreÈtere volumul
-
+
Decrease volume
DescreÈtere volumul
-
+
Mute
Mut
-
+
Seek forward
CautÄ Ã®nainte
-
+
Seek backward
CautÄ Ã®napoi
@@ -339,27 +428,37 @@
HomeView
-
+
Search
CautÄ
-
+
Find videos and channels by keyword
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Eroare
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Stop
-
+
Stop playback and go back to the search view
OpreÈte redarea Èi întoarce-te la cÄsuÈa de cÄutare
-
+
S&kip
O&mite
-
+
Skip to the next video
Treci la videoclipul urmÄtor
-
-
+
+
&Pause
&PauzÄ
-
-
+
+
Pause playback
Pune redarea pe pauzÄ
-
+
&Full Screen
Ec&ran complet
-
+
Go full screen
VizualizeazÄ pe tot ecranul
-
+
Hide the playlist and the toolbar
Ascunde lista de redare Èi bara de unelte
-
+
Go to the YouTube video page and pause playback
Deschide pagina de pe YouTube si pune pauzÄ
-
+
Copy the current video YouTube link to the clipboard
CopiazÄ adresa videoclipului YouTube curent în clipboard
-
+
Copy the current video stream URL to the clipboard
CopiazÄ adresa fluxului video curent în clipboard
-
+
Find other video parts hopefully in the right order
CautÄ alte pÄrÈi ale videoclipului
-
+
&Remove
È&terge
-
+
Remove the selected videos from the playlist
Èterge videoclipul selectat din lista de redare
-
+
Move &Up
MutÄ Ã®n &sus
-
+
Move up the selected videos in the playlist
MutÄ Ã®n sus videoclipul selectat
-
+
Move &Down
MutÄ Ã®n &jos
-
+
Move down the selected videos in the playlist
MutÄ Ã®n jos videoclipul selectat
-
+
Clear the search history. Cannot be undone.
CurÄÈÄ istoricul de cÄutÄri. AcÈiune ireversibilÄ.
-
+
&Quit
&IeÈire
-
+
Bye
La revedere
-
+
&Website
Site &Web
-
+
%1 on the Web
%1 pe Web
-
+
Please support the continued development of %1
Te rog sÄ susÈii dezvoltarea aplicaÈiei %1
-
+
&About
&Despre
-
+
Info about %1
InformaÈii despre %1
-
+
Search
CÄutare
-
+
Mute volume
Oprire sunet
-
-
+
+
&Downloads
&DescÄrcÄri
-
+
Show details about video downloads
AratÄ detalii despre descÄrcÄrile video
-
+
&Download
&DescÄrcare
-
+
Download the current video
DescarcÄ videoclipul curent
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
ÃmpÄrtÄÈeÈte videoclipul curent folosind %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
Ãn&chide
-
+
&Float on Top
&DetaÈeazÄ
-
+
&Stop After This Video
&OpreÈte DupÄ Acest Videoclip
-
+
&Report an Issue...
&RaporteazÄ o problemÄ...
-
+
&Refine Search...
&CÄutare rafinatÄ...
-
+
More...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&AplicaÈie
-
+
Buy %1...
CumpÄrÄ %1...
-
+
&Playback
&Redare
-
+
&Playlist
&ListÄ de redare
-
+
&Video
&Video
-
+
&View
Vi&zualizare
-
+
&Share
Ã&mpÄrtÄÈeÈte
-
+
&Help
&Ajutor
-
+
Press %1 to raise the volume, %2 to lower it
ApasÄ pe %1 pentru a da volumul mai tare sau pe %2 pentru a-l da mai încet
-
-
+
+
Opening %1
Deschidere %1
-
+
Do you want to exit %1 with a download in progress?
DoriÅ£i sÄ ieÈiÈi din %1 cu o descÄrcare în progres?
-
+
If you close %1 now, this download will be cancelled.
DacÄ ieÈiÈi acum din %1, procesul de descÄrcare va fi anulat.
-
+
Close and cancel download
Ãnchide Èi anuleazÄ descÄrcarea
-
+
Wait for download to finish
AÈteaptÄ ca descÄrcarea sÄ se încheie
-
+
Leave &Full Screen
IeÈi din Ec&ran Complet
-
+
%1 version %2 is now available.
Versiunea %1 a %2 este acum disponibilÄ.
-
+
Remind me later
ReaminteÈte-mi mai târziu
-
+
Update
ActualizeazÄ
-
+
Error: %1
Eroare: %1
-
+
P&revious
&Anterioare
-
+
Go back to the previous track
Mergi înapoi la piesa precedentÄ
-
+
&Compact Mode
Modul &Compact
-
+
Open the &YouTube Page
Deschide Pagina &YouTube
-
+
Copy the YouTube &Link
CopiazÄ &adresa videoclipului YouTube
-
+
Copy the Video Stream &URL
CopiazÄ adresa &fluxului video
-
+
Find Video &Parts
CautÄ &PÄrÈi ale Videoclipului
-
+
&Clear Recent Searches
Èt&erge CÄutÄrile Recente
-
+
Make a &Donation
FÄ o &DonaÈie
-
+
&Manually Start Playing
PorneÈte Redarea &Manual
-
+
Manually start playing videos
PorneÈte redarea videoclipurilor manual
-
+
Choose your content location
-
+
&Play
&Redare
-
+
Resume playback
RezumÄ redarea videoclipului
-
+
Remaining time: %1
Timp rÄmas : %1
-
+
Volume at %1%
Volum %1
-
+
Volume is muted
Sunetul este oprit
-
+
Volume is unmuted
Sunetul este pornit
-
+
Maximum video definition set to %1
RezoluÈia maxima a videoclipului este setatÄ la %1
-
+
Your privacy is now safe
Intimitatea dumneavoastrÄ este acum în siguranÈÄ
-
+
Downloads complete
DescÄrcÄri complete
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Acum poÈi adÄuga adresa YouTube într-o altÄ aplicaÈie
-
+
You can now paste the video stream URL into another application
Acum poÈi adÄuga adresa fluxului video într-o altÄ aplicaÈie
-
+
The link will be valid only for a limited time.
Adresa va fi validÄ doar pentru o perioadÄ limitatÄ de timp.
-
+
This is just the demo version of %1.
Aceasta este doar o versiune demo a %1.
-
+
It allows you to test the application and see if it works for you.
VÄ permite sÄ testaÈi aplicaÈia Èi sÄ vedeÈi dacÄ funcÈioneazÄ.
-
+
Continue
ContinuÄ
-
+
of
Used in video parts, as in '2 of 3'
din
-
+
part
This is for video parts, as in 'Cool video - part 1'
partea
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
episodul
-
+
Sent from %1
Trimis din %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
ObÈine versiunea integralÄ
-
+
Downloading %1
DescÄrcare %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 vizionÄri
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
-
+
Completed
-
+
Stopped
-
+
Stop downloading
-
+
Show in %1
-
+
Open parent folder
-
+
Restart downloading
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
CÄutare...
-
+
Show %1 More
-
+
No videos
Nici un videoclip
-
+
No more videos
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
SorteazÄ dupÄ
-
+
Relevance
RelevanÈÄ
-
-
+
+
Date
DatÄ
-
+
View Count
VizualizÄri
-
+
Rating
Evaluare
-
+
Anytime
Oricând
-
+
Today
AstÄzi
-
+
7 Days
7 Zile
-
+
30 Days
30 Zile
-
+
Duration
DuratÄ
-
-
+
+
All
Toate
-
+
Short
Scurt
-
+
Medium
Mediu
-
+
Long
Lung
-
+
Less than 4 minutes
Mai scurt de 4 minute
-
+
Between 4 and 20 minutes
Ãntre 4 Èi 20 minute
-
+
Longer than 20 minutes
Mai lung de 20 minute
-
+
Quality
Calitate
-
+
High Definition
ÃnaltÄ DefiniÈie HD
-
+
720p or higher
720p sau definiÈie mai mare
-
+
Done
Terminat
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Bine aÈi venit la <a href='%1'>%2</a>,
-
+
Get the full version
ObÈine versiunea integralÄ
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
IntroduceÈi
-
+
a keyword
un cuvânt cheie
-
+
a channel
un canal
-
+
to start watching videos.
pentru a începe sÄ vizionaÈi videoclipuri.
-
+
Watch
UrmÄreÈte
-
+
Recent keywords
CÄutÄri recente
-
+
Recent channels
Canale recente
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
Ã&napoi
-
+
Forward to %1
-
+
Back to %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
CÄutare RafinatÄ
-
+
Did you mean: %1
Ai vrut sÄ spui: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Nu poate fi accesat fluxul video pentru %1
-
+
Network error: %1 for %2
Eroare reţea: %1 pentru %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
-
+
Argentina
-
+
Australia
-
+
Belgium
-
+
Brazil
-
+
Canada
-
+
Chile
-
+
Colombia
-
+
Czech Republic
-
+
Egypt
-
+
France
-
+
Germany
-
+
Ghana
-
+
Greece
-
+
Hong Kong
-
+
Hungary
-
+
India
-
+
Indonesia
-
+
Ireland
-
+
Israel
-
+
Italy
-
+
Japan
-
+
Jordan
-
+
Kenya
-
+
Malaysia
-
+
Mexico
-
+
Morocco
-
+
Netherlands
-
+
New Zealand
-
+
Nigeria
-
+
Peru
-
+
Philippines
-
+
Poland
-
+
Russia
-
+
Saudi Arabia
-
+
Singapore
-
+
South Africa
-
+
South Korea
-
+
Spain
-
+
Sweden
-
+
Taiwan
-
+
Tunisia
-
+
Turkey
-
+
Uganda
-
+
United Arab Emirates
-
+
United Kingdom
-
+
Yemen
-
+
Worldwide
diff --git a/locale/ru.ts b/locale/ru.ts
index 5f4af6e..2d5b2a8 100644
--- a/locale/ru.ts
+++ b/locale/ru.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
ÐÐ¸Ð·Ð½Ñ Ð²Ð½Ðµ бÑаÑзеÑа!
-
+
Version %1
ÐеÑÑÐ¸Ñ %1
-
+
Licensed to: %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.
-
+
You may want to try my other apps as well:
ÐÑ Ñакже можеÑе попÑобоваÑÑ Ð´ÑÑгие мои пÑиложениÑ:
-
+
%1, a YouTube music player
%1, Ð¿Ð»ÐµÐµÑ Ð¼ÑзÑки c YouTube
-
+
%1, a music player
%1, мÑзÑкалÑнÑй плееÑ
-
+
Translate %1 to your native language using %2
ÐеÑевеÑÑи %1 на Ð²Ð°Ñ Ñодной ÑзÑк Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ %2
-
+
Icon designed by %1.
ÐвÑÐ¾Ñ Ð·Ð½Ð°Ñка %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
ÐÑпÑÑено на ÑÑловиÑÑ
<a href='%1'>GNU General Public License</a>
-
+
&Close
&ÐакÑÑÑÑ
-
+
About
РпÑогÑамме
-
+
What you always wanted to know about %1 and never dared to ask
ÐÑе ÑÑо ÐÑ Ð²Ñегда Ñ
оÑели ÑзнаÑÑ Ð¾ %1 и никогда Ð±Ñ Ð½Ðµ ÑпÑоÑили
@@ -107,7 +107,7 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ ÐÐ¾Ð»Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑмоÑÑеÑÑ Ð²Ð¸Ð´ÐµÐ¾, добавлÑÑÑ Ð±Ð¾Ð»ÐµÐµ %1 ÑÑеков в ÑпиÑке воÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ вÑбиÑаÑÑ ÑазнÑе ваÑианÑÑ Ð¿ÐµÑен.
@@ -135,6 +135,95 @@
ÐÑпиÑÑ Ð»Ð¸ÑензиÑ
+
+ ChannelAggregator
+
+
+ By %1
+ ÐÑ %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ ÐÑе видео
+
+
+
+ Unwatched Videos
+ Ðе пÑоÑмоÑÑенное видео
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ ÐÑмеÑиÑÑ Ð²Ñе как пÑоÑмоÑÑенное
+
+
+
+ Show Updated
+ ÐоказаÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñе
+
+
+
+ Name
+ Ðазвание
+
+
+
+ Last Updated
+ Ðедавно обновленнÑе
+
+
+
+ Last Added
+ Ðедавно добавленнÑе
+
+
+
+ Last Watched
+ Ðедавно пÑоÑмоÑÑеннÑе
+
+
+
+ Most Watched
+ Ðаиболее пÑоÑмаÑиваемÑе
+
+
+
+ Sort by
+ СоÑÑиÑоваÑÑ Ð¿Ð¾
+
+
+
+ All Videos
+ ÐÑе видео
+
+
+
+ Unwatched Videos
+ Ðе пÑоÑмоÑÑенное видео
+
+
+
+ There are no updated subscriptions at this time.
+ РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð½ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ подпиÑок.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ У Ð²Ð°Ñ Ð½ÐµÐ´ подпиÑок. ÐÑполÑзÑйÑе Ñимвол звездоÑки ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð¿ÑваÑÑÑÑ Ð½Ð° каналÑ.
+
+
ClearButton
@@ -146,47 +235,47 @@
DownloadItem
-
+
bytes
байÑ
-
+
KB
ÐбайÑ
-
+
MB
ÐбайÑ
-
+
bytes/sec
байÑ/Ñек
-
+
KB/sec
ÐбайÑ/Ñек
-
+
MB/sec
ÐбайÑ/Ñек
-
+
seconds
ÑекÑнд
-
+
minutes
минÑÑ
-
+
%4 %5 remaining
оÑÑалоÑÑ %4 %5
@@ -194,37 +283,37 @@
DownloadManager
-
+
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
ÐолÑÑиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð²ÐµÑÑиÑ
-
+
%1 downloaded in %2
%1 загÑÑжен в %2
-
+
Download finished
ÐагÑÑзка завеÑÑена
-
+
%n Download(s)
ÐагÑÑжаеÑÑÑ %n Ñайл ÐагÑÑжаÑÑÑÑ %n Ñайла ÐагÑÑжаÑÑÑÑ %n Ñайлов
@@ -232,27 +321,27 @@
DownloadSettings
-
+
Change location...
ÐзмениÑÑ Ð¿ÑÑÑ...
-
+
Choose the download location
ÐÑбÑаÑÑ Ð¿ÑÑÑ Ð·Ð°Ð³ÑÑзки
-
+
Download location changed.
ÐÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð³ÑÑжаемÑÑ
Ñайлов изменÑн.
-
+
Current downloads will still go in the previous location.
ФайлÑ, загÑÑжаемÑе в даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð±ÑдÑÑ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ Ð¿Ð¾ пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð°Ð´ÑеÑÑ.
-
+
Downloading to: %1
Ð¤Ð°Ð¹Ð»Ñ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð² %1
@@ -260,8 +349,8 @@
DownloadView
-
-
+
+
Downloads
ÐагÑÑзки
@@ -277,62 +366,62 @@
GlobalShortcuts
-
+
Play
ÐоÑпÑоизведение
-
+
Pause
ÐаÑза
-
+
Play/Pause
ÐоÑпÑ./ÐаÑза
-
+
Stop
СÑоп
-
+
Stop playing after current track
СÑоп поÑле ÑÑого клипа
-
+
Next track
След. клип
-
+
Previous track
ÐÑед. клип
-
+
Increase volume
ÐÑомÑе
-
+
Decrease volume
ТиÑе
-
+
Mute
ÐаглÑÑиÑÑ
-
+
Seek forward
ÐеÑемоÑаÑÑ Ð²Ð¿ÐµÑед
-
+
Seek backward
ÐеÑемоÑаÑÑ Ð½Ð°Ð·Ð°Ð´
@@ -340,35 +429,45 @@
HomeView
-
+
Search
ÐоиÑк
-
+
Find videos and channels by keyword
-
+ ÐоиÑк видео и каналов по запÑоÑÑ
-
+
Browse
-
+ СмоÑÑеÑÑ
-
+
Browse videos by category
-
+ СмоÑÑеÑÑ Ð²Ð¸Ð´ÐµÐ¾ по каÑегоÑиÑм
-
+
+ Subscriptions
+ ÐодпиÑки
+
+
+
+ Channel subscriptions
+ ÐодпиÑки на каналÑ
+
+
+
Make yourself comfortable
-
+ ЧÑвÑÑвÑйÑе ÑÐµÐ±Ñ ÐºÐ°Ðº дома
LoadingWidget
-
+
Error
ÐÑибка
@@ -376,426 +475,436 @@
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
ÐолноÑкÑанное воÑпÑоизведение
-
+
Hide the playlist and the toolbar
СкÑÑÑÑ ÑпиÑок воÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов
-
+
Go to the YouTube video page and pause playback
ÐÑиоÑÑановиÑÑ Ð²Ð¾ÑпÑоизведение и пеÑейÑи на ÑÑÑаниÑÑ Ð²Ð¸Ð´ÐµÐ¾ в YouTube
-
+
Copy the current video YouTube link to the clipboard
СкопиÑоваÑÑ ÑÑÑÐ»ÐºÑ ÑекÑÑего клипа YouTube в бÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½Ð°
-
+
Copy the current video stream URL to the clipboard
СкопиÑоваÑÑ Ð°Ð´ÑÐµÑ ÑекÑÑего видео поÑока в бÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½Ð°
-
+
Find other video parts hopefully in the right order
ÐайÑи дÑÑгие ÑаÑÑи видео, надеÑÑÑ, в пÑавилÑном поÑÑдке
-
+
&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 the search history. Cannot be undone.
ÐÑиÑÑиÑÑ Ð¸ÑÑоÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±ÑаÑимÑ.
-
+
&Quit
&ÐÑÑ
од
-
+
Bye
Ðока
-
+
&Website
&ÐомаÑнÑÑ ÑÑÑаниÑа
-
+
%1 on the Web
%1 в инÑеÑнеÑе
-
+
Please support the continued development of %1
ÐоддеÑжиÑе далÑнейÑÑÑ ÑазÑабоÑÐºÑ %1
-
+
&About
&РпÑогÑамме
-
+
Info about %1
Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ %1
-
+
Search
ÐоиÑк
-
+
Mute volume
ÐÑклÑÑиÑÑ Ð·Ð²Ñк
-
-
+
+
&Downloads
ÐагÑÑзки
-
+
Show details about video downloads
ÐоказаÑÑ Ð¿Ð¾Ð´ÑобноÑÑи о загÑÑзкаÑ
видео
-
+
&Download
ÐагÑÑзиÑÑ
-
+
Download the current video
ÐагÑÑзиÑÑ Ð¿ÑоигÑÑваемÑй Ñайл
-
+
+ &Subscribe to Channel
+ ÐодпиÑаÑÑÑÑ Ð½Ð° канал
+
+
+
Share the current video using %1
ÐоделиÑÑÑÑ ÑекÑÑим видео Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ %1
-
+
&Email
&Email
-
+
Email
Email
-
+
&Close
&ÐакÑÑÑÑ
-
+
&Float on Top
&ÐовеÑÑ
вÑеÑ
окон
-
+
&Stop After This Video
ÐÑÑ&ановиÑÑ Ð¿Ð¾Ñле ÑÑого видео
-
+
&Report an Issue...
Соо&бÑиÑÑ Ð¾Ð± оÑибке
-
+
&Refine Search...
&УÑоÑниÑÑ Ð¿Ð¾Ð¸Ñк...
-
+
More...
ÐолÑÑе...
-
+
&Related Videos
Ðо&Ñ
ожее видео
-
+
Watch videos related to the current one
СмоÑÑеÑÑ Ð²Ð¸Ð´ÐµÐ¾, ÑвÑзаннÑе Ñ ÑекÑÑим
-
+
+ Open in &Browser...
+
+
+
+
&Application
ÐÑ&иложение
-
+
Buy %1...
ÐÑпиÑÑ %1...
-
+
&Playback
&ÐоÑпÑоизведение
-
+
&Playlist
&СпиÑок воÑпÑоизведениÑ
-
+
&Video
&Ðидео
-
+
&View
&ÐÑоÑмоÑÑ
-
+
&Share
&ÐоделиÑÑÑÑ
-
+
&Help
СпÑ&авка
-
+
Press %1 to raise the volume, %2 to lower it
ÐажмиÑе %1 Ð´Ð»Ñ ÑвелиÑÐµÐ½Ð¸Ñ Ð³ÑомкоÑÑи и %2 Ð´Ð»Ñ ÑменÑÑениÑ
-
-
+
+
Opening %1
ÐÑкÑÑÑие %1
-
+
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
ÐодождаÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзок
-
+
Leave &Full Screen
ÐокинÑÑÑ Ð¿&олноÑкÑаннÑй Ñежим
-
+
%1 version %2 is now available.
%1 веÑÑÐ¸Ñ %2 ÑепеÑÑ Ð´Ð¾ÑÑÑпна.
-
+
Remind me later
ÐапомниÑÑ Ð¿Ð¾Ð·Ð¶Ðµ
-
+
Update
Ðбновление
-
+
Error: %1
ÐÑибка: %1
-
+
P&revious
ÐÑ&едÑдÑÑий
-
+
Go back to the previous track
ÐеÑнÑÑÑÑÑ Ðº пÑедÑдÑÑÐµÐ¼Ñ ÑÑекÑ
-
+
&Compact Mode
Ðомпак&ÑнÑй Ñежим
-
+
Open the &YouTube Page
ÐÑ&кÑÑÑÑ ÑÑÑаниÑÑ YouTube
-
+
Copy the YouTube &Link
ÐопиÑоваÑÑ &ÑÑÑÐ»ÐºÑ Ð½Ð° YouTube
-
+
Copy the Video Stream &URL
ÐопиÑоваÑÑ ÑÑÑÐ»ÐºÑ Ð½Ð° в&идео поÑок
-
+
Find Video &Parts
ÐайÑи &ÑÑагменÑÑ Ð²Ð¸Ð´ÐµÐ¾
-
+
&Clear Recent Searches
Ð&ÑиÑÑиÑÑ Ð¿Ð¾Ñледние поиÑковÑе запÑоÑÑ
-
+
Make a &Donation
Сд&елаÑÑ Ð¿Ð¾Ð¶ÐµÑÑвование
-
+
&Manually Start Playing
&ÐаÑаÑÑ Ð¿ÑоигÑÑвание вÑÑÑнÑÑ
-
+
Manually start playing videos
ÐаÑаÑÑ Ð¿ÑоигÑÑвание видео вÑÑÑнÑÑ
-
+
Choose your content location
-
+ ÐÑбеÑиÑе ваÑе ÑаÑположение
-
+
&Play
ÐÑ&оигÑаÑÑ
-
+
Resume playback
ÐÑодолжиÑÑ Ð²Ð¾ÑпÑоизведение
-
+
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 complete
ÐагÑÑзка завеÑÑена
@@ -803,65 +912,75 @@
MediaView
-
+
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.
ÐдÑÐµÑ Ð±ÑÐ´ÐµÑ ÑÑÑеÑÑвоваÑÑ Ð¾Ð³ÑаниÑенное вÑемÑ.
-
+
This is just the demo version of %1.
ÐÐ°Ð½Ð½Ð°Ñ Ð¿ÑогÑамма ÑвлÑеÑÑÑ Ð´ÐµÐ¼Ð¾-веÑÑией %1.
-
+
It allows you to test the application and see if it works for you.
Ðна позволÑÐµÑ Ð²Ð°Ð¼ оÑениÑÑ Ð¿Ñиложение.
-
+
Continue
ÐÑодолжиÑÑ
-
+
of
Used in video parts, as in '2 of 3'
из
-
+
part
This is for video parts, as in 'Cool video - part 1'
ÑаÑÑÑ
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
Ñпизод
-
+
Sent from %1
ÐÑпÑавиÑÑ Ð¸Ð· %1
-
+
+ Unsubscribe from %1
+ ÐÑпиÑаÑÑÑÑ Ð¾Ñ %1
+
+
+
+ Subscribe to %1
+ ÐодпиÑаÑÑÑÑ Ð½Ð° %1
+
+
+
Get the full version
ÐÑпиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð²ÐµÑÑиÑ
-
+
Downloading %1
ÐагÑÑÐ¶Ð°Ñ %1
@@ -910,52 +1029,52 @@
PlaylistItemDelegate
-
+
%1 views
%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
ÐеÑезапÑÑÑиÑÑ Ð·Ð°Ð³ÑÑзкÑ
@@ -963,22 +1082,22 @@
PlaylistModel
-
+
Searching...
ÐÐ´ÐµÑ Ð¿Ð¾Ð¸Ñк...
-
+
Show %1 More
-
+ ÐоказаÑÑ ÐµÑÑ %1
-
+
No videos
ÐÐµÑ Ð²Ð¸Ð´ÐµÐ¾
-
+
No more videos
ÐÐµÑ Ð±Ð¾Ð»ÑÑе видео
@@ -986,109 +1105,109 @@
RefineSearchWidget
-
+
Sort by
СоÑÑиÑоваÑÑ Ð¿Ð¾
-
+
Relevance
РелеванÑноÑÑÑ
-
-
+
+
Date
ÐаÑа
-
+
View Count
Ðол-во пÑоÑмоÑÑов
-
+
Rating
РейÑинг
-
+
Anytime
РлÑбое вÑемÑ
-
+
Today
СегоднÑ
-
+
7 Days
7 дней
-
+
30 Days
30 дней
-
+
Duration
ÐÑодолжиÑелÑноÑÑÑ
-
-
+
+
All
ÐÑе
-
+
Short
ÐоÑоÑкие
-
+
Medium
СÑедние
-
+
Long
ÐлиннÑе
-
+
Less than 4 minutes
ÐоÑоÑе Ñем 4 минÑÑÑ
-
+
Between 4 and 20 minutes
ÐÐµÐ¶Ð´Ñ 4 и 20 минÑÑами
-
+
Longer than 20 minutes
ÐолÑÑе Ñем 20 минÑÑ
-
+
Quality
ÐаÑеÑÑво
-
+
High Definition
ÐÑÑокое ÑазÑеÑение
-
+
720p or higher
720p или болÑÑе
-
+
Done
ÐоÑово
@@ -1096,7 +1215,7 @@
RegionsView
-
+
Done
ÐоÑово
@@ -1112,48 +1231,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
ÐобÑо пожаловаÑÑ Ð² <a href='%1'>%2</a>,
-
+
Get the full version
ÐÑпиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð²ÐµÑÑиÑ
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
ÐведиÑе
-
+
a keyword
запÑоÑ
-
+
a channel
канал
-
+
to start watching videos.
ÑÑÐ¾Ð±Ñ Ð½Ð°ÑаÑÑ Ð¿ÑоÑмоÑÑ.
-
+
Watch
СмоÑÑеÑÑ
-
+
Recent keywords
ÐоÑледние запÑоÑÑ
-
+
Recent channels
ÐоÑледние каналÑ
@@ -1161,18 +1280,18 @@
SidebarHeader
-
-
+
+
&Back
Ð&азад
-
+
Forward to %1
ÐпеÑед к %1
-
+
Back to %1
Ðазад к %1
@@ -1180,12 +1299,12 @@
SidebarWidget
-
+
Refine Search
УÑоÑниÑÑ Ð¿Ð¾Ð¸Ñк
-
+
Did you mean: %1
Ðозможно Ð²Ñ Ð¸Ð¼ÐµÐ»Ð¸ в видÑ: %1
@@ -1193,40 +1312,40 @@
StandardFeedsView
-
+
Most Popular
СамÑе попÑлÑÑнÑе
-
- Featured
- ÐопÑлÑÑнÑе
-
-
-
+
Most Shared
-
+
Most Discussed
СамÑе обÑÑждаемÑе
-
+
Top Rated
ÐÑÑÑие оÑенки
+
+
+ All Time Popular
+ ÐопÑлÑÑное за вÑе вÑемÑ
+
Video
-
+
Cannot get video stream for %1
Ðе ÑдалоÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²Ð¸Ð´ÐµÐ¾ поÑок Ð´Ð»Ñ %1
-
+
Network error: %1 for %2
ÐÑибка ÑеÑи: %1 на %2
@@ -1234,244 +1353,244 @@
YTRegions
-
+
Algeria
ÐлжиÑ
-
+
Argentina
ÐÑгенÑина
-
+
Australia
ÐвÑÑÑалиÑ
-
+
Belgium
ÐелÑгиÑ
-
+
Brazil
ÐÑазилиÑ
-
+
Canada
Ðанада
-
+
Chile
Чили
-
+
Colombia
ÐолÑмбиÑ
-
+
Czech Republic
ЧеÑ
иÑ
-
+
Egypt
ÐгипеÑ
-
+
France
ФÑанÑиÑ
-
+
Germany
ÐеÑманиÑ
-
+
Ghana
Ðана
-
+
Greece
ÐÑеÑиÑ
-
+
Hong Kong
Ðонконг
-
+
Hungary
ÐенгÑиÑ
-
+
India
-
+ ÐндиÑ
-
+
Indonesia
-
+ ÐндонезиÑ
-
+
Ireland
-
+ ÐÑландиÑ
-
+
Israel
-
+ ÐзÑаилÑ
-
+
Italy
-
+ ÐÑалиÑ
-
+
Japan
-
+ ЯпониÑ
-
+
Jordan
-
+ ÐоÑданиÑ
-
+
Kenya
-
+ ÐениÑ
-
+
Malaysia
-
+ ÐалайзиÑ
-
+
Mexico
ÐекÑика
-
+
Morocco
ÐаÑокко
-
+
Netherlands
ÐидеÑландÑ
-
+
New Zealand
ÐÐ¾Ð²Ð°Ñ ÐеландиÑ
-
+
Nigeria
ÐигеÑиÑ
-
+
Peru
ÐеÑÑ
-
+
Philippines
ФилиппинÑ
-
+
Poland
ÐолÑÑа
-
+
Russia
РоÑÑиÑ
-
+
Saudi Arabia
СаÑдовÑÐºÐ°Ñ ÐÑавиÑ
-
+
Singapore
СингапÑÑ
-
+
South Africa
Южно-ÐÑÑиканÑÐºÐ°Ñ Ð ÐµÑпÑблика
-
+
South Korea
РеÑпÑблика ÐоÑеÑ
-
+
Spain
ÐÑпаниÑ
-
+
Sweden
ШвеÑиÑ
-
+
Taiwan
ТайванÑ
-
+
Tunisia
ТÑниÑ
-
+
Turkey
ТÑÑÑиÑ
-
+
Uganda
Уганда
-
+
United Arab Emirates
ÐбÑединÑннÑе ÐÑабÑкие ÐмиÑаÑÑ
-
+
United Kingdom
ÐеликобÑиÑаниÑ
-
+
Yemen
Ðемен
-
+
Worldwide
-
+ Ðо вÑем миÑе
\ No newline at end of file
diff --git a/locale/sk.ts b/locale/sk.ts
index d54f732..d5edd17 100644
--- a/locale/sk.ts
+++ b/locale/sk.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
EÅ¡te stále existuje život aj mimo prehliadaÄ!
-
+
Version %1
Verzia %1
-
+
Licensed to: %1
Licencované pre: %1
-
+
%1 is Free Software but its development takes precious time.
%1 je plne slobodným softvérom, ktorého vývoj si vÅ¡ak žiada znaÄnú dávku Äasu.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Preto prosÃm o akúkoľvek finanÄnú <a href='%1'>podporu</a> pri pokraÄujúcom vývoji %2.
-
+
You may want to try my other apps as well:
Je možné, že ťa zaujmú aj moje ostatné aplikácie:
-
+
%1, a YouTube music player
%1, prehrávaÄ YouTube muziky
-
+
%1, a music player
%1, kvalitný hudobný prehrávaÄ
-
+
Translate %1 to your native language using %2
Prelož %1 do svojho materinského jazyka cez %2
-
+
Icon designed by %1.
Ikonu nadizajnoval %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Vydané pod <a href='%1'>GNU General Public License</a>
-
+
&Close
&Zatvoriť
-
+
About
O projekte
-
+
What you always wanted to know about %1 and never dared to ask
VÅ¡etko Äo chceÅ¡ o %1 vedieÅ¥, bez potreby sa vopred spýtaÅ¥
@@ -134,6 +134,95 @@
Zakúpiť licenciu
+
+ ChannelAggregator
+
+
+ By %1
+ Od %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Všetky videá
+
+
+
+ Unwatched Videos
+ Neprezreté videá
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ OznaÄiÅ¥ vÅ¡etky ako zhliadnuté
+
+
+
+ Show Updated
+ Zobraziť aktualizované
+
+
+
+ Name
+ Meno
+
+
+
+ Last Updated
+ Naposledy aktualizované
+
+
+
+ Last Added
+ Naposledy pridané
+
+
+
+ Last Watched
+ Naposledy prezerané
+
+
+
+ Most Watched
+ Najviac prezerané
+
+
+
+ Sort by
+ Zoradiť podľa
+
+
+
+ All Videos
+ Všetky videá
+
+
+
+ Unwatched Videos
+ Neprezreté videá
+
+
+
+ There are no updated subscriptions at this time.
+ Nie sú k dispozÃcii žiadne aktualizované subskripcie.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Nemáš žiadne subskripcie. Použi symbol hviezdy pre odoberanie kanálov.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bajtov
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
bajtov/sek
-
+
KB/sec
KB/sek
-
+
MB/sec
MB/sek
-
+
seconds
sekúnd
-
+
minutes
minút
-
+
%4 %5 remaining
zostáva %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
Ide o demoverziu %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Umožnà ti stiahnuť iba videý kratšie ako %1 minút, takže aspoŠmôžeš otestovať túto funkcionalitu.
-
+
Continue
PokraÄuj
-
+
Get the full version
ZÃskaÅ¥ plnú verziu
-
+
%1 downloaded in %2
%1 stiahnuté za %2
-
+
Download finished
SÅ¥ahovanie ukonÄené.
-
+
%n Download(s)
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Zmeniť umiestnenie...
-
+
Choose the download location
ZmeniÅ¥ umiestnenie sÅ¥ahovanÃ
-
+
Download location changed.
Umiestnenie sťahovanà zmenené.
-
+
Current downloads will still go in the previous location.
Aktuálne sÅ¥ahovania sa uložia eÅ¡te na predchádzajúcom umiestnenÃ.
-
+
Downloading to: %1
SÅ¥ahujem do: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
SÅ¥ahovania
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Prehrať
-
+
Pause
Pozastaviť
-
+
Play/Pause
Prehrať/Pozastaviť
-
+
Stop
Zastaviť
-
+
Stop playing after current track
Zastav hranie po aktuálnom videu
-
+
Next track
Nasledovné video
-
+
Previous track
Predošlé video
-
+
Increase volume
Zvýšiť hlasitosť
-
+
Decrease volume
ZnÞiť hlasitosť
-
+
Mute
Stlmiť
-
+
Seek forward
PretoÄiÅ¥ vpred
-
+
Seek backward
PretoÄiÅ¥ vzad
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Hľadať
-
+
Find videos and channels by keyword
NájsÅ¥ videá a kanály podľa kľúÄa
-
+
Browse
Prehliadať
-
+
Browse videos by category
Prehliadať videá podľa kategórie
-
+
+ Subscriptions
+ Subskripcie
+
+
+
+ Channel subscriptions
+ Odber kanálov
+
+
+
Make yourself comfortable
Daj sa do pohody
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Chyba
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
&Zastaviť
-
+
Stop playback and go back to the search view
Zastaviť prehrávanie a vrátiť sa k výsledkom hľadania
-
+
S&kip
&PreskoÄiÅ¥
-
+
Skip to the next video
PreskoÄiÅ¥ na nasledovné video
-
-
+
+
&Pause
&Pozasaviť
-
-
+
+
Pause playback
Pozastaviť prehrávanie
-
+
&Full Screen
&Celá obrazovka
-
+
Go full screen
Na celú obrazovku
-
+
Hide the playlist and the toolbar
Skryť playlist a nástrojovú lištu
-
+
Go to the YouTube video page and pause playback
Prejsť na YouTube stránku videa a pozastaviť prehrávanie
-
+
Copy the current video YouTube link to the clipboard
KopÃrovaÅ¥ YouTube odkaz aktuálneho videa do schránky
-
+
Copy the current video stream URL to the clipboard
KopÃrovaÅ¥ odkaz aktuálneho video streamu do schránky
-
+
Find other video parts hopefully in the right order
PokúsiÅ¥ sa nájsÅ¥ zvyÅ¡né video Äasti
-
+
&Remove
&Odstrániť
-
+
Remove the selected videos from the playlist
Odstrániť vybrané videá z playlistu
-
+
Move &Up
Presunúť &nahor
-
+
Move up the selected videos in the playlist
Presunúť vybrané videá v playliste nahor
-
+
Move &Down
Presunúť &nadol
-
+
Move down the selected videos in the playlist
Presunúť vybrané videá v playliste nadol
-
+
Clear the search history. Cannot be undone.
VyÄisiÅ¥ históriu hľadania. Nevratná akcia.
-
+
&Quit
&UkonÄiÅ¥
-
+
Bye
Maj sa
-
+
&Website
&Domovská stránka
-
+
%1 on the Web
%1 na Internete
-
+
Please support the continued development of %1
Podpor prosÃm pokraÄujúci vývoj %1
-
+
&About
&O projekte
-
+
Info about %1
Informácie o %1
-
+
Search
Hľadať
-
+
Mute volume
Stlmiť hlasitosť
-
-
+
+
&Downloads
&SÅ¥ahovania
-
+
Show details about video downloads
ZobraziÅ¥ detaily o sÅ¥ahovanÃ
-
+
&Download
&Stiahnuť
-
+
Download the current video
Stiahnuť aktuálne video
-
+
+ &Subscribe to Channel
+ &Odoberať daný kanál
+
+
+
Share the current video using %1
Zdieľať aktuálne video cez %1
-
+
&Email
&E-mail
-
+
Email
E-mailová adresa
-
+
&Close
&Zatvoriť
-
+
&Float on Top
&Vždy na vrchu
-
+
&Stop After This Video
&Zastav po tomto videu
-
+
&Report an Issue...
&Nahlásiť problém...
-
+
&Refine Search...
&Upraviť kritériá hľadania...
-
+
More...
Viac...
-
+
&Related Videos
&Pridružené vidá
-
+
Watch videos related to the current one
Pozerať videá pridružené k aktuálnemu
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplikácia
-
+
Buy %1...
Zakúpiť %1...
-
+
&Playback
&Prehrávanie
-
+
&Playlist
&Playlist
-
+
&Video
&Video
-
+
&View
&Zobrazenie
-
+
&Share
&Zdieľanie
-
+
&Help
&Nápoveda
-
+
Press %1 to raise the volume, %2 to lower it
StlaÄ %1 pre zvýšenie hlasitosti, %2 pre jej znÞenie
-
-
+
+
Opening %1
Otváram %1
-
+
Do you want to exit %1 with a download in progress?
ChceÅ¡ ukonÄiÅ¥ %1 aj napriek prebiehajúcemu sÅ¥ahovaniu?
-
+
If you close %1 now, this download will be cancelled.
Pokiaľ teraz ukonÄÃÅ¡ %1, prÃdeÅ¡ o aktuálne sÅ¥ahovanie.
-
+
Close and cancel download
Zatvoriť a zrušiť sťahovanie
-
+
Wait for download to finish
PoÄkaÅ¥ kým skonÄà sÅ¥ahovanie
-
+
Leave &Full Screen
Opustiť režim &celej obrazovky
-
+
%1 version %2 is now available.
%1 verzie %2 je k dispozÃcii.
-
+
Remind me later
Pripomenúť neskôr
-
+
Update
Aktualizácia
-
+
Error: %1
Chyba: %1
-
+
P&revious
&Predošlé
-
+
Go back to the previous track
ÃsÅ¥ na predoÅ¡lé video
-
+
&Compact Mode
&Kompaktný mód
-
+
Open the &YouTube Page
Otvoriť &YouTube stránku
-
+
Copy the YouTube &Link
KopÃrovaÅ¥ &odkaz z YouTube
-
+
Copy the Video Stream &URL
KopÃrovaÅ¥ &URL video streamu
-
+
Find Video &Parts
NájsÅ¥ zvyÅ¡né relevantné &Äasti
-
+
&Clear Recent Searches
&VyÄistiÅ¥ zoznam posledných hľadanÃ
-
+
Make a &Donation
FinanÄne &podporiÅ¥
-
+
&Manually Start Playing
&Manuálne prehrávanie
-
+
Manually start playing videos
Koniec manuálneho prehrávania
-
+
Choose your content location
Vybrať svoju obsahovú lokáciu
-
+
&Play
&Prehrať
-
+
Resume playback
Obnoviť prehrávanie
-
+
Remaining time: %1
Zostávajúci Äas: %1
-
+
Volume at %1%
Hlasitosť na %1%
-
+
Volume is muted
Hlasitosť stlmená
-
+
Volume is unmuted
Hlasitosť nie je stlmená
-
+
Maximum video definition set to %1
Maximálne rozlÃÅ¡enie videa nastavené na %1
-
+
Your privacy is now safe
Nemaj obavy o súkromie
-
+
Downloads complete
Sťahovanie kompletné
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Takto môžeš prilepiť YouTube odkaz do inej aplikácie
-
+
You can now paste the video stream URL into another application
Budeš môcť prilepiť odkaz video streamu do inej aplikácie
-
+
The link will be valid only for a limited time.
Odkaz bude platný len obmedzenú dobu.
-
+
This is just the demo version of %1.
Ide o demoverziu %1.
-
+
It allows you to test the application and see if it works for you.
Umožnà ti aplikáciu vyskúšať a pohodlne otestovať.
-
+
Continue
PokraÄuj
-
+
of
Used in video parts, as in '2 of 3'
z
-
+
part
This is for video parts, as in 'Cool video - part 1'
ÄasÅ¥
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
epizóda
-
+
Sent from %1
Odoslané z %1
-
+
+ Unsubscribe from %1
+ Zrušiť odber z %1
+
+
+
+ Subscribe to %1
+ Odoberať z %1
+
+
+
Get the full version
ZÃskaÅ¥ plnú verziu
-
+
Downloading %1
SÅ¥ahujem %1.
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 prezretÃ
-
+
%1 of %2 (%3) â %4
%1 z %2 (%3) â %4
-
+
Preparing
Pripravujem
-
+
Failed
Zlyhané
-
+
Completed
ÃspeÅ¡né
-
+
Stopped
Zastavené
-
+
Stop downloading
Zastav sťahovanie
-
+
Show in %1
Zobraz v %1
-
+
Open parent folder
Otvor nadradený adresár
-
+
Restart downloading
Opakuj sťahovanie
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Hľadám...
-
+
Show %1 More
Zobraz %1 viac
-
+
No videos
Žiadne videá
-
+
No more videos
Niet viac videÃ
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Zoradiť podľa
-
+
Relevance
Relevancia
-
-
+
+
Date
Dátum
-
+
View Count
PoÄet zhliadnutÃ
-
+
Rating
Hodnotenie
-
+
Anytime
Kedykoľvek
-
+
Today
Dnes
-
+
7 Days
7 dnÃ
-
+
30 Days
30 dnÃ
-
+
Duration
Dĺžka
-
-
+
+
All
VÅ¡etko
-
+
Short
Krátky
-
+
Medium
Stredný
-
+
Long
Dlhý
-
+
Less than 4 minutes
Menej ako 4 minúty
-
+
Between 4 and 20 minutes
Medzi 4 a 20 minútami
-
+
Longer than 20 minutes
Viac ako 20 minút
-
+
Quality
Kvalita
-
+
High Definition
Vysoké rozlÃÅ¡enie
-
+
720p or higher
720p alebo vyššie
-
+
Done
Hotovo
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Hotovo
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Vitaj v aplikácii <a href='%1>%2</a>,
-
+
Get the full version
ZÃskaÅ¥ plnú verziu
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Vlož
-
+
a keyword
kľúÄové slovo
-
+
a channel
názov kanálu
-
+
to start watching videos.
pre spustenie sledovania.
-
+
Watch
Pozerať
-
+
Recent keywords
Posledné kľúÄové slová
-
+
Recent channels
Posledné kanály
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
&Späť
-
+
Forward to %1
Vpred k %1
-
+
Back to %1
Späť k %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Upraviť kritériá hľadania
-
+
Did you mean: %1
Mali ste na mysli: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
Najpopulárnejšie
-
- Featured
- Prominentné
-
-
-
+
Most Shared
Najzdieľanejšie
-
+
Most Discussed
Najdiskutovanejšie
-
+
Top Rated
Najvyššiehodnotené
+
+
+ All Time Popular
+ Dlhodobo najpopulárnejšie
+
Video
-
+
Cannot get video stream for %1
Nedostupný video stream pre %1
-
+
Network error: %1 for %2
Chyba siete: %1 pre %2
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
Alžirsko
-
+
Argentina
ArgentÃna
-
+
Australia
Austrália
-
+
Belgium
Belgicko
-
+
Brazil
BrazÃlia
-
+
Canada
Kanada
-
+
Chile
Äile
-
+
Colombia
Kolumbia
-
+
Czech Republic
Äeská Republika
-
+
Egypt
Egypt
-
+
France
Francúzsko
-
+
Germany
Nemecko
-
+
Ghana
Ghana
-
+
Greece
Grécko
-
+
Hong Kong
Hong Kong
-
+
Hungary
MaÄarsko
-
+
India
India
-
+
Indonesia
Indonézia
-
+
Ireland
Ãrsko
-
+
Israel
Izrael
-
+
Italy
Taliansko
-
+
Japan
Japonsko
-
+
Jordan
Jordánsko
-
+
Kenya
KeÅa
-
+
Malaysia
Malajzia
-
+
Mexico
Mexiko
-
+
Morocco
Maroko
-
+
Netherlands
Holandsko
-
+
New Zealand
Nový Zéland
-
+
Nigeria
Nigéria
-
+
Peru
Peru
-
+
Philippines
FilipÃny
-
+
Poland
Poľsko
-
+
Russia
Rusko
-
+
Saudi Arabia
Saudská Arábia
-
+
Singapore
Singapur
-
+
South Africa
Južná Afrika
-
+
South Korea
Južná Kórea
-
+
Spain
Å panielsko
-
+
Sweden
Švédsko
-
+
Taiwan
Taiwan
-
+
Tunisia
Tunisko
-
+
Turkey
Turecko
-
+
Uganda
Uganda
-
+
United Arab Emirates
Spojené Arabské Emiráty
-
+
United Kingdom
Veľká Británia
-
+
Yemen
Jemen
-
+
Worldwide
Celosvetovo
diff --git a/locale/sl.ts b/locale/sl.ts
index 4d06d33..29c9921 100644
--- a/locale/sl.ts
+++ b/locale/sl.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Zunaj brskalnika je življenje!
-
+
Version %1
RazliÄica %1
-
+
Licensed to: %1
-
+
%1 is Free Software but its development takes precious time.
%1 je prosta programska oprema, a njen razvoj zahteva dragocen Äas.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
<a href='%1'>Darujte prosim</a> za podporo stalnemu razvoju %2.
-
+
You may want to try my other apps as well:
Morda želite preizkusiti še ostale aplikacije:
-
+
%1, a YouTube music player
%1, YouTube glasbeni predvajalnik
-
+
%1, a music player
%1, glasbeni predvajalnik
-
+
Translate %1 to your native language using %2
Prevedite %1 v vaš jezik z uporabo programa %2
-
+
Icon designed by %1.
Ikone je izrisal %1.
-
+
Released under the <a href='%1'>GNU General Public License</a>
Izdano na podlagi licence <a href='%1'>GNU General Public License</a>
-
+
&Close
&Zapri
-
+
About
O programu
-
+
What you always wanted to know about %1 and never dared to ask
Kar ste vedno želeli vedeti o %1 a si niste nikoli upali vprašati
@@ -83,7 +83,7 @@
&Email:
-
+ &E-pošta
@@ -106,12 +106,12 @@
The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
-
+ Polna razliÄica omogoÄa prenos posnetkov daljÅ¡ih od %1 minut in njihovo gledanje brez prekinitev.
Without a license, the application will expire in %1 days.
-
+ Brez licence bo uporabnost aplikacije potekla Äez %1 dni.
@@ -126,11 +126,100 @@
Enter License
-
+ Vpis licence
Buy License
+ Kupi licenco
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Vsi videoposnetki
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ OznaÄi vse za pregledane
+
+
+
+ Show Updated
+ Pokaži posodobitve
+
+
+
+ Name
+ Naziv
+
+
+
+ Last Updated
+ Nazadnje posodobljeno
+
+
+
+ Last Added
+ Nazadnje dodano
+
+
+
+ Last Watched
+ Nazadnje gledano
+
+
+
+ Most Watched
+ NajveÄkrat gledano
+
+
+
+ Sort by
+ Razvrsti glede na
+
+
+
+ All Videos
+ Vsi videoposnetki
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
bajtov
-
+
KB
kB
-
+
MB
MB
-
+
bytes/sec
byte/s
-
+
KB/sec
kB/s
-
+
MB/sec
MB/s
-
+
seconds
sekund
-
+
minutes
minut
-
+
%4 %5 remaining
%4 %5 ostaja
@@ -193,37 +282,37 @@
DownloadManager
-
+
This is just the demo version of %1.
To je samo preizkusna razliÄica programa %1.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Prenese lahko samo posnetke krajše od %1 minut, da lahko preverite delovanje funkcije prenosa.
-
+
Continue
Nadaljuj
-
+
Get the full version
Pridobi popolno razliÄico
-
+
%1 downloaded in %2
%1 preneseno v %2
-
+
Download finished
Prenos konÄan
-
+
%n Download(s)
%n Prenos %n Prenosa %n Prenosi %n Prenosov
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
Sprememba mesta ...
-
+
Choose the download location
Izberite mesto prenosa
-
+
Download location changed.
Spremenili ste mesto prenosa.
-
+
Current downloads will still go in the previous location.
Trenutni prenosi bodo še vedno šli v prejšnje mesto.
-
+
Downloading to: %1
Prenos v: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Prenosi
@@ -270,68 +359,68 @@
Downloading update...
-
+ Prenos posodobitve...
GlobalShortcuts
-
+
Play
Predvajaj
-
+
Pause
Pavza
-
+
Play/Pause
Predvajaj/Pavza
-
+
Stop
Ustavi
-
+
Stop playing after current track
Ustavi predvajanje po trenutnem posnetku
-
+
Next track
Naslednji posnetek
-
+
Previous track
Prejšnji posnetek
-
+
Increase volume
PoveÄaj glasnost
-
+
Decrease volume
Zmanjšaj glasnost
-
+
Mute
Nemo
-
+
Seek forward
IÅ¡Äi naprej
-
+
Seek backward
IÅ¡Äi nazaj
@@ -339,27 +428,37 @@
HomeView
-
+
Search
IÅ¡Äi
-
+
Find videos and channels by keyword
-
+ IÅ¡Äi posnetke in kanale po kljuÄnih besedah
-
+
Browse
-
+
Browse videos by category
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Napaka
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
U&stavi
-
+
Stop playback and go back to the search view
Ustavi predvajanje in se vrne v iskalni pogled
-
+
S&kip
Pres&koÄi
-
+
Skip to the next video
SkoÄi na naslednji video
-
-
+
+
&Pause
&Pavza
-
-
+
+
Pause playback
Premor v predvajanju
-
+
&Full Screen
&Celozaslonski naÄin
-
+
Go full screen
Gre v celozaslonski naÄin
-
+
Hide the playlist and the toolbar
Skrije predvajalni seznam in orodno vrstico
-
+
Go to the YouTube video page and pause playback
Gre na stran posnetka na YouTube in ustavi predvajanje
-
+
Copy the current video YouTube link to the clipboard
Kopira povezavo YouTube trenutnega posnetka v odložiÅ¡Äe
-
+
Copy the current video stream URL to the clipboard
Kopira URL trenutnega video pretoka v odložiÅ¡Äe
-
+
Find other video parts hopefully in the right order
PoiÅ¡Äe ostale dele posnetka, predvidoma v pravem zaporedju
-
+
&Remove
Odst&rani
-
+
Remove the selected videos from the playlist
Odstrani izbrani video iz predvajalnega seznama
-
+
Move &Up
Premakni &gor
-
+
Move up the selected videos in the playlist
Izbrani video premakne mesto više v predvajalnem seznamu
-
+
Move &Down
Premakni &dol
-
+
Move down the selected videos in the playlist
Izbrani video premakne mesto niže v predvajalnem seznamu
-
+
Clear the search history. Cannot be undone.
IzbriÅ¡e zgodovino iskanje. Tega dejanja ni mogoÄe razveljaviti.
-
+
&Quit
&Zapri
-
+
Bye
Nasvidenje
-
+
&Website
&Spletno mesto
-
+
%1 on the Web
%1 na spletu
-
+
Please support the continued development of %1
Podprite prosim nadaljni razvoj programa %1
-
+
&About
&O programu
-
+
Info about %1
Informacije o %1
-
+
Search
IÅ¡Äi
-
+
Mute volume
Nemo
-
-
+
+
&Downloads
Pre&nosi
-
+
Show details about video downloads
Pokaže podrobnosti o prenosih posnetkov
-
+
&Download
Pre&nesi
-
+
Download the current video
Prenese trenutni posnetek
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
Deli trenutni posnetek preko %1
-
+
&Email
&E-pošta
-
+
Email
E-pošte
-
+
&Close
&Zapri
-
+
&Float on Top
LebdeÄe na vrhu
-
+
&Stop After This Video
U&stavi za tem posnetkom
-
+
&Report an Issue...
P&rijavi napako ...
-
+
&Refine Search...
&Izboljšaj iskanje ...
-
+
More...
-
+ VeÄ...
-
+
&Related Videos
-
+
Watch videos related to the current one
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Aplikacija
-
+
Buy %1...
Kupi %1 ...
-
+
&Playback
&Predvajanje
-
+
&Playlist
&Predvajalni seznam
-
+
&Video
&Video
-
+
&View
&Pogled
-
+
&Share
&Deli
-
+
&Help
P&omoÄ
-
+
Press %1 to raise the volume, %2 to lower it
Pritisnite %1, da povišate glasnost in %2, da jo nižate
-
-
+
+
Opening %1
Odpiranje %1
-
+
Do you want to exit %1 with a download in progress?
Ali res želite zapustiti %1 medtem, ko je aktiven prenos?
-
+
If you close %1 now, this download will be cancelled.
V primeru, da zdaj zaprete %1 bo ta prenos prekinjen.
-
+
Close and cancel download
Zapri in prekliÄi prenos
-
+
Wait for download to finish
PoÄakaj, da konÄa prenos.
-
+
Leave &Full Screen
Zapusti celozaslonski naÄin
-
+
%1 version %2 is now available.
Na voljo je %1 razliÄica %2.
-
+
Remind me later
Opozori me kasneje
-
+
Update
Posodobitev
-
+
Error: %1
Napaka: %1
-
+
P&revious
P&redhodna
-
+
Go back to the previous track
Predhodna sled
-
+
&Compact Mode
Strnjen naÄin
-
+
Open the &YouTube Page
Odpri stran &Youtube
-
+
Copy the YouTube &Link
Kopiraj povezavo Youtube
-
+
Copy the Video Stream &URL
Kopiraj &URL toka video
-
+
Find Video &Parts
&PoiÅ¡Äi ostale dele posnetka
-
+
&Clear Recent Searches
PoÄisti nedavna iskanja
-
+
Make a &Donation
Pošlji &donacijo
-
+
&Manually Start Playing
RoÄno zaÄni predvajanje
-
+
Manually start playing videos
PriÄni z roÄnim predvajanjem posnetkov
-
+
Choose your content location
-
+
&Play
&Predvajaj
-
+
Resume playback
Nadaljuj s predvajanjem
-
+
Remaining time: %1
Preostali Äas: %1
-
+
Volume at %1%
Glasnost %1%
-
+
Volume is muted
Glasnost je utišana
-
+
Volume is unmuted
Glasnost je povrnjena
-
+
Maximum video definition set to %1
NajviÅ¡ja loÄljivost posnetkov je nastavljena na %1
-
+
Your privacy is now safe
Vaša zasebnost je zdaj varna
-
+
Downloads complete
Prenosi so konÄani
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Zdaj lahko prilepite povezavo na YouTube v drugo aplikacijo
-
+
You can now paste the video stream URL into another application
Zdaj lahko prilepite URL video pretoka v drugo aplikacijo
-
+
The link will be valid only for a limited time.
Povezava bo delovala le za omejen Äas.
-
+
This is just the demo version of %1.
To je samo demo razliÄica programa %1.
-
+
It allows you to test the application and see if it works for you.
Dovoli vam testiranje aplikacije in preverjanje delovanja,
-
+
Continue
Nadaljuj
-
+
of
Used in video parts, as in '2 of 3'
od
-
+
part
This is for video parts, as in 'Cool video - part 1'
del
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
nadaljevanje
-
+
Sent from %1
Poslano iz %1
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
Pridobi celotno razliÄico
-
+
Downloading %1
Prenašanje %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 predvajanj
-
+
%1 of %2 (%3) â %4
-
+
Preparing
-
+
Failed
-
+
Completed
-
+
Stopped
-
+
Stop downloading
-
+
Show in %1
-
+
Open parent folder
-
+
Restart downloading
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Iskanje ...
-
+
Show %1 More
-
+
No videos
Nobenega videa
-
+
No more videos
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Razvrsti glede na
-
+
Relevance
Ustreznost
-
-
+
+
Date
Datum
-
+
View Count
Å tevilo ogledov
-
+
Rating
Oceno
-
+
Anytime
Kadarkoli
-
+
Today
Danes
-
+
7 Days
7 dni
-
+
30 Days
30 dni
-
+
Duration
Trajanje
-
-
+
+
All
Vse
-
+
Short
Kratko
-
+
Medium
Srednje
-
+
Long
Dolgo
-
+
Less than 4 minutes
Manj kot 4 minute
-
+
Between 4 and 20 minutes
Med 4. in 20. minutami
-
+
Longer than 20 minutes
Daljše kot 20 minut
-
+
Quality
Kvaliteta
-
+
High Definition
Visoka loÄljivost
-
+
720p or higher
720p in višje
-
+
Done
Narejeno
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
Pozdravljeni v <a href='%1'>%2</a>,
-
+
Get the full version
Pridobi celotno razliÄico
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
Vnesite
-
+
a keyword
kljuÄno besedo
-
+
a channel
kanal
-
+
to start watching videos.
in zaÄnite gledati posnetke.
-
+
Watch
Glejte
-
+
Recent keywords
Nedavne kljuÄne besede
-
+
Recent channels
Nedavni kanali
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
-
+
Forward to %1
-
+
Back to %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
Izboljšaj iskanje
-
+
Did you mean: %1
Ali ste mogoÄe mislili: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
- Featured
-
-
-
-
+
Most Shared
-
+
Most Discussed
-
+
Top Rated
+
+
+ All Time Popular
+
+
Video
-
+
Cannot get video stream for %1
Za %1 ni mogoÄe pridobiti video pretoka
-
+
Network error: %1 for %2
Napaka omrežja: %1 od %2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ Alžirija
-
+
Argentina
-
+ Argentina
-
+
Australia
-
+ Avstralija
-
+
Belgium
-
+ Belgija
-
+
Brazil
-
+ Brazilija
-
+
Canada
-
+ Kanada
-
+
Chile
-
+ Äile
-
+
Colombia
-
+ Kolumbija
-
+
Czech Republic
-
+ ÄeÅ¡ka republika
-
+
Egypt
-
+ Egipt
-
+
France
-
+ Francija
-
+
Germany
-
+ NemÄija
-
+
Ghana
-
+ Gana
-
+
Greece
-
+ GrÄija
-
+
Hong Kong
-
+ Hong Kong
-
+
Hungary
-
+ Madžarska
-
+
India
-
+ Indija
-
+
Indonesia
-
+ Indonezija
-
+
Ireland
-
+ Irska
-
+
Israel
-
+ Izrael
-
+
Italy
-
+ Italija
-
+
Japan
-
+ Japonska
-
+
Jordan
-
+ Jordanija
-
+
Kenya
-
+ Kenija
-
+
Malaysia
-
+ Malezija
-
+
Mexico
-
+ Mehika
-
+
Morocco
-
+ Maroko
-
+
Netherlands
-
+ Nizozemska
-
+
New Zealand
-
+ Nova Zelandija
-
+
Nigeria
-
+ Nigerija
-
+
Peru
-
+ Peru
-
+
Philippines
-
+ Filipini
-
+
Poland
-
+ Poljska
-
+
Russia
-
+ Rusija
-
+
Saudi Arabia
-
+ Savdska Arabija
-
+
Singapore
-
+
South Africa
-
+ Južna Afrika
-
+
South Korea
-
+ Južna Koreja
-
+
Spain
-
+ Å panija
-
+
Sweden
-
+ Å vedska
-
+
Taiwan
-
+ Tajvan
-
+
Tunisia
-
+ Tunizija
-
+
Turkey
-
+ TurÄija
-
+
Uganda
-
+ Uganda
-
+
United Arab Emirates
-
+ Združeni arabski emirati
-
+
United Kingdom
-
+ Velika Britanija
-
+
Yemen
-
+ Jemen
-
+
Worldwide
-
+ Svetovno
\ No newline at end of file
diff --git a/locale/sq.ts b/locale/sq.ts
new file mode 100644
index 0000000..0a40e39
--- /dev/null
+++ b/locale/sq.ts
@@ -0,0 +1,1596 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Ka jete edhe jashte Shfletuesit te Internetit
+
+
+
+
+ Version %1
+ Version %1
+
+
+
+ Licensed to: %1
+ Licencuar te: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 Eshte Program i Lire por Programuesit te tij i merr kohe te qmueshme
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Ju lutem <a href="%1"> dhuroni</a> qe te perkrahni vazhdimin e ndertimit te %2.
+
+
+
+ You may want to try my other apps as well:
+ Do te deshironit qe te provoni edhe programet e tjera te mia
+
+
+
+ %1, a YouTube music player
+ %1 , Luajtes i muzikes per YouTube
+
+
+
+ %1, a music player
+ %1 , Luajtes i muzikes
+
+
+
+ Translate %1 to your native language using %2
+ Perkthe %1 ne gjuhen e tuaj ame duke perdorur %2
+
+
+
+ Icon designed by %1.
+ Dizajnimi i ikones u be nga %1
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Leshuar nen <a href="%1"> GNU Licanca Publike Gjenerale</a>
+
+
+
+ &Close
+ Afer
+
+
+
+ About
+ Afersisht
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Qfar keni dashur gjithmon te dini per %1 por asnjeher nuk keni guzuar te pyetni
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ Jepni detajet rreth licences
+
+
+
+ &Email:
+ &Email:
+
+
+
+ &Code:
+ &Shifër:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Ju lutem licenconi %1
+
+
+
+ This demo has expired.
+ Versioni demostrues ka perfunduar
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ Versioni i plotë ju lejon të shkarkoni video më të gjatë se 1 minut dhe të shikoni video pa ndërprerje.
+
+
+
+ Without a license, the application will expire in %1 days.
+ Pa licenc programmit do ti mbaron afati ne %1 ditë
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Duke bler versionin e plot , ju gjithashtu do te perkrahni punen e mundimshme qe kam ber per krijimin %1.
+
+
+
+ Use Demo
+ Perdorni verionin demostrues
+
+
+
+ Enter License
+ Jepni licencën
+
+
+
+ Buy License
+ Blini licencë
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Nga %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ T'gjitha videot
+
+
+
+ Unwatched Videos
+ Videot e pa shikuara
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Shëno të gjitha si të shikuara
+
+
+
+ Show Updated
+ Shfaq arrnimin
+
+
+
+ Name
+ Emri
+
+
+
+ Last Updated
+ Arrnimi i fundit
+
+
+
+ Last Added
+ Shtimi i dundit
+
+
+
+ Last Watched
+ Shtimi i fundit
+
+
+
+ Most Watched
+ Me e shikuara
+
+
+
+ Sort by
+ Rendit sipas
+
+
+
+ All Videos
+ T'gjitha videot
+
+
+
+ Unwatched Videos
+ Videot e pa shikuara
+
+
+
+ There are no updated subscriptions at this time.
+ Nuk ka abonime të freskuar për momentin
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Nuk keni abonime . Perdor simbolin yll për tu abonuar te kanalet
+
+
+
+ ClearButton
+
+
+ Clear
+ Paster
+
+
+
+ DownloadItem
+
+
+ bytes
+ Bajts
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ Bajts/Sekond
+
+
+
+ KB/sec
+ KB/Sekond
+
+
+
+ MB/sec
+ MB/Sekond
+
+
+
+ seconds
+ Sekonda
+
+
+
+ minutes
+ Minuta
+
+
+
+ %4 %5 remaining
+ %4 %5 Mbetet
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Ky eshte vetem version per demonstrim i %1
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Mund te shkarkoj vetem video me te shkurta se %1 minut ne menyr qe te testoni funksionimin e shkarkuesit.
+
+
+
+ Continue
+ Vazhdon
+
+
+
+ Get the full version
+ Merrni versionin e plote
+
+
+
+ %1 downloaded in %2
+ %1 shkarkuar në %2
+
+
+
+ Download finished
+ Shkarkimi ka përfunduar
+
+
+
+ %n Download(s)
+ %n Shkarkim %n Shkarkime
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Ndrysho lokacionin
+
+
+
+ Choose the download location
+ Zghidhni lokacionin e shkarkimeve
+
+
+
+ Download location changed.
+ Lokacioni i shkarkimeve u ndryshua.
+
+
+
+ Current downloads will still go in the previous location.
+ Shkarkimet e tanishme ende do te ruhen ne lokacionin e meparshem te shkarkimeve.
+
+
+
+ Downloading to: %1
+ Duke shkarkuar ne : %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Shkarkimet
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ Duke shkarkuar përditësimet
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Luaje
+
+
+
+ Pause
+ Pushim
+
+
+
+ Play/Pause
+ Luaje/Pushim
+
+
+
+ Stop
+ Ndaloje
+
+
+
+ Stop playing after current track
+ Ndaloje se luajturi pas kenges aktuale
+
+
+
+ Next track
+ Kenga e ardhshme
+
+
+
+ Previous track
+ Kenga e meparshme
+
+
+
+ Increase volume
+ Rrite zerin
+
+
+
+ Decrease volume
+ Ule zerin
+
+
+
+ Mute
+ Pa ze
+
+
+
+ Seek forward
+ Kerko perpara
+
+
+
+ Seek backward
+ Kerko prapa
+
+
+
+ HomeView
+
+
+ Search
+ Kerkim
+
+
+
+ Find videos and channels by keyword
+ Gjeni videot dhe kanalet me fjalët kyqe
+
+
+
+ Browse
+ Shfleto
+
+
+
+ Browse videos by category
+ Shfleto videot sipas kategoris
+
+
+
+ Subscriptions
+ Abonimet
+
+
+
+ Channel subscriptions
+ Kanalet e abonuara
+
+
+
+ Make yourself comfortable
+ Rehatoni veten
+
+
+
+ LoadingWidget
+
+
+ Error
+ Gabim
+
+
+
+ MainWindow
+
+
+ &Stop
+ Ndaloje
+
+
+
+ Stop playback and go back to the search view
+ Ndaloje rishikimin dhe kthehu prapa te pamje e kerkimit
+
+
+
+ S&kip
+ Kaperce
+
+
+
+ Skip to the next video
+ Kaperce te video e ardhshme
+
+
+
+
+ &Pause
+ Pushoje
+
+
+
+
+ Pause playback
+ Pushoje rishikimin
+
+
+
+ &Full Screen
+ Ekran te plote
+
+
+
+ Go full screen
+ Kalo ne ekran te plot
+
+
+
+ Hide the playlist and the toolbar
+ Fshih listen e videove dhe shiritin e veglave
+
+
+
+ Go to the YouTube video page and pause playback
+ Kalo ne faqen e videove te YouTube dhe pushoje rishikimin
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Kopjoje linkun e videos se tanishme ne tabelen e ngjitjes
+
+
+
+ Copy the current video stream URL to the clipboard
+ Kopjoje URL e rrjedhes se videos aktuale ne tabelen e ngjitjes
+
+
+
+ Find other video parts hopefully in the right order
+ Gjeni pjes te tjera te videove ne rednin e duhur
+
+
+
+ &Remove
+ Largo
+
+
+
+ Remove the selected videos from the playlist
+ Largoje videon e zgjedhur nga lista e luajtjes
+
+
+
+ Move &Up
+ Leviz lart
+
+
+
+ Move up the selected videos in the playlist
+ Levize lart videon e zgjedhur ne listen e luajtjes
+
+
+
+ Move &Down
+ Leviz posht
+
+
+
+ Move down the selected videos in the playlist
+ Levize posht videon e zghedhur ne listen e luajtjes
+
+
+
+ Clear the search history. Cannot be undone.
+ Pastro historin e kerkimeve . Nuk mund te zhbehet
+
+
+
+ &Quit
+ Lëre
+
+
+
+ Bye
+ Mireupafshim
+
+
+
+ &Website
+ Adrese interneti
+
+
+
+ %1 on the Web
+ %1 ne Web
+
+
+
+ Please support the continued development of %1
+ Ju lutem perkrahni vazhdimin e ndertimit te %1
+
+
+
+ &About
+ Rreth
+
+
+
+ Info about %1
+ Informata rreth %1
+
+
+
+ Search
+ Kerkim
+
+
+
+ Mute volume
+ Hesht zerin
+
+
+
+
+ &Downloads
+ Shkarkimet
+
+
+
+ Show details about video downloads
+ Trego detajet rreth videove te shkarkuara
+
+
+
+ &Download
+ Shkarko
+
+
+
+ Download the current video
+ Shkarko videon e tanishme
+
+
+
+ &Subscribe to Channel
+ & Abonohu në Kanal
+
+
+
+ Share the current video using %1
+ Shperndaj videon aktuale duke perdorur %1
+
+
+
+ &Email
+ % Email
+
+
+
+ Email
+ Email
+
+
+
+ &Close
+ Afer
+
+
+
+ &Float on Top
+ &Nxjerr ne Krye
+
+
+
+ &Stop After This Video
+ &Ndalo pas kesaj video
+
+
+
+ &Report an Issue...
+ %Raportoni një problem...
+
+
+
+ &Refine Search...
+ %Përpuno kërkimin....
+
+
+
+ More...
+ Më shum....
+
+
+
+ &Related Videos
+ &Videot e afërme
+
+
+
+ Watch videos related to the current one
+ Shiko videot që jan të aferta me videon aktuale
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ Aplikacion
+
+
+
+ Buy %1...
+ Blej %1....
+
+
+
+ &Playback
+ &Ridegjim
+
+
+
+ &Playlist
+ Lista e luajtjes
+
+
+
+ &Video
+ Video
+
+
+
+ &View
+ &Shiko
+
+
+
+ &Share
+ &Shperndaje
+
+
+
+ &Help
+ Ndihma
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Shtyp %1 qe te rrisni zerin , shtyp %2 qe ta ulni zerin
+
+
+
+
+ Opening %1
+ Duke hapur %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ Deshironi te dilni %1 me nje shkarkim ne prapavij?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Nese e mbyllni %1 tani , ky shkarkim do te nderpritet.
+
+
+
+ Close and cancel download
+ Mbyll dhe ndalo shkarkimin
+
+
+
+ Wait for download to finish
+ Prisni per shkarkimin qe te mbaroj
+
+
+
+ Leave &Full Screen
+ Largohu & Ekran te plote
+
+
+
+ %1 version %2 is now available.
+ %1 versioni %2 eshte i gatshem
+
+
+
+ Remind me later
+ Me rikujto me von
+
+
+
+ Update
+ Arrnim
+
+
+
+ Error: %1
+ Gabim:%1
+
+
+
+ P&revious
+ Mehershme
+
+
+
+ Go back to the previous track
+ Kthehu prapa te kenga e kaluar
+
+
+
+ &Compact Mode
+ Ne mod kompakte
+
+
+
+ Open the &YouTube Page
+ Hap faqen & e Youtube
+
+
+
+ Copy the YouTube &Link
+ Kopjo linkun nga YouTube
+
+
+
+ Copy the Video Stream &URL
+ Kopjo rrjedhen e videos & URL
+
+
+
+ Find Video &Parts
+ Gjej videot & Pjeset
+
+
+
+ &Clear Recent Searches
+ Pastro kerkimet e me parshme
+
+
+
+ Make a &Donation
+ Beni nje donacion
+
+
+
+ &Manually Start Playing
+ Fillo luajtjen manualisht
+
+
+
+ Manually start playing videos
+ Manualisht fillo luajtjen e videove
+
+
+
+ Choose your content location
+ Zgjidhni përmbajtjen e mjedisit tuaj
+
+
+
+ &Play
+ Luaj
+
+
+
+ Resume playback
+ Rinis rishikimin
+
+
+
+ Remaining time: %1
+ Koha e mbetur:%1
+
+
+
+ Volume at %1%
+ Zeri ne %1%
+
+
+
+ Volume is muted
+ Zeri eshte heshtur
+
+
+
+ Volume is unmuted
+ Zeri eshte leshuar
+
+
+
+ Maximum video definition set to %1
+ Maksimumi i definicionit te videos eshte vendosur ne %1
+
+
+
+ Your privacy is now safe
+ Privatsia juaj tani eshte e sigurt
+
+
+
+ Downloads complete
+ Shkarkimet jan kompletuar
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Tani ju mund te ngjitni YouTube linqe ne nje tjeter program
+
+
+
+ You can now paste the video stream URL into another application
+ Tani ju mund te ngjitni rrdhjedhen e YouTube URL ne nje tjeter program
+
+
+
+ The link will be valid only for a limited time.
+ Linku do te jet i vlefshem per nje kohe te kufizuar
+
+
+
+ This is just the demo version of %1.
+ Ky eshte version vetem per demonstrim i %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Ju lejon qe te provoni programin dhe te shifni se a funksionon per ju .
+
+
+
+ Continue
+ Vazhdim
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ I
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ Pjas
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ Episode
+
+
+
+ Sent from %1
+ Derguar nga %1
+
+
+
+ Unsubscribe from %1
+ Q'abonohu nga %1
+
+
+
+ Subscribe to %1
+ Abonohu në %1
+
+
+
+ Get the full version
+ Merrni versionin e plote
+
+
+
+ Downloading %1
+ Duke shkarkuar %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ Një version i %1 është i gatshëm
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 është i gatshëm . Ju keni %3.
+
+
+
+ Would you like to download it now?
+ Dëshiron që ta shkarkoni tani?
+
+
+
+ Skip This Version
+ Kalo këtë version
+
+
+
+ Remind Me Later
+ Ma rikujtoni më vonë
+
+
+
+ Install Update
+ Instalo Përditësimet
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Ngjit
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %1 e shikimeve
+
+
+
+ %1 of %2 (%3) â %4
+ %1 e %2 (%3)--%4
+
+
+
+ Preparing
+ Duke pregaditur
+
+
+
+ Failed
+ Dështoi
+
+
+
+ Completed
+ Përfunduat
+
+
+
+ Stopped
+ Ndaluar
+
+
+
+ Stop downloading
+ Ndalo shkarkimin
+
+
+
+ Show in %1
+ Shfaq në %1
+
+
+
+ Open parent folder
+ Hap dosjen e burimit
+
+
+
+ Restart downloading
+ Rifillo shkarkimin
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Duke kerkuar
+
+
+
+ Show %1 More
+ Shfaq %1 më shumë
+
+
+
+ No videos
+ Nuk ka video
+
+
+
+ No more videos
+ Nuk ka me video tjera
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ Rendit sipas
+
+
+
+ Relevance
+ Përkatësi
+
+
+
+
+ Date
+ Datë
+
+
+
+ View Count
+ Shiko Llogarit
+
+
+
+ Rating
+ Klafifikom
+
+
+
+ Anytime
+ Në qdo kohë
+
+
+
+ Today
+ Sot
+
+
+
+ 7 Days
+ 7 dit
+
+
+
+ 30 Days
+ 30 dit
+
+
+
+ Duration
+ Kohëzgjatja
+
+
+
+
+ All
+ Gjithë
+
+
+
+ Short
+ Shkurt
+
+
+
+ Medium
+ Mesatar
+
+
+
+ Long
+ I gjatë
+
+
+
+ Less than 4 minutes
+ Më pak se 4 minuta
+
+
+
+ Between 4 and 20 minutes
+ Mes 4 dhe 20 minutash
+
+
+
+ Longer than 20 minutes
+ Më gjat se 20 minuta
+
+
+
+ Quality
+ Kualiteti
+
+
+
+ High Definition
+ Definicion i lartë
+
+
+
+ 720p or higher
+ 720p ose më i lartë
+
+
+
+ Done
+ Kry
+
+
+
+ RegionsView
+
+
+ Done
+ Kry
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Kerkim
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ Mire se erdhet ne <h href="%1">%2</a>,
+
+
+
+ Get the full version
+ Merrni versionin e plote
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Hyr
+
+
+
+ a keyword
+ Nje fjal kyqe
+
+
+
+ a channel
+ Nje kanal
+
+
+
+ to start watching videos.
+ Per te filluar shikimin e videove.
+
+
+
+ Watch
+ Shiko
+
+
+
+ Recent keywords
+ Fjalit kyqe te fundit
+
+
+
+ Recent channels
+ Kanali i fundit
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ Prapa
+
+
+
+ Forward to %1
+ Përpara në %1
+
+
+
+ Back to %1
+ Prapa në %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ Rafino kërkimin
+
+
+
+ Did you mean: %1
+ Menduat:%1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ Me i përhapuri
+
+
+
+ Most Shared
+ Më i shpërndar
+
+
+
+ Most Discussed
+ Më i diskutuar
+
+
+
+ Top Rated
+ Më i nominuar
+
+
+
+ All Time Popular
+ Më të famshmet
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Nuk mund te merr rrjedhen e videos per %1
+
+
+
+ Network error: %1 for %2
+ Gabim rrjeti:%1 per %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ Algjeria
+
+
+
+ Argentina
+ Argjentina
+
+
+
+ Australia
+ Australia
+
+
+
+ Belgium
+ Belgjika
+
+
+
+ Brazil
+ Brazil
+
+
+
+ Canada
+ Kanadë
+
+
+
+ Chile
+ Kili
+
+
+
+ Colombia
+ Kolumbia
+
+
+
+ Czech Republic
+ Republika Qeke
+
+
+
+ Egypt
+ Egjipt
+
+
+
+ France
+ Francë
+
+
+
+ Germany
+ Gjermani
+
+
+
+ Ghana
+ Gana
+
+
+
+ Greece
+ Greqi
+
+
+
+ Hong Kong
+ Hong Kong
+
+
+
+ Hungary
+ Hungari
+
+
+
+ India
+ Indi
+
+
+
+ Indonesia
+ Indonesia
+
+
+
+ Ireland
+ Irland
+
+
+
+ Israel
+ Izrael
+
+
+
+ Italy
+ Itali
+
+
+
+ Japan
+ Japoni
+
+
+
+ Jordan
+ Jordani
+
+
+
+ Kenya
+ Kenia
+
+
+
+ Malaysia
+ Malejzia
+
+
+
+ Mexico
+ Meksik
+
+
+
+ Morocco
+ Maroko
+
+
+
+ Netherlands
+ Hollandë
+
+
+
+ New Zealand
+ Zelanda e re
+
+
+
+ Nigeria
+ Nigeri
+
+
+
+ Peru
+ Peru
+
+
+
+ Philippines
+ Filipinet
+
+
+
+ Poland
+ Poloni
+
+
+
+ Russia
+ Rusi
+
+
+
+ Saudi Arabia
+ Arabia Saudite
+
+
+
+ Singapore
+ Singapor
+
+
+
+ South Africa
+ Afrika Jugore
+
+
+
+ South Korea
+ Korea Jugore
+
+
+
+ Spain
+ Spanjë
+
+
+
+ Sweden
+ Suedi
+
+
+
+ Taiwan
+ Tajvan
+
+
+
+ Tunisia
+ Tunisi
+
+
+
+ Turkey
+ Turki
+
+
+
+ Uganda
+ Uganda
+
+
+
+ United Arab Emirates
+ Emirated e Bashkuara Arabe
+
+
+
+ United Kingdom
+ Mretëria e Bashkuar
+
+
+
+ Yemen
+ Jemen
+
+
+
+ Worldwide
+ Mbar Bota
+
+
+
\ No newline at end of file
diff --git a/locale/sv_SE.ts b/locale/sv_SE.ts
new file mode 100644
index 0000000..24a500a
--- /dev/null
+++ b/locale/sv_SE.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Det finns ett liv utanför webläsaren!
+
+
+
+ Version %1
+ Version %1
+
+
+
+ Licensed to: %1
+ Licensierad till: %1
+
+
+
+ %1 is Free Software but its development takes precious time.
+ %1 är fri programvara men utveklingen tar värdefull tid.
+
+
+
+ Please <a href='%1'>donate</a> to support the continued development of %2.
+ Vänligen <a href='%1'> donera</a> för att stöda den fortsatta utveklingen utav %2
+
+
+
+ You may want to try my other apps as well:
+ Du kan gärna prova mina andra program också:
+
+
+
+ %1, a YouTube music player
+ %1, en YouTube musik spelare
+
+
+
+ %1, a music player
+ %1, en musik spelare
+
+
+
+ Translate %1 to your native language using %2
+ Ãversätt %1 till ditt modersmÃ¥l med %2
+
+
+
+ Icon designed by %1.
+ Ikon designad av %1
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ Släppt under <a href='%1'>GNU General Public License</a>
+
+
+
+ &Close
+ &Stäng
+
+
+
+ About
+ Om
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ Vad du alltid velat veta om %1 och aldrig vågat fråga om
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+
+
+
+
+ &Email:
+ &Email:
+
+
+
+ &Code:
+ &Nyckel:
+
+
+
+ ActivationView
+
+
+ Please license %1
+ Vänligen licensiera %1
+
+
+
+ This demo has expired.
+ Denna demo har utgått.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+
+
+
+
+ Without a license, the application will expire in %1 days.
+
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ Genom att köpa fullversionen kommer du också att stödja mitt hårda arbete jag gör med %1.
+
+
+
+ Use Demo
+ Använd demo
+
+
+
+ Enter License
+
+
+
+
+ Buy License
+ Köp licens
+
+
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+ Namn
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
+
+ ClearButton
+
+
+ Clear
+ Rensa
+
+
+
+ DownloadItem
+
+
+ bytes
+ bytes
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ byte / sekund
+
+
+
+ KB/sec
+ KB / sekund
+
+
+
+ MB/sec
+ MB / sekund
+
+
+
+ seconds
+ sekunder
+
+
+
+ minutes
+ minuter
+
+
+
+ %4 %5 remaining
+ %4 %5 återstår
+
+
+
+ DownloadManager
+
+
+ This is just the demo version of %1.
+ Detta är bara en demo version av %1.
+
+
+
+ It can only download videos shorter than %1 minutes so you can test the download functionality.
+ Det kan bara ladda ner filmer kortare än %1 minuter så att du kan testa ladda ner funktionen.
+
+
+
+ Continue
+ Fortsätt
+
+
+
+ Get the full version
+ Få den fullständiga versionen
+
+
+
+ %1 downloaded in %2
+
+
+
+
+ Download finished
+
+
+
+
+ %n Download(s)
+ %n Nedladning (ar) %n Nedladning (ar)
+
+
+
+ DownloadSettings
+
+
+ Change location...
+ Byt plats ...
+
+
+
+ Choose the download location
+ Välj hämtningsplats
+
+
+
+ Download location changed.
+ Hämtningsplatsen har ändrats.
+
+
+
+ Current downloads will still go in the previous location.
+ Aktuella nedladdningar kommer fortfarande att hamna i den tidigare hämtningsplatsen.
+
+
+
+ Downloading to: %1
+ Hämtar till: %1
+
+
+
+ DownloadView
+
+
+
+ Downloads
+ Nedladdningar
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ Spela
+
+
+
+ Pause
+ Pausa
+
+
+
+ Play/Pause
+ Spela / Pausa
+
+
+
+ Stop
+ Stoppa
+
+
+
+ Stop playing after current track
+ Sluta spela efter nuvarande spår
+
+
+
+ Next track
+ Nästa spår
+
+
+
+ Previous track
+ Föregående spår
+
+
+
+ Increase volume
+ Ãka volymen
+
+
+
+ Decrease volume
+ Minska volymen
+
+
+
+ Mute
+ Mute
+
+
+
+ Seek forward
+ Sök framåt
+
+
+
+ Seek backward
+ Sök bakåt
+
+
+
+ HomeView
+
+
+ Search
+ Sök
+
+
+
+ Find videos and channels by keyword
+
+
+
+
+ Browse
+
+
+
+
+ Browse videos by category
+
+
+
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
+ Make yourself comfortable
+
+
+
+
+ LoadingWidget
+
+
+ Error
+ Fel
+
+
+
+ MainWindow
+
+
+ &Stop
+ &Stop
+
+
+
+ Stop playback and go back to the search view
+ Stoppa uppspelningen och gå tillbaka till Sök vyn
+
+
+
+ S&kip
+ H&oppa
+
+
+
+ Skip to the next video
+ Hoppa till nästa video
+
+
+
+
+ &Pause
+ &Pausa
+
+
+
+
+ Pause playback
+ Pausa uppspelning
+
+
+
+ &Full Screen
+ &Helskärm
+
+
+
+ Go full screen
+ Använd helskärm
+
+
+
+ Hide the playlist and the toolbar
+ Dölj spellistan och verktygsfältet
+
+
+
+ Go to the YouTube video page and pause playback
+ GÃ¥ till YouTube-video-sidan och pausa uppspelning
+
+
+
+ Copy the current video YouTube link to the clipboard
+ Kopiera den aktuella YouTube-video-länken till urklipp
+
+
+
+ Copy the current video stream URL to the clipboard
+ Kopiera den nuvarande videoströmmen URL till urklipp
+
+
+
+ Find other video parts hopefully in the right order
+ Hitta andra videodelar förhoppningsvis i rätt ordning
+
+
+
+ &Remove
+ &Ta bort
+
+
+
+ Remove the selected videos from the playlist
+ Ta bort markerade videoklippen från spellistan
+
+
+
+ Move &Up
+ Flytta &upp
+
+
+
+ Move up the selected videos in the playlist
+ Flytta upp de markerade videoklippen i spellistan
+
+
+
+ Move &Down
+ Flytta &nedåt
+
+
+
+ Move down the selected videos in the playlist
+ Flytta ner markerade videoklippen i spellistan
+
+
+
+ Clear the search history. Cannot be undone.
+ Rensa sökhistorik. Kan inte ångras.
+
+
+
+ &Quit
+ &Avsluta
+
+
+
+ Bye
+ Hej då
+
+
+
+ &Website
+ &Webbsida
+
+
+
+ %1 on the Web
+ %1 på webben
+
+
+
+ Please support the continued development of %1
+ Vänligen stöd den fortsatta utvecklingen av %1
+
+
+
+ &About
+ &Om
+
+
+
+ Info about %1
+ Info om %1
+
+
+
+ Search
+ Sök
+
+
+
+ Mute volume
+ Volym av
+
+
+
+
+ &Downloads
+ &Nedladdningar
+
+
+
+ Show details about video downloads
+ Visa detaljer om video nedladdningar
+
+
+
+ &Download
+ &Ladda ner
+
+
+
+ Download the current video
+ Ladda ner den aktuella videon
+
+
+
+ &Subscribe to Channel
+
+
+
+
+ Share the current video using %1
+ Dela nuvarande video med %1
+
+
+
+ &Email
+ &Email
+
+
+
+ Email
+ Email
+
+
+
+ &Close
+ &Stäng
+
+
+
+ &Float on Top
+ &Flyt ovanpå
+
+
+
+ &Stop After This Video
+ &Stoppa efter denna video
+
+
+
+ &Report an Issue...
+
+
+
+
+ &Refine Search...
+
+
+
+
+ More...
+ Mer...
+
+
+
+ &Related Videos
+
+
+
+
+ Watch videos related to the current one
+
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ &Applikation
+
+
+
+ Buy %1...
+ Köp %1...
+
+
+
+ &Playback
+ &Uppspelning
+
+
+
+ &Playlist
+ &Spellista
+
+
+
+ &Video
+ &Video
+
+
+
+ &View
+ &Vy
+
+
+
+ &Share
+ &Dela
+
+
+
+ &Help
+ &Hjälp
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ Tryck på %1 för att öka volymen, %2 för att sänka den
+
+
+
+
+ Opening %1
+ Ãppnar %1
+
+
+
+ Do you want to exit %1 with a download in progress?
+ Vill du avsluta %1 med en nedladdning igång?
+
+
+
+ If you close %1 now, this download will be cancelled.
+ Om du stänger %1 nu, avbryts nedladdningen.
+
+
+
+ Close and cancel download
+ Stäng och avbryt nedladdning
+
+
+
+ Wait for download to finish
+ Vänta på att nedladdning blir klar
+
+
+
+ Leave &Full Screen
+ Lämna &Helskärm
+
+
+
+ %1 version %2 is now available.
+ %1 version %2 är nu tillgänglig
+
+
+
+ Remind me later
+ PÃ¥minn mig senare
+
+
+
+ Update
+ Uppdatera
+
+
+
+ Error: %1
+ Fel: %1
+
+
+
+ P&revious
+ Fö®Ã¥ende
+
+
+
+ Go back to the previous track
+ Gå tillbaka till föregående spår
+
+
+
+ &Compact Mode
+ Kompakt läge
+
+
+
+ Open the &YouTube Page
+ Ãppna &YouTube sidan
+
+
+
+ Copy the YouTube &Link
+ Kopiera YouTube &Länk
+
+
+
+ Copy the Video Stream &URL
+ Kopiera video ström &URL
+
+
+
+ Find Video &Parts
+ Hitta Video Delar
+
+
+
+ &Clear Recent Searches
+ &Rensa Senaste Sökningar
+
+
+
+ Make a &Donation
+ Gör en &Donation
+
+
+
+ &Manually Start Playing
+ Starta Spela &Manuellt
+
+
+
+ Manually start playing videos
+ Starta Spela Videos Manuellt
+
+
+
+ Choose your content location
+
+
+
+
+ &Play
+ &Spela
+
+
+
+ Resume playback
+ Ã
teruppta uppspelning
+
+
+
+ Remaining time: %1
+ Ã
terstående tid: %1
+
+
+
+ Volume at %1%
+ Volym %1%
+
+
+
+ Volume is muted
+ Ljudet är avstängt
+
+
+
+ Volume is unmuted
+ Volymen är på
+
+
+
+ Maximum video definition set to %1
+ Högsta video upplösning är satt till %1
+
+
+
+ Your privacy is now safe
+ Din integritet är nu säker
+
+
+
+ Downloads complete
+ Nedladdningar klar
+
+
+
+ MediaView
+
+
+ You can now paste the YouTube link into another application
+ Nu kan du klistra in YouTube-länken i ett annat program
+
+
+
+ You can now paste the video stream URL into another application
+ Du kan nu klistra in videoströmmens webbadress i ett annat program
+
+
+
+ The link will be valid only for a limited time.
+ Länken kommer att gälla endast under en begränsad tid.
+
+
+
+ This is just the demo version of %1.
+ Detta är bara en demo version av %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Det tillåter dig att testa programmet och se om det fungerar för dig.
+
+
+
+ Continue
+ Fortsätt
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ av
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ del
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ avsnitt
+
+
+
+ Sent from %1
+ Skickad från %1
+
+
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
+ Get the full version
+ Skaffa den fullständiga versionen
+
+
+
+ Downloading %1
+ Hämtar %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+
+
+
+
+ %1 %2 is now available. You have %3.
+
+
+
+
+ Would you like to download it now?
+
+
+
+
+ Skip This Version
+
+
+
+
+ Remind Me Later
+ PÃ¥minn mig senare
+
+
+
+ Install Update
+ Uppdatera
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ Klistra in
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %1 visningar
+
+
+
+ %1 of %2 (%3) â %4
+ %1 av %2 (%3) -%4
+
+
+
+ Preparing
+
+
+
+
+ Failed
+
+
+
+
+ Completed
+
+
+
+
+ Stopped
+
+
+
+
+ Stop downloading
+
+
+
+
+ Show in %1
+
+
+
+
+ Open parent folder
+
+
+
+
+ Restart downloading
+
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ Söker...
+
+
+
+ Show %1 More
+
+
+
+
+ No videos
+ Inga videos
+
+
+
+ No more videos
+
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+
+
+
+
+ Relevance
+
+
+
+
+
+ Date
+
+
+
+
+ View Count
+
+
+
+
+ Rating
+
+
+
+
+ Anytime
+
+
+
+
+ Today
+ Idag
+
+
+
+ 7 Days
+ 7 dagar
+
+
+
+ 30 Days
+ 30 dagar
+
+
+
+ Duration
+
+
+
+
+
+ All
+ Alla
+
+
+
+ Short
+ Kort
+
+
+
+ Medium
+ Mellan
+
+
+
+ Long
+ LÃ¥ng
+
+
+
+ Less than 4 minutes
+ Kortare än 4 minuter
+
+
+
+ Between 4 and 20 minutes
+ Mellan 4 och 20 minuter
+
+
+
+ Longer than 20 minutes
+ Längre än 20 minuter
+
+
+
+ Quality
+ Kvalitet
+
+
+
+ High Definition
+ High Definition
+
+
+
+ 720p or higher
+ 720p eller högre
+
+
+
+ Done
+ Färdig
+
+
+
+ RegionsView
+
+
+ Done
+ Färdig
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Sök
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ Välkommen till <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ Skaffa den kompletta versionen
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ Ange
+
+
+
+ a keyword
+ ett sökord
+
+
+
+ a channel
+ en kanal
+
+
+
+ to start watching videos.
+ för att börja titta på video.
+
+
+
+ Watch
+ Titta
+
+
+
+ Recent keywords
+ Senaste sökord
+
+
+
+ Recent channels
+ Senaste kanaler
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+
+
+
+
+ Forward to %1
+
+
+
+
+ Back to %1
+
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+
+
+
+
+ Did you mean: %1
+ Menade du: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+
+
+
+
+ Most Shared
+
+
+
+
+ Most Discussed
+
+
+
+
+ Top Rated
+
+
+
+
+ All Time Popular
+
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Kan inte få videoström för %1
+
+
+
+ Network error: %1 for %2
+ Nätverks fel: %1 för %2
+
+
+
+ YTRegions
+
+
+ Algeria
+
+
+
+
+ Argentina
+
+
+
+
+ Australia
+
+
+
+
+ Belgium
+
+
+
+
+ Brazil
+
+
+
+
+ Canada
+
+
+
+
+ Chile
+
+
+
+
+ Colombia
+
+
+
+
+ Czech Republic
+
+
+
+
+ Egypt
+
+
+
+
+ France
+
+
+
+
+ Germany
+
+
+
+
+ Ghana
+
+
+
+
+ Greece
+
+
+
+
+ Hong Kong
+ Hong Kong
+
+
+
+ Hungary
+
+
+
+
+ India
+
+
+
+
+ Indonesia
+
+
+
+
+ Ireland
+ Irland
+
+
+
+ Israel
+ Israel
+
+
+
+ Italy
+ Italien
+
+
+
+ Japan
+
+
+
+
+ Jordan
+
+
+
+
+ Kenya
+
+
+
+
+ Malaysia
+
+
+
+
+ Mexico
+
+
+
+
+ Morocco
+
+
+
+
+ Netherlands
+
+
+
+
+ New Zealand
+
+
+
+
+ Nigeria
+
+
+
+
+ Peru
+
+
+
+
+ Philippines
+
+
+
+
+ Poland
+ Polen
+
+
+
+ Russia
+ Ryssland
+
+
+
+ Saudi Arabia
+
+
+
+
+ Singapore
+
+
+
+
+ South Africa
+
+
+
+
+ South Korea
+
+
+
+
+ Spain
+ Spanien
+
+
+
+ Sweden
+ Sverige
+
+
+
+ Taiwan
+
+
+
+
+ Tunisia
+
+
+
+
+ Turkey
+ Turkiet
+
+
+
+ Uganda
+
+
+
+
+ United Arab Emirates
+
+
+
+
+ United Kingdom
+
+
+
+
+ Yemen
+
+
+
+
+ Worldwide
+
+
+
+
\ No newline at end of file
diff --git a/locale/tr.ts b/locale/tr.ts
index f686a95..fde27d6 100644
--- a/locale/tr.ts
+++ b/locale/tr.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
Tarayıcının dıÅındaki yaÅam!
-
+
Version %1
Sürüm %1
-
+
Licensed to: %1
%1 için lisanslanmıÅtır
-
+
%1 is Free Software but its development takes precious time.
%1 özgür yazılımdır ama geliÅtirmek deÄerli zaman alır.
-
+
Please <a href='%1'>donate</a> to support the continued development of %2.
Lütfen %2 geliÅtirilmesinin devam etmesi için <a href='%1'>baÄıÅ</a> yapın.
-
+
You may want to try my other apps as well:
Bunun yanında diÄer uygulamalarımı da denemek isteyebilirsiniz:
-
+
%1, a YouTube music player
%1, YouTube müzik oynatıcı
-
+
%1, a music player
%1, bir müzik çalar
-
+
Translate %1 to your native language using %2
%1'i, %2 kullanarak kendi dilinize çevirin
-
+
Icon designed by %1.
Simge %1 tarafından tasarlandı.
-
+
Released under the <a href='%1'>GNU General Public License</a>
<a href='%1'>GNU Genel Kamu Lisansı</a> ile yayınlanmıÅtır
-
+
&Close
- &Kapat
+ Kapat (&C)
-
+
About
Hakkında
-
+
What you always wanted to know about %1 and never dared to ask
%1 hakkında her zaman bilmek isteyip de soramadıklarınız
@@ -134,6 +134,95 @@
Lisans Al
+
+ ChannelAggregator
+
+
+ By %1
+ %1 tarafından
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ Tüm Videolar
+
+
+
+ Unwatched Videos
+ Ä°zlenmemiÅ Videolar
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ Tümünü izlendi iÅaretle
+
+
+
+ Show Updated
+ Güncellenenleri Göster
+
+
+
+ Name
+ Ä°sim
+
+
+
+ Last Updated
+ Son Güncellenen
+
+
+
+ Last Added
+ Son Eklenen
+
+
+
+ Last Watched
+ Son Ä°zlenen
+
+
+
+ Most Watched
+ En Ãok Ä°zlenen
+
+
+
+ Sort by
+ Sırala
+
+
+
+ All Videos
+ Tüm Videolar
+
+
+
+ Unwatched Videos
+ Ä°zlenmemiÅ Videolar
+
+
+
+ There are no updated subscriptions at this time.
+ Åu anda güncellenen abonelik yok.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Hiç aboneliÄiniz yok. Kanallara abone olmak için yıldız simgesini kullanın.
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
byte
-
+
KB
KB
-
+
MB
MB
-
+
bytes/sec
byte/san
-
+
KB/sec
KB/san
-
+
MB/sec
MB/san
-
+
seconds
saniye
-
+
minutes
dakika
-
+
%4 %5 remaining
%4 %5 kaldı
@@ -193,65 +282,65 @@
DownloadManager
-
+
This is just the demo version of %1.
Bu sadece %'in demo sürümüdür.
-
+
It can only download videos shorter than %1 minutes so you can test the download functionality.
Bu sadece %1 dakikadan kısa videoları indirebilir, indirme özelliÄini böylece test edebilirsiniz.
-
+
Continue
Devam
-
+
Get the full version
Tam sürüme geç
-
+
%1 downloaded in %2
%2 de %1 indirildi
-
+
Download finished
İndirme tamamlandı.
-
+
%n Download(s)
- %n Ä°ndirme
+ %n Ä°ndirme %n Ä°ndirme
DownloadSettings
-
+
Change location...
Konumu deÄiÅtir...
-
+
Choose the download location
İndirme konumunu seçin
-
+
Download location changed.
Ä°ndirme konumu deÄiÅti
-
+
Current downloads will still go in the previous location.
Mevcut indirmeler önceki konumda devam edecek
-
+
Downloading to: %1
Ä°ndiriliyor: %1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
Ä°ndirmeler
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
Oynat
-
+
Pause
Bekle
-
+
Play/Pause
Oynat/Bekle
-
+
Stop
Dur
-
+
Stop playing after current track
Åimdiki videodan sonra oynatmayı durdur
-
+
Next track
Sonraki video
-
+
Previous track
Ãnceki video
-
+
Increase volume
Sesi arttır
-
+
Decrease volume
Sesi azalt
-
+
Mute
- Sesi kes
+ Sessiz
-
+
Seek forward
Ä°leri sar
-
+
Seek backward
Geri sar
@@ -339,27 +428,37 @@
HomeView
-
+
Search
Arama
-
+
Find videos and channels by keyword
Anahtar kelimeye göre video ve kanal bulun
-
+
Browse
Gözat
-
+
Browse videos by category
Kategoriye göre videoları gözat
-
+
+ Subscriptions
+ Abonelikler
+
+
+
+ Channel subscriptions
+ Kanal abonelikleri
+
+
+
Make yourself comfortable
Kendinizi rahat hissedin
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
Hata
@@ -375,426 +474,436 @@
MainWindow
-
+
&Stop
- &Dur
+ Dur (&S)
-
+
Stop playback and go back to the search view
Oynatmayı durdur ve aramaya geri dön
-
+
S&kip
&Atla
-
+
Skip to the next video
Sonraki videoya atla
-
-
+
+
&Pause
&Bekle
-
-
+
+
Pause playback
Oynatmayı beklet
-
+
&Full Screen
&Tam ekran
-
+
Go full screen
Tam ekran görünümü
-
+
Hide the playlist and the toolbar
Listeyi ve araç çubuÄunu gizle
-
+
Go to the YouTube video page and pause playback
Oynatmayı beklet ve YouTube sayfasına git
-
+
Copy the current video YouTube link to the clipboard
Geçerli videonun YouTube baÄlantısını panoya kopyala
-
+
Copy the current video stream URL to the clipboard
Geçerli video akıÅının URL adresini panoya kopyala
-
+
Find other video parts hopefully in the right order
DoÄru sırada olacak Åekilde diÄer video kısımlarını bul
-
+
&Remove
&Kaldır
-
+
Remove the selected videos from the playlist
Seçilen videoları listeden kaldır
-
+
Move &Up
Y&ukarı taÅı
-
+
Move up the selected videos in the playlist
Seçilen videoları listede yukarı taÅı
-
+
Move &Down
A&ÅaÄı taÅı
-
+
Move down the selected videos in the playlist
Seçilen videoları listede aÅaÄı taÅı
-
+
Clear the search history. Cannot be undone.
Arama geçmiÅini sil. Bu geri alınamaz.
-
+
&Quit
&Ãık
-
+
Bye
Gülegüle
-
+
&Website
&Website
-
+
%1 on the Web
%1 Ä°nternette
-
+
Please support the continued development of %1
Lütfen %1 geliÅiminin sürekliliÄi için destekleyin
-
+
&About
&Hakkında
-
+
Info about %1
%1 Hakkında
-
+
Search
Ara
-
+
Mute volume
Sesi kes
-
-
+
+
&Downloads
&Ä°ndirmeler
-
+
Show details about video downloads
Video indirmelerinin ayrıntılarını göster
-
+
&Download
&Ä°ndir
-
+
Download the current video
Geçerli videoyu indir
-
+
+ &Subscribe to Channel
+ Kanala Abone Ol (&S)
+
+
+
Share the current video using %1
%1 kullanarak Åu an ki videoyu paylaÅ
-
+
&Email
&Eposta
-
+
Email
Eposta
-
+
&Close
&Kapat
-
+
&Float on Top
Ãstte Sabitle
-
+
&Stop After This Video
Bu Videodan &Sonra Durdur
-
+
&Report an Issue...
Bir Sorun Bildi&r
-
+
&Refine Search...
A&ramayı Sınırla...
-
+
More...
Dahası...
-
+
&Related Videos
Benze&r Videolar
-
+
Watch videos related to the current one
Åu an izlediÄinize benzer videolar izleyin
-
+
+ Open in &Browser...
+
+
+
+
&Application
&Uygulama
-
+
Buy %1...
%1 Satın Al...
-
+
&Playback
&Ãalma
-
+
&Playlist
Oynatma &listesi
-
+
&Video
&Video
-
+
&View
&Görünüm
-
+
&Share
Payla&s
-
+
&Help
Yardı&m
-
+
Press %1 to raise the volume, %2 to lower it
%1 Sesi arttır, %2 sesi azalt
-
-
+
+
Opening %1
%1 Açılıyor
-
+
Do you want to exit %1 with a download in progress?
%1 İndiriliyor, çıkmak istiyor musunuz?
-
+
If you close %1 now, this download will be cancelled.
EÄer %1'Ä° Åimdi kapatırsanız, bu indirme iptal edilecek.
-
+
Close and cancel download
Kapat ve indirmeyi iptal et
-
+
Wait for download to finish
Ä°ndirmenin bitmesini bekle
-
+
Leave &Full Screen
&Tam Ekrandan Ãık
-
+
%1 version %2 is now available.
%1 sürüm %2 kullanılabilir durumda.
-
+
Remind me later
Daha sonra hatırlat
-
+
Update
Güncelle
-
+
Error: %1
Hata: %1
-
+
P&revious
Ãnceki
-
+
Go back to the previous track
Bir önceki parçaya geri dön
-
+
&Compact Mode
Kü&cültümüŠEkran
-
+
Open the &YouTube Page
&YouTube Sayfasını Aç
-
+
Copy the YouTube &Link
YouTube &Linkini Kopyala
-
+
Copy the Video Stream &URL
Video &URL'sini Kopyala
-
+
Find Video &Parts
Video Bölümlerini Bul
-
+
&Clear Recent Searches
Son Aramaları Temizle
-
+
Make a &Donation
BaÄıŠYap
-
+
&Manually Start Playing
&Manuel Olarak Ãalmaya BaÅla
-
+
Manually start playing videos
Videoları manuel olarak çalmaya baÅla
-
+
Choose your content location
Konumunuzu seçin
-
+
&Play
&Oynat
-
+
Resume playback
Oynatmaya devam et
-
+
Remaining time: %1
Kalan zaman: %1
-
+
Volume at %1%
Ses %1%
-
+
Volume is muted
Ses kapandı
-
+
Volume is unmuted
Ses açık
-
+
Maximum video definition set to %1
En yüksek video tanımı %1 olarak ayarlı
-
+
Your privacy is now safe
Åimdi gizliliÄiniz güvende
-
+
Downloads complete
İndirme tamamlandı
@@ -802,65 +911,75 @@
MediaView
-
+
You can now paste the YouTube link into another application
Åimdi YouTube baÄlantısını baÅka bir uygulamaya yapıÅtırabilirsiniz
-
+
You can now paste the video stream URL into another application
Åimdi video akıÅı URL adresini baÅka bir uygulamaya yapıÅtırabilirsiniz
-
+
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.
Bu sadece %1'in demo sürümüdür.
-
+
It allows you to test the application and see if it works for you.
Bu, uygulamayı test etmenizi ve çalıÅıp çalıÅmadıÄını görmenizi saÄlar.
-
+
Continue
Devam
-
+
of
Used in video parts, as in '2 of 3'
/
-
+
part
This is for video parts, as in 'Cool video - part 1'
kısım
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
bölüm
-
+
Sent from %1
%1 ile gönderildi
-
+
+ Unsubscribe from %1
+ %1 aboneliÄinden çık
+
+
+
+ Subscribe to %1
+ %1 Abone Ol
+
+
+
Get the full version
Tam sürüme geç
-
+
Downloading %1
Ä°ndiriliyor %1
@@ -909,52 +1028,52 @@
PlaylistItemDelegate
-
+
%1 views
%1 görüntülenme
-
+
%1 of %2 (%3) â %4
%1 of %2 (%3) â %4
-
+
Preparing
Hazırlanıyor
-
+
Failed
BaÅarısız
-
+
Completed
Tamamlandı
-
+
Stopped
Durduruldu
-
+
Stop downloading
Ä°ndirme iÅlemini durdur
-
+
Show in %1
%1 içinde göster
-
+
Open parent folder
Ãnceki dizini aç
-
+
Restart downloading
Ä°ndirme iÅlemini yeniden baÅlat
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
Aranıyor...
-
+
Show %1 More
%1 Tane Daha Göster
-
+
No videos
Video yok
-
+
No more videos
Daha fazla video yok
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
Sırala
-
+
Relevance
Alaka
-
-
+
+
Date
Tarih
-
+
View Count
Hiti Göster
-
+
Rating
Hit
-
+
Anytime
Herhangi bir zaman
-
+
Today
Bugün
-
+
7 Days
7 Gün
-
+
30 Days
30 Gün
-
+
Duration
Süre
-
-
+
+
All
Hepsi
-
+
Short
Kısa
-
+
Medium
Orta
-
+
Long
Uzun
-
+
Less than 4 minutes
4 dakikadan kısa
-
+
Between 4 and 20 minutes
4 - 20 dakika arası
-
+
Longer than 20 minutes
20 dakikadan uzun
-
+
Quality
Kalite
-
+
High Definition
Yüksek Kalite
-
+
720p or higher
720p veya daha yüksek
-
+
Done
Bitti
@@ -1095,7 +1214,7 @@
RegionsView
-
+
Done
Tamamlandı
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
<a href='%1'>%2</a>'a HoÅgeldiniz
-
+
Get the full version
Tam sürüme geç
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
GiriŠyapın
-
+
a keyword
bir anahtar kelime
-
+
a channel
bir kanal
-
+
to start watching videos.
ve videoları izlemeye baÅlayın.
-
+
Watch
Ä°zle
-
+
Recent keywords
Son arananlar
-
+
Recent channels
Ãnceki kanallar
@@ -1160,18 +1279,18 @@
SidebarHeader
-
-
+
+
&Back
Geri
-
+
Forward to %1
%1 Yönlendir
-
+
Back to %1
Geri Dön: %1
@@ -1179,12 +1298,12 @@
SidebarWidget
-
+
Refine Search
A&ramayı Sınırla
-
+
Did you mean: %1
Bunu mu demek istediniz: %1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
En popülerler
-
- Featured
- Gelecek
-
-
-
+
Most Shared
En Ãok PaylaÅılanlar
-
+
Most Discussed
En Ãok TartıÅılan
-
+
Top Rated
En Ãok Oy Verilenler
+
+
+ All Time Popular
+ Her Zaman Popüler
+
Video
-
+
Cannot get video stream for %1
%1 için video akıÅı alınamıyor.
-
+
Network error: %1 for %2
AÄ hatası: %2 için %1
@@ -1233,242 +1352,242 @@
YTRegions
-
+
Algeria
Cezayir
-
+
Argentina
Arjantin
-
+
Australia
Avustralya
-
+
Belgium
Belçika
-
+
Brazil
Brezilya
-
+
Canada
Kanada
-
+
Chile
Åili
-
+
Colombia
Kolombiya
-
+
Czech Republic
Ãek Cumhuriyeti
-
+
Egypt
Mısır
-
+
France
Fransa
-
+
Germany
Almanya
-
+
Ghana
Gana
-
+
Greece
Yunanistan
-
+
Hong Kong
Hong Kong
-
+
Hungary
Macaristan
-
+
India
Hindistan
-
+
Indonesia
Endonezya
-
+
Ireland
Ä°rlanda
-
+
Israel
Ä°srail
-
+
Italy
Ä°talya
-
+
Japan
Japonya
-
+
Jordan
Ãrdün
-
+
Kenya
Kenya
-
+
Malaysia
Malezya
-
+
Mexico
Meksika
-
+
Morocco
Fas
-
+
Netherlands
Hollanda
-
+
New Zealand
Yeni Zelanda
-
+
Nigeria
Nijerya
-
+
Peru
Peru
-
+
Philippines
Filipinler
-
+
Poland
Polonya
-
+
Russia
Rusya
-
+
Saudi Arabia
Suudi Arabistan
-
+
Singapore
Singapur
-
+
South Africa
Güney Afrika
-
+
South Korea
Güney Kore
-
+
Spain
Ä°spanya
-
+
Sweden
İsviçre
-
+
Taiwan
Tayvan
-
+
Tunisia
Tunus
-
+
Turkey
Türkiye
-
+
Uganda
Uganda
-
+
United Arab Emirates
BirleÅik Arap Emirlikleri
-
+
United Kingdom
Ä°ngiltere
-
+
Yemen
Yemen
-
+
Worldwide
Dünya Ãapında
diff --git a/locale/uk.ts b/locale/uk.ts
new file mode 100644
index 0000000..87a6f9c
--- /dev/null
+++ b/locale/uk.ts
@@ -0,0 +1,1596 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Ðа межами веб-пеÑеглÑдаÑа Ñакож Ñ Ð¶Ð¸ÑÑÑ!
+
+
+
+ Version %1
+ ÐеÑÑÑÑ %1
+
+
+
+ Licensed to: %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.
+
+
+
+ You may want to try my other apps as well:
+ СпÑобÑйÑе ÑнÑÑ Ð¿ÑогÑами:
+
+
+
+ %1, a YouTube music player
+ %1, мÑзиÑний пÑогÑÐ°Ð²Ð°Ñ Ð´Ð»Ñ YouTube
+
+
+
+ %1, a music player
+ %1, мÑзиÑний пÑогÑаваÑ
+
+
+
+ Translate %1 to your native language using %2
+ ÐеÑеклаÑÑи %1 на ваÑÑ ÑÑÐ´Ð½Ñ Ð¼Ð¾Ð²Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ %2
+
+
+
+ Icon designed by %1.
+ РозÑобник пÑкÑогÑам %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ ÐипÑÑено за <a href='%1'>ÐагалÑÐ½Ð¾Ñ Ð³ÑомадÑÑÐºÐ¾Ñ Ð»ÑÑензÑÑÑ GNU</a>
+
+
+
+ &Close
+ &ÐакÑиÑи
+
+
+
+ About
+ ÐÑо пÑогÑамÑ
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ УÑе Ñо ви завжди Ñ
оÑÑли знаÑи пÑо %1, але не наважÑвалиÑÑ Ð·Ð°Ð¿Ð¸ÑаÑи
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ ÐведÑÑÑ Ð´Ð°Ð½Ñ Ð²Ð°ÑÐ¾Ñ Ð»ÑÑензÑÑ
+
+
+
+ &Email:
+ &Email:
+
+
+
+ &Code:
+ &Ðод:
+
+
+
+ ActivationView
+
+
+ Please license %1
+
+ÐÑÑензÑйÑе %1
+
+
+
+ This demo has expired.
+ ÐÑобний пеÑÑод виÑеÑпано.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ Ðовна веÑÑÑÑ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ Ð·Ð°Ð²Ð°Ð½ÑажÑваÑи вÑдео довÑе% 1 Ñ
вилини Ñа дивиÑиÑÑ Ð²Ñдео без пеÑеÑв.
+
+
+
+ Without a license, the application will expire in %1 days.
+ ÐÑогÑÐ°Ð¼Ñ Ð±Ñде заблоковано ÑеÑез %1 днÑв, ÑкÑо ви не пÑидбаÑÑе лÑÑензÑÑ.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ ÐÑи покÑпÑÑ Ð¿Ð¾Ð²Ð½Ð¾Ñ Ð²ÐµÑÑÑÑ, ви Ñакож надаÑÑе пÑдÑÑÐ¸Ð¼ÐºÑ ÑÑÐ¶ÐºÐ¾Ñ ÑобоÑи Ñ ÑÑвоÑÐµÐ½Ð½Ñ %1.
+
+
+
+ Use Demo
+ ÐемонÑÑÑаÑÑÑ
+
+
+
+ Enter License
+ ÐвеÑÑи лÑÑензÑÑ
+
+
+
+ Buy License
+ ÐÑидбаÑи лÑÑензÑÑ
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Ðа %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ УÑе вÑдео
+
+
+
+ Unwatched Videos
+ ÐепеÑеглÑнÑÑиÑ
вÑдео
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ СкаÑÑваÑи ÑÑе Ñк пеÑеглÑнÑÑе
+
+
+
+ Show Updated
+ ÐоказаÑи оновленÑ
+
+
+
+ Name
+ Ðазва
+
+
+
+ Last Updated
+ ÐеÑодавно оновленÑ
+
+
+
+ Last Added
+ ÐеÑодавно доданÑ
+
+
+
+ Last Watched
+ ÐеÑодавно пеÑеглÑнÑÑÑ
+
+
+
+ Most Watched
+ Що найбÑлÑÑе пеÑеглÑдаÑÑÑÑÑ
+
+
+
+ Sort by
+ СоÑÑÑваÑи по
+
+
+
+ All Videos
+ УÑе вÑдео
+
+
+
+ Unwatched Videos
+ Ðе пеÑеглÑнÑÑе вÑдео
+
+
+
+ There are no updated subscriptions at this time.
+ Ðа даний ÑÐ°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð¿ÑдпиÑок.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Ð Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¿ÑдпиÑок. ÐикоÑиÑÑовÑйÑе Ñимвол зÑÑоÑки Ñоб пÑдпиÑÑваÑиÑÑ Ð½Ð° канали.
+
+
+
+ ClearButton
+
+
+ Clear
+ ÐÑиÑÑиÑи
+
+
+
+ DownloadItem
+
+
+ bytes
+ байÑ
+
+
+
+ KB
+ ÐбайÑ
+
+
+
+ MB
+ ÐбайÑ
+
+
+
+ bytes/sec
+ байÑ/Ñек
+
+
+
+ KB/sec
+ ÐбайÑ/Ñек
+
+
+
+ MB/sec
+ ÐбайÑ/Ñек
+
+
+
+ seconds
+ ÑекÑнд
+
+
+
+ minutes
+ Ñ
вилин
+
+
+
+ %4 %5 remaining
+ до завеÑÑÐµÐ½Ð½Ñ %4 %5
+
+
+
+ DownloadManager
+
+
+ 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
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ %1 downloaded in %2
+ %1 заванÑажений Ñ %2
+
+
+
+ Download finished
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑÑено
+
+
+
+ %n Download(s)
+ ÐаванÑажÑÑÑÑÑÑ %n Ñайл ÐаванÑажÑÑÑÑÑÑ %n Ñайли ÐаванÑажÑÑÑÑÑÑ %n ÑайлÑв
+
+
+
+ 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
+ ÐаванÑаженнÑ
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ ÐаванÑажÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ ÐÑаÑи
+
+
+
+ Pause
+ ÐÑизÑпиниÑи
+
+
+
+ Play/Pause
+ ÐÑаÑи/ÐÑизÑпиниÑи
+
+
+
+ Stop
+ ÐÑпиниÑи
+
+
+
+ Stop playing after current track
+ ÐÑпиниÑи по завеÑÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑоÑного
+
+
+
+ Next track
+ ÐаÑÑÑпний
+
+
+
+ Previous track
+ ÐопеÑеднÑй
+
+
+
+ Increase volume
+ ÐÑдвиÑиÑи гÑÑнÑÑÑÑ
+
+
+
+ Decrease volume
+ ÐнизиÑи гÑÑнÑÑÑÑ
+
+
+
+ Mute
+ ÐÑиглÑÑиÑи
+
+
+
+ Seek forward
+ ШÑкаÑи наÑÑÑпне
+
+
+
+ Seek backward
+ ШÑкаÑи попеÑеднÑ
+
+
+
+ HomeView
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ Find videos and channels by keyword
+ ÐнайÑи вÑдео Ñа канали за клÑÑовими Ñловами
+
+
+
+ Browse
+ ÐеÑеглÑдаÑ
+
+
+
+ Browse videos by category
+ ÐглÑд вÑдео по каÑегоÑÑÑÑ
+
+
+
+ Subscriptions
+ ÐÑдпиÑки
+
+
+
+ Channel subscriptions
+ ÐÑдпиÑки на канали
+
+
+
+ Make yourself comfortable
+ ÐлаÑÑовÑйÑеÑÑ ÑкнайзÑÑÑнÑÑе
+
+
+
+ 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
+ ÐеÑеÑ
Ñд Ñ Ð¿Ð¾Ð²Ð½Ð¾ÐµÐºÑанний Ñежим
+
+
+
+ Hide the playlist and the toolbar
+ СÑ
оваÑи ÑпиÑок Ñа Ð¿Ð°Ð½ÐµÐ»Ñ ÑнÑÑÑÑменÑÑв
+
+
+
+ Go to the YouTube video page and pause playback
+ ÐÑдкÑиÑи ÑÑоÑÑÐ½ÐºÑ YouTube Ñа пÑизÑпини вÑдÑвоÑÐµÐ½Ð½Ñ Ð²Ñдео
+
+
+
+ Copy the current video YouTube link to the clipboard
+ СкопÑÑваÑи YouTube поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾ÑоÑного вÑдео Ñ Ð±ÑÑеÑ
+
+
+
+ Copy the current video stream URL to the clipboard
+ СкопÑÑваÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾ÑоÑного вÑдео Ñ Ð±ÑÑеÑ
+
+
+
+ Find other video parts hopefully in the right order
+ ÐнайÑи ÑнÑÑ ÑаÑÑини вÑдео, ÑподÑваÑÑÑ, Ñ Ð¿ÑавилÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑдкÑ
+
+
+
+ &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 the search history. Cannot be undone.
+ ÐÑиÑÑиÑи ÑÑÑоÑÑÑ Ð¿Ð¾ÑÑÐºÑ (змÑни незвоÑоÑнÑ).
+
+
+
+ &Quit
+ &Ðи&Ñ
Ñд
+
+
+
+ Bye
+ Ðа вÑе добÑе
+
+
+
+ &Website
+ &СайÑ
+
+
+
+ %1 on the Web
+ %1 Ñ Ð¼ÐµÑежÑ
+
+
+
+ Please support the continued development of %1
+ ÐÑÐ´Ñ Ð»Ð°Ñка пÑдÑÑимайÑе подалÑÑий ÑозвиÑок %1
+
+
+
+ &About
+ &ÐÑо пÑогÑамÑ
+
+
+
+ Info about %1
+ ÐнÑоÑмаÑÑÑ Ð¿Ñо %1
+
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ Mute volume
+ ÐÑиглÑÑиÑи гÑÑнÑÑÑÑ
+
+
+
+
+ &Downloads
+ ÐаванÑаженнÑ
+
+
+
+ Show details about video downloads
+ ÐоказаÑи деÑÐ°Ð»Ñ Ð¿Ñо заванÑажÑÐ²Ð°Ð½Ñ Ð²Ñдео
+
+
+
+ &Download
+ ÐаванÑажиÑи
+
+
+
+ Download the current video
+ ÐаванÑажиÑи поÑоÑне вÑдео
+
+
+
+ &Subscribe to Channel
+ &ÐÑдпиÑаÑиÑÑ Ð½Ð° канал
+
+
+
+ Share the current video using %1
+ ÐодÑлиÑиÑÑ Ð¿Ð¾ÑоÑним вÑдео за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ %1
+
+
+
+ &Email
+ &Email
+
+
+
+ Email
+ Email
+
+
+
+ &Close
+ &ÐакÑиÑи
+
+
+
+ &Float on Top
+ &ÐвеÑÑ
Ñ ÑÑÑÑ
вÑкон
+
+
+
+ &Stop After This Video
+ ÐÑ&пиниÑи пÑÑÐ»Ñ ÑÑого вÑдео
+
+
+
+ &Report an Issue...
+ Ðо&вÑдомиÑи пÑо помилкÑ
+
+
+
+ &Refine Search...
+ &УÑоÑниÑи поÑÑк...
+
+
+
+ More...
+ ÐÑлÑÑе...
+
+
+
+ &Related Videos
+ Ðо&дÑбне вÑдео
+
+
+
+ Watch videos related to the current one
+ ÐивиÑиÑÑ Ð²Ñдео, повâÑÐ·Ð°Ð½Ñ Ð· поÑоÑним
+
+
+
+ Open in &Browser...
+ ÐÑдкÑиÑи in &ÐÑаÑзеÑ...
+
+
+
+ &Application
+ ÐÑ&огÑама
+
+
+
+ Buy %1...
+ ÐÑидбаÑи %1...
+
+
+
+ &Playback
+ &ÐÑдÑвоÑеннÑ
+
+
+
+ &Playlist
+ &СпиÑок вÑдÑвоÑеннÑ
+
+
+
+ &Video
+ &ÐÑдео
+
+
+
+ &View
+ &ÐиглÑд
+
+
+
+ &Share
+ &ÐодÑлиÑиÑÑ
+
+
+
+ &Help
+ Ðо&вÑдка
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ ÐаÑиÑнÑÑÑ %1, Ñоб пÑиглÑÑиÑи гÑÑнÑÑÑÑ, Ñа %2 Ñоб вÑдновиÑи ÑÑ
+
+
+
+
+ Opening %1
+ ÐÑдкÑиÑÑÑ %1
+
+
+
+ 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
+ ÐоÑекаÑиÑÑ Ð·Ð°Ð²ÐµÑÑеннÑ
+
+
+
+ Leave &Full Screen
+ ÐийÑи з &повноекÑанного ÑежимÑ
+
+
+
+ %1 version %2 is now available.
+ %1 веÑÑÑÑ %2 доÑÑÑпна.
+
+
+
+ Remind me later
+ ÐагадаÑи Ð¼ÐµÐ½Ñ Ð¿ÑзнÑÑе
+
+
+
+ Update
+ ÐновленнÑ
+
+
+
+ Error: %1
+ Ðомилка: %1
+
+
+
+ P&revious
+ Ðо&пеÑеднÑй
+
+
+
+ Go back to the previous track
+ ÐовеÑнÑÑиÑÑ Ð´Ð¾ попеÑеднÑого ÑÑекÑ
+
+
+
+ &Compact Mode
+ Ðомпак&Ñний Ñежим
+
+
+
+ Open the &YouTube Page
+ ÐÑд&кÑиÑи ÑÑоÑÑÐ½ÐºÑ YouTube
+
+
+
+ Copy the YouTube &Link
+ ÐопÑÑваÑи &поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° YouTube
+
+
+
+ Copy the Video Stream &URL
+ ÐопÑÑваÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° в&Ñдео поÑÑк
+
+
+
+ Find Video &Parts
+ ÐнайÑи &ÑÑагменÑи вÑдео
+
+
+
+ &Clear Recent Searches
+ Ð&ÑиÑÑиÑи оÑÑÐ°Ð½Ð½Ñ Ð¿Ð¾ÑÑÐºÐ¾Ð²Ñ Ð·Ð°Ð¿Ð¸Ñи
+
+
+
+ Make a &Donation
+ Ðоже&ÑÑвÑваÑи
+
+
+
+ &Manually Start Playing
+ &ÐоÑаÑи вÑдÑвоÑÐµÐ½Ð½Ñ Ð²ÑÑÑнÑ
+
+
+
+ Manually start playing videos
+ ÐоÑаÑи вÑдÑвоÑÐµÐ½Ð½Ñ Ð²Ñдео вÑÑÑнÑ
+
+
+
+ Choose your content location
+ ÐибÑÑ Ð¼ÑÑÑеÑозмÑÑеннÑ
+
+
+
+ &Play
+ ÐÑ&аÑи
+
+
+
+ Resume playback
+ ÐÑдновиÑи вÑдÑвоÑеннÑ
+
+
+
+ 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 complete
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑÑено
+
+
+
+ MediaView
+
+
+ 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.
+ ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð±Ñде дÑйÑне лиÑе пÑоÑÑгом обмеженого ÑаÑÑ.
+
+
+
+ This is just the demo version of %1.
+ >Це демонÑÑÑаÑÑйна веÑÑÑÑ %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Ðи маÑÑе Ð·Ð¼Ð¾Ð³Ñ Ð¿ÑоÑеÑÑÑваÑи пÑогÑÐ°Ð¼Ñ Ñа пеÑевÑÑиÑи пÑаÑездаÑнÑÑÑÑ.
+
+
+
+ Continue
+ ÐÑодовжиÑи
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ з
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ ÑаÑÑина
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ епÑзод
+
+
+
+ Sent from %1
+ ÐÑдпÑавиÑи з %1
+
+
+
+ Unsubscribe from %1
+ ÐÑдмовиÑиÑÑ Ð²Ñд пÑдпиÑки %1
+
+
+
+ Subscribe to %1
+ ÐÑдпиÑÑваÑиÑÑ Ð½Ð° %1
+
+
+
+ Get the full version
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ Downloading %1
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ ÐоÑÑÑпна нова веÑÑÑÑ %1!
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 доÑÑÑпна. Ðи маÑÑе %3.
+
+
+
+ Would you like to download it now?
+ Ðи бажаÑÑе заванÑажиÑи заÑаз?
+
+
+
+ Skip This Version
+ ÐÑопÑÑÑиÑи ÑÑ Ð²ÐµÑÑÑÑ
+
+
+
+ Remind Me Later
+ ÐагадаÑи пÑзнÑÑе
+
+
+
+ Install Update
+ ÐÑÑановиÑи оновленнÑ
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ ÐÑÑавиÑи
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %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
+ ÐаванÑажиÑи заново
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ ÐоÑÑк...
+
+
+
+ Show %1 More
+ ÐаÑÑÑÐ¿Ð½Ñ %1
+
+
+
+ No videos
+ ÐÑÑого не знайдено
+
+
+
+ No more videos
+ ÐÑлÑÑе немаÑ
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ СоÑÑÑваÑи по
+
+
+
+ Relevance
+ РелеванÑнÑÑÑÑ
+
+
+
+
+ Date
+ ÐаÑа
+
+
+
+ View Count
+ ÐÑлÑкÑÑÑÑ Ð¿ÐµÑеглÑдÑв
+
+
+
+ Rating
+ РейÑинг
+
+
+
+ Anytime
+ У бÑдÑ-Ñкий ÑаÑ
+
+
+
+ Today
+ СÑогоднÑ
+
+
+
+ 7 Days
+ 7 днÑв
+
+
+
+ 30 Days
+ 30 днÑв
+
+
+
+ Duration
+ ТÑивалÑÑÑÑ
+
+
+
+
+ All
+ УÑÑ
+
+
+
+ Short
+ ÐоÑоÑкÑ
+
+
+
+ Medium
+ СеÑеднÑ
+
+
+
+ Long
+ ÐовгÑ
+
+
+
+ Less than 4 minutes
+ ÐоÑоÑÑÑ Ð·Ð° 4 Ñ
вилини
+
+
+
+ Between 4 and 20 minutes
+ ÐÑж 4 Ñа 20 Ñ
вилинами
+
+
+
+ Longer than 20 minutes
+ ÐовÑе нÑж 20 Ñ
вилин
+
+
+
+ Quality
+ ЯкÑÑÑÑ
+
+
+
+ High Definition
+ ÐиÑока ÑоздÑлÑна здаÑнÑÑÑÑ
+
+
+
+ 720p or higher
+ 720p або бÑлÑÑе
+
+
+
+ Done
+ ÐоÑово
+
+
+
+ RegionsView
+
+
+ Done
+ ÐоÑово
+
+
+
+ SearchLineEdit
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ ÐаÑкаво пÑоÑимо до <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ ÐведÑÑÑ
+
+
+
+ a keyword
+ запиÑ
+
+
+
+ a channel
+ канал
+
+
+
+ to start watching videos.
+ Ñоб поÑаÑи пеÑеглÑд.
+
+
+
+ Watch
+ ÐеÑеглÑд
+
+
+
+ Recent keywords
+ ÐедавнÑй поÑÑк
+
+
+
+ Recent channels
+ ÐÑÑÐ°Ð½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ð¸
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ Ð&азад
+
+
+
+ Forward to %1
+ ÐпеÑед до %1
+
+
+
+ Back to %1
+ Ðазад до %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ УÑоÑниÑи поÑÑк
+
+
+
+ Did you mean: %1
+ Ðожливо ви мали на ÑвазÑ: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ ÐайпопÑлÑÑнÑÑÑ
+
+
+
+ Most Shared
+ Most Shared
+
+
+
+ Most Discussed
+ Що найбÑлÑÑе обговоÑÑÑÑÑ
+
+
+
+ Top Rated
+ ÐÑаÑÑ Ð¾ÑÑнки
+
+
+
+ All Time Popular
+ ÐопÑлÑÑне за ÑвеÑÑ ÑаÑ
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Ðе вдалоÑÑ Ð¾ÑÑимаÑи вÑдео поÑÑк Ð´Ð»Ñ %1
+
+
+
+ Network error: %1 for %2
+ Ðомилка меÑежÑ: %1 Ð´Ð»Ñ %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ ÐлжиÑ
+
+
+
+ Argentina
+ ÐÑгенÑина
+
+
+
+ Australia
+ ÐвÑÑÑалÑÑ
+
+
+
+ Belgium
+ ÐелÑгÑÑ
+
+
+
+ Brazil
+ ÐÑазилÑÑ
+
+
+
+ Canada
+ Ðанада
+
+
+
+ Chile
+ ЧилÑ
+
+
+
+ Colombia
+ ÐолÑмбÑÑ
+
+
+
+ Czech Republic
+ ЧеÑ
ÑÑ
+
+
+
+ Egypt
+ ÐгипеÑ
+
+
+
+ France
+ ФÑанÑÑÑ
+
+
+
+ Germany
+ ÐÑмеÑÑина
+
+
+
+ Ghana
+ Ðана
+
+
+
+ Greece
+ ÐÑеÑÑÑ
+
+
+
+ Hong Kong
+ Ðонконг
+
+
+
+ Hungary
+ УгоÑÑина
+
+
+
+ India
+ ÐндÑÑ
+
+
+
+ Indonesia
+ ÐндонезÑÑ
+
+
+
+ Ireland
+ ÐÑландÑÑ
+
+
+
+ Israel
+ ÐзÑаÑлÑ
+
+
+
+ Italy
+ ÐÑалÑÑ
+
+
+
+ Japan
+ ЯпонÑÑ
+
+
+
+ Jordan
+ ÐоÑданÑÑ
+
+
+
+ Kenya
+ ÐенÑÑ
+
+
+
+ Malaysia
+ ÐалайзÑÑ
+
+
+
+ Mexico
+ ÐекÑика
+
+
+
+ Morocco
+ ÐаÑокко
+
+
+
+ Netherlands
+ ÐÑдеÑланди
+
+
+
+ New Zealand
+ Ðова ÐеландÑÑ
+
+
+
+ Nigeria
+ ÐÑгеÑÑÑ
+
+
+
+ Peru
+ ÐеÑÑ
+
+
+
+ Philippines
+ ФÑлÑпÑни
+
+
+
+ Poland
+ ÐолÑÑа
+
+
+
+ Russia
+ РоÑÑÑ
+
+
+
+ Saudi Arabia
+ СаÑдÑвÑÑка ÐÑавÑÑ
+
+
+
+ Singapore
+ СингапÑÑ
+
+
+
+ South Africa
+ ÐÐÐ
+
+
+
+ South Korea
+ РеÑпÑблÑка ÐоÑеÑ
+
+
+
+ Spain
+ ÐÑпанÑÑ
+
+
+
+ Sweden
+ ШвеÑÑÑ
+
+
+
+ Taiwan
+ ТайванÑ
+
+
+
+ Tunisia
+ ТÑнÑÑ
+
+
+
+ Turkey
+ ТÑÑеÑÑина
+
+
+
+ Uganda
+ Уганда
+
+
+
+ United Arab Emirates
+ ÐÐÐ
+
+
+
+ United Kingdom
+ ÐеликобÑиÑанÑÑ
+
+
+
+ Yemen
+ Ðемен
+
+
+
+ Worldwide
+ СвÑÑовий
+
+
+
\ No newline at end of file
diff --git a/locale/uk_UA.ts b/locale/uk_UA.ts
new file mode 100644
index 0000000..1ebd77e
--- /dev/null
+++ b/locale/uk_UA.ts
@@ -0,0 +1,1596 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ Ðа межами веб-пеÑеглÑдаÑа Ñакож Ñ Ð¶Ð¸ÑÑÑ!
+
+
+
+ Version %1
+ ÐеÑÑÑÑ %1
+
+
+
+ Licensed to: %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.
+
+
+
+ You may want to try my other apps as well:
+ СпÑобÑйÑе ÑнÑÑ Ð¿ÑогÑами:
+
+
+
+ %1, a YouTube music player
+ %1, мÑзиÑний пÑогÑÐ°Ð²Ð°Ñ Ð´Ð»Ñ YouTube
+
+
+
+ %1, a music player
+ %1, мÑзиÑний пÑогÑаваÑ
+
+
+
+ Translate %1 to your native language using %2
+ ÐеÑеклаÑÑи %1 на ваÑÑ ÑÑÐ´Ð½Ñ Ð¼Ð¾Ð²Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ %2
+
+
+
+ Icon designed by %1.
+ РозÑобник пÑкÑогÑам %1.
+
+
+
+ Released under the <a href='%1'>GNU General Public License</a>
+ ÐипÑÑено за <a href='%1'>ÐагалÑÐ½Ð¾Ñ Ð³ÑомадÑÑÐºÐ¾Ñ Ð»ÑÑензÑÑÑ GNU</a>
+
+
+
+ &Close
+ &ÐакÑиÑи
+
+
+
+ About
+ ÐÑо пÑогÑамÑ
+
+
+
+ What you always wanted to know about %1 and never dared to ask
+ УÑе Ñо ви завжди Ñ
оÑÑли знаÑи пÑо %1, але не наважÑвалиÑÑ Ð·Ð°Ð¿Ð¸ÑаÑи
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ ÐведÑÑÑ Ð´Ð°Ð½Ñ Ð²Ð°ÑÐ¾Ñ Ð»ÑÑензÑÑ
+
+
+
+ &Email:
+ &Email:
+
+
+
+ &Code:
+ &Ðод:
+
+
+
+ ActivationView
+
+
+ Please license %1
+
+ÐÑÑензÑйÑе %1
+
+
+
+ This demo has expired.
+ ÐÑобний пеÑÑод виÑеÑпано.
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ Ðовна веÑÑÑÑ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ Ð·Ð°Ð²Ð°Ð½ÑажÑваÑи вÑдео довÑе% 1 Ñ
вилини Ñа дивиÑиÑÑ Ð²Ñдео без пеÑеÑв.
+
+
+
+ Without a license, the application will expire in %1 days.
+ ÐÑогÑÐ°Ð¼Ñ Ð±Ñде заблоковано ÑеÑез %1 днÑв, ÑкÑо ви не пÑидбаÑÑе лÑÑензÑÑ.
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ ÐÑи покÑпÑÑ Ð¿Ð¾Ð²Ð½Ð¾Ñ Ð²ÐµÑÑÑÑ, ви Ñакож надаÑÑе пÑдÑÑÐ¸Ð¼ÐºÑ ÑÑÐ¶ÐºÐ¾Ñ ÑобоÑи Ñ ÑÑвоÑÐµÐ½Ð½Ñ %1.
+
+
+
+ Use Demo
+ ÐемонÑÑÑаÑÑÑ
+
+
+
+ Enter License
+ ÐвеÑÑи лÑÑензÑÑ
+
+
+
+ Buy License
+ ÐÑидбаÑи лÑÑензÑÑ
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ Ðа %1
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ УÑе вÑдео
+
+
+
+ Unwatched Videos
+ ÐепеÑеглÑнÑÑиÑ
вÑдео
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ СкаÑÑваÑи ÑÑе Ñк пеÑеглÑнÑÑе
+
+
+
+ Show Updated
+ ÐоказаÑи оновленÑ
+
+
+
+ Name
+ Ðазва
+
+
+
+ Last Updated
+ ÐеÑодавно оновленÑ
+
+
+
+ Last Added
+ ÐеÑодавно доданÑ
+
+
+
+ Last Watched
+ ÐеÑодавно пеÑеглÑнÑÑÑ
+
+
+
+ Most Watched
+ Що найбÑлÑÑе пеÑеглÑдаÑÑÑÑÑ
+
+
+
+ Sort by
+ СоÑÑÑваÑи по
+
+
+
+ All Videos
+ УÑе вÑдео
+
+
+
+ Unwatched Videos
+ Ðе пеÑеглÑнÑÑе вÑдео
+
+
+
+ There are no updated subscriptions at this time.
+ Ðа даний ÑÐ°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð¿ÑдпиÑок.
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ Ð Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¿ÑдпиÑок. ÐикоÑиÑÑовÑйÑе Ñимвол зÑÑоÑки Ñоб пÑдпиÑÑваÑиÑÑ Ð½Ð° канали.
+
+
+
+ ClearButton
+
+
+ Clear
+ ÐÑиÑÑиÑи
+
+
+
+ DownloadItem
+
+
+ bytes
+ байÑ
+
+
+
+ KB
+ ÐбайÑ
+
+
+
+ MB
+ ÐбайÑ
+
+
+
+ bytes/sec
+ байÑ/Ñек
+
+
+
+ KB/sec
+ ÐбайÑ/Ñек
+
+
+
+ MB/sec
+ ÐбайÑ/Ñек
+
+
+
+ seconds
+ ÑекÑнд
+
+
+
+ minutes
+ Ñ
вилин
+
+
+
+ %4 %5 remaining
+ до завеÑÑÐµÐ½Ð½Ñ %4 %5
+
+
+
+ DownloadManager
+
+
+ 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
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ %1 downloaded in %2
+ %1 заванÑажений Ñ %2
+
+
+
+ Download finished
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑÑено
+
+
+
+ %n Download(s)
+ ÐаванÑажÑÑÑÑÑÑ %n Ñайл ÐаванÑажÑÑÑÑÑÑ %n Ñайли ÐаванÑажÑÑÑÑÑÑ %n ÑайлÑв
+
+
+
+ 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
+ ÐаванÑаженнÑ
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ ÐаванÑажÑÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ ÐÑаÑи
+
+
+
+ Pause
+ ÐÑизÑпиниÑи
+
+
+
+ Play/Pause
+ ÐÑаÑи/ÐÑизÑпиниÑи
+
+
+
+ Stop
+ ÐÑпиниÑи
+
+
+
+ Stop playing after current track
+ ÐÑпиниÑи по завеÑÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑоÑного
+
+
+
+ Next track
+ ÐаÑÑÑпний
+
+
+
+ Previous track
+ ÐопеÑеднÑй
+
+
+
+ Increase volume
+ ÐÑдвиÑиÑи гÑÑнÑÑÑÑ
+
+
+
+ Decrease volume
+ ÐнизиÑи гÑÑнÑÑÑÑ
+
+
+
+ Mute
+ ÐÑиглÑÑиÑи
+
+
+
+ Seek forward
+ ШÑкаÑи наÑÑÑпне
+
+
+
+ Seek backward
+ ШÑкаÑи попеÑеднÑ
+
+
+
+ HomeView
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ Find videos and channels by keyword
+ ÐнайÑи вÑдео Ñа канали за клÑÑовими Ñловами
+
+
+
+ Browse
+ ÐеÑеглÑдаÑ
+
+
+
+ Browse videos by category
+ ÐглÑд вÑдео по каÑегоÑÑÑÑ
+
+
+
+ Subscriptions
+ ÐÑдпиÑки
+
+
+
+ Channel subscriptions
+ ÐÑдпиÑки на канали
+
+
+
+ Make yourself comfortable
+ ÐлаÑÑовÑйÑеÑÑ ÑкнайзÑÑÑнÑÑе
+
+
+
+ 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
+ ÐеÑеÑ
Ñд Ñ Ð¿Ð¾Ð²Ð½Ð¾ÐµÐºÑанний Ñежим
+
+
+
+ Hide the playlist and the toolbar
+ СÑ
оваÑи ÑпиÑок Ñа Ð¿Ð°Ð½ÐµÐ»Ñ ÑнÑÑÑÑменÑÑв
+
+
+
+ Go to the YouTube video page and pause playback
+ ÐÑдкÑиÑи ÑÑоÑÑÐ½ÐºÑ YouTube Ñа пÑизÑпини вÑдÑвоÑÐµÐ½Ð½Ñ Ð²Ñдео
+
+
+
+ Copy the current video YouTube link to the clipboard
+ СкопÑÑваÑи YouTube поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾ÑоÑного вÑдео Ñ Ð±ÑÑеÑ
+
+
+
+ Copy the current video stream URL to the clipboard
+ СкопÑÑваÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾ÑоÑного вÑдео Ñ Ð±ÑÑеÑ
+
+
+
+ Find other video parts hopefully in the right order
+ ÐнайÑи ÑнÑÑ ÑаÑÑини вÑдео, ÑподÑваÑÑÑ, Ñ Ð¿ÑавилÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑдкÑ
+
+
+
+ &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 the search history. Cannot be undone.
+ ÐÑиÑÑиÑи ÑÑÑоÑÑÑ Ð¿Ð¾ÑÑÐºÑ (змÑни незвоÑоÑнÑ).
+
+
+
+ &Quit
+ &Ðи&Ñ
Ñд
+
+
+
+ Bye
+ Ðа вÑе добÑе
+
+
+
+ &Website
+ &СайÑ
+
+
+
+ %1 on the Web
+ %1 Ñ Ð¼ÐµÑежÑ
+
+
+
+ Please support the continued development of %1
+ ÐÑÐ´Ñ Ð»Ð°Ñка пÑдÑÑимайÑе подалÑÑий ÑозвиÑок %1
+
+
+
+ &About
+ &ÐÑо пÑогÑамÑ
+
+
+
+ Info about %1
+ ÐнÑоÑмаÑÑÑ Ð¿Ñо %1
+
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ Mute volume
+ ÐÑиглÑÑиÑи гÑÑнÑÑÑÑ
+
+
+
+
+ &Downloads
+ ÐаванÑаженнÑ
+
+
+
+ Show details about video downloads
+ ÐоказаÑи деÑÐ°Ð»Ñ Ð¿Ñо заванÑажÑÐ²Ð°Ð½Ñ Ð²Ñдео
+
+
+
+ &Download
+ ÐаванÑажиÑи
+
+
+
+ Download the current video
+ ÐаванÑажиÑи поÑоÑне вÑдео
+
+
+
+ &Subscribe to Channel
+ &ÐÑдпиÑаÑиÑÑ Ð½Ð° канал
+
+
+
+ Share the current video using %1
+ ÐодÑлиÑиÑÑ Ð¿Ð¾ÑоÑним вÑдео за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ %1
+
+
+
+ &Email
+ &Email
+
+
+
+ Email
+ Email
+
+
+
+ &Close
+ &ÐакÑиÑи
+
+
+
+ &Float on Top
+ &ÐвеÑÑ
Ñ ÑÑÑÑ
вÑкон
+
+
+
+ &Stop After This Video
+ ÐÑ&пиниÑи пÑÑÐ»Ñ ÑÑого вÑдео
+
+
+
+ &Report an Issue...
+ Ðо&вÑдомиÑи пÑо помилкÑ
+
+
+
+ &Refine Search...
+ &УÑоÑниÑи поÑÑк...
+
+
+
+ More...
+ ÐÑлÑÑе...
+
+
+
+ &Related Videos
+ Ðо&дÑбне вÑдео
+
+
+
+ Watch videos related to the current one
+ ÐивиÑиÑÑ Ð²Ñдео, повâÑÐ·Ð°Ð½Ñ Ð· поÑоÑним
+
+
+
+ Open in &Browser...
+ ÐÑдкÑиÑи &ÐÑаÑзеÑ..
+
+
+
+ &Application
+ ÐÑ&огÑама
+
+
+
+ Buy %1...
+ ÐÑидбаÑи %1...
+
+
+
+ &Playback
+ &ÐÑдÑвоÑеннÑ
+
+
+
+ &Playlist
+ &СпиÑок вÑдÑвоÑеннÑ
+
+
+
+ &Video
+ &ÐÑдео
+
+
+
+ &View
+ &ÐиглÑд
+
+
+
+ &Share
+ &ÐодÑлиÑиÑÑ
+
+
+
+ &Help
+ Ðо&вÑдка
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ ÐаÑиÑнÑÑÑ %1, Ñоб пÑиглÑÑиÑи гÑÑнÑÑÑÑ, Ñа %2 Ñоб вÑдновиÑи ÑÑ
+
+
+
+
+ Opening %1
+ ÐÑдкÑиÑÑÑ %1
+
+
+
+ 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
+ ÐоÑекаÑиÑÑ Ð·Ð°Ð²ÐµÑÑеннÑ
+
+
+
+ Leave &Full Screen
+ ÐийÑи з &повноекÑанного ÑежимÑ
+
+
+
+ %1 version %2 is now available.
+ %1 веÑÑÑÑ %2 доÑÑÑпна.
+
+
+
+ Remind me later
+ ÐагадаÑи Ð¼ÐµÐ½Ñ Ð¿ÑзнÑÑе
+
+
+
+ Update
+ ÐновленнÑ
+
+
+
+ Error: %1
+ Ðомилка: %1
+
+
+
+ P&revious
+ Ðо&пеÑеднÑй
+
+
+
+ Go back to the previous track
+ ÐовеÑнÑÑиÑÑ Ð´Ð¾ попеÑеднÑого ÑÑекÑ
+
+
+
+ &Compact Mode
+ Ðомпак&Ñний Ñежим
+
+
+
+ Open the &YouTube Page
+ ÐÑд&кÑиÑи ÑÑоÑÑÐ½ÐºÑ YouTube
+
+
+
+ Copy the YouTube &Link
+ ÐопÑÑваÑи &поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° YouTube
+
+
+
+ Copy the Video Stream &URL
+ ÐопÑÑваÑи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° в&Ñдео поÑÑк
+
+
+
+ Find Video &Parts
+ ÐнайÑи &ÑÑагменÑи вÑдео
+
+
+
+ &Clear Recent Searches
+ Ð&ÑиÑÑиÑи оÑÑÐ°Ð½Ð½Ñ Ð¿Ð¾ÑÑÐºÐ¾Ð²Ñ Ð·Ð°Ð¿Ð¸Ñи
+
+
+
+ Make a &Donation
+ Ðоже&ÑÑвÑваÑи
+
+
+
+ &Manually Start Playing
+ &ÐоÑаÑи вÑдÑвоÑÐµÐ½Ð½Ñ Ð²ÑÑÑнÑ
+
+
+
+ Manually start playing videos
+ ÐоÑаÑи вÑдÑвоÑÐµÐ½Ð½Ñ Ð²Ñдео вÑÑÑнÑ
+
+
+
+ Choose your content location
+ ÐибÑÑ Ð¼ÑÑÑеÑозмÑÑеннÑ
+
+
+
+ &Play
+ ÐÑ&аÑи
+
+
+
+ Resume playback
+ ÐÑдновиÑи вÑдÑвоÑеннÑ
+
+
+
+ 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 complete
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑÑено
+
+
+
+ MediaView
+
+
+ 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.
+ ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð±Ñде дÑйÑне лиÑе пÑоÑÑгом обмеженого ÑаÑÑ.
+
+
+
+ This is just the demo version of %1.
+ >Це демонÑÑÑаÑÑйна веÑÑÑÑ %1.
+
+
+
+ It allows you to test the application and see if it works for you.
+ Ðи маÑÑе Ð·Ð¼Ð¾Ð³Ñ Ð¿ÑоÑеÑÑÑваÑи пÑогÑÐ°Ð¼Ñ Ñа пеÑевÑÑиÑи пÑаÑездаÑнÑÑÑÑ.
+
+
+
+ Continue
+ ÐÑодовжиÑи
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ з
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ ÑаÑÑина
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ епÑзод
+
+
+
+ Sent from %1
+ ÐÑдпÑавиÑи з %1
+
+
+
+ Unsubscribe from %1
+ ÐÑдмовиÑиÑÑ Ð²Ñд пÑдпиÑки %1
+
+
+
+ Subscribe to %1
+ ÐÑдпиÑÑваÑиÑÑ Ð½Ð° %1
+
+
+
+ Get the full version
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ Downloading %1
+ ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ ÐоÑÑÑпна нова веÑÑÑÑ %1!
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 доÑÑÑпна. Ðи маÑÑе %3.
+
+
+
+ Would you like to download it now?
+ Ðи бажаÑÑе заванÑажиÑи заÑаз?
+
+
+
+ Skip This Version
+ ÐÑопÑÑÑиÑи ÑÑ Ð²ÐµÑÑÑÑ
+
+
+
+ Remind Me Later
+ ÐагадаÑи пÑзнÑÑе
+
+
+
+ Install Update
+ ÐÑÑановиÑи оновленнÑ
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ ÐÑÑавиÑи
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ %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
+ ÐаванÑажиÑи заново
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ ÐоÑÑк...
+
+
+
+ Show %1 More
+ ÐаÑÑÑÐ¿Ð½Ñ %1
+
+
+
+ No videos
+ ÐÑÑого не знайдено
+
+
+
+ No more videos
+ ÐÑлÑÑе немаÑ
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ СоÑÑÑваÑи по
+
+
+
+ Relevance
+ РелеванÑнÑÑÑÑ
+
+
+
+
+ Date
+ ÐаÑа
+
+
+
+ View Count
+ ÐÑлÑкÑÑÑÑ Ð¿ÐµÑеглÑдÑв
+
+
+
+ Rating
+ РейÑинг
+
+
+
+ Anytime
+ У бÑдÑ-Ñкий ÑаÑ
+
+
+
+ Today
+ СÑогоднÑ
+
+
+
+ 7 Days
+ 7 днÑв
+
+
+
+ 30 Days
+ 30 днÑв
+
+
+
+ Duration
+ ТÑивалÑÑÑÑ
+
+
+
+
+ All
+ УÑÑ
+
+
+
+ Short
+ ÐоÑоÑкÑ
+
+
+
+ Medium
+ СеÑеднÑ
+
+
+
+ Long
+ ÐовгÑ
+
+
+
+ Less than 4 minutes
+ ÐоÑоÑÑÑ Ð·Ð° 4 Ñ
вилини
+
+
+
+ Between 4 and 20 minutes
+ ÐÑж 4 Ñа 20 Ñ
вилинами
+
+
+
+ Longer than 20 minutes
+ ÐовÑе нÑж 20 Ñ
вилин
+
+
+
+ Quality
+ ЯкÑÑÑÑ
+
+
+
+ High Definition
+ ÐиÑока ÑоздÑлÑна здаÑнÑÑÑÑ
+
+
+
+ 720p or higher
+ 720p або бÑлÑÑе
+
+
+
+ Done
+ ÐоÑово
+
+
+
+ RegionsView
+
+
+ Done
+ ÐоÑово
+
+
+
+ SearchLineEdit
+
+
+ Search
+ ÐоÑÑк
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ ÐаÑкаво пÑоÑимо до <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ ÐÑÑимаÑи повноÑÑнкÑÑоналÑÐ½Ñ Ð²ÐµÑÑÑÑ
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ ÐведÑÑÑ
+
+
+
+ a keyword
+ запиÑ
+
+
+
+ a channel
+ канал
+
+
+
+ to start watching videos.
+ Ñоб поÑаÑи пеÑеглÑд.
+
+
+
+ Watch
+ ÐеÑеглÑд
+
+
+
+ Recent keywords
+ ÐедавнÑй поÑÑк
+
+
+
+ Recent channels
+ ÐÑÑÐ°Ð½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ð¸
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ Ð&азад
+
+
+
+ Forward to %1
+ ÐпеÑед до %1
+
+
+
+ Back to %1
+ Ðазад до %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ УÑоÑниÑи поÑÑк
+
+
+
+ Did you mean: %1
+ Ðожливо ви мали на ÑвазÑ: %1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ ÐайпопÑлÑÑнÑÑÑ
+
+
+
+ Most Shared
+ Most Shared
+
+
+
+ Most Discussed
+ Що найбÑлÑÑе обговоÑÑÑÑÑ
+
+
+
+ Top Rated
+ ÐÑаÑÑ Ð¾ÑÑнки
+
+
+
+ All Time Popular
+ ÐопÑлÑÑне за ÑвеÑÑ ÑаÑ
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ Ðе вдалоÑÑ Ð¾ÑÑимаÑи вÑдео поÑÑк Ð´Ð»Ñ %1
+
+
+
+ Network error: %1 for %2
+ Ðомилка меÑежÑ: %1 Ð´Ð»Ñ %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ ÐлжиÑ
+
+
+
+ Argentina
+ ÐÑгенÑина
+
+
+
+ Australia
+ ÐвÑÑÑалÑÑ
+
+
+
+ Belgium
+ ÐелÑгÑÑ
+
+
+
+ Brazil
+ ÐÑазилÑÑ
+
+
+
+ Canada
+ Ðанада
+
+
+
+ Chile
+ ЧилÑ
+
+
+
+ Colombia
+ ÐолÑмбÑÑ
+
+
+
+ Czech Republic
+ ЧеÑ
ÑÑ
+
+
+
+ Egypt
+ ÐгипеÑ
+
+
+
+ France
+ ФÑанÑÑÑ
+
+
+
+ Germany
+ ÐÑмеÑÑина
+
+
+
+ Ghana
+ Ðана
+
+
+
+ Greece
+ ÐÑеÑÑÑ
+
+
+
+ Hong Kong
+ Ðонконг
+
+
+
+ Hungary
+ УгоÑÑина
+
+
+
+ India
+ ÐндÑÑ
+
+
+
+ Indonesia
+ ÐндонезÑÑ
+
+
+
+ Ireland
+ ÐÑландÑÑ
+
+
+
+ Israel
+ ÐзÑаÑлÑ
+
+
+
+ Italy
+ ÐÑалÑÑ
+
+
+
+ Japan
+ ЯпонÑÑ
+
+
+
+ Jordan
+ ÐоÑданÑÑ
+
+
+
+ Kenya
+ ÐенÑÑ
+
+
+
+ Malaysia
+ ÐалайзÑÑ
+
+
+
+ Mexico
+ ÐекÑика
+
+
+
+ Morocco
+ ÐаÑокко
+
+
+
+ Netherlands
+ ÐÑдеÑланди
+
+
+
+ New Zealand
+ Ðова ÐеландÑÑ
+
+
+
+ Nigeria
+ ÐÑгеÑÑÑ
+
+
+
+ Peru
+ ÐеÑÑ
+
+
+
+ Philippines
+ ФÑлÑпÑни
+
+
+
+ Poland
+ ÐолÑÑа
+
+
+
+ Russia
+ РоÑÑÑ
+
+
+
+ Saudi Arabia
+ СаÑдÑвÑÑка ÐÑавÑÑ
+
+
+
+ Singapore
+ СингапÑÑ
+
+
+
+ South Africa
+ ÐÐÐ
+
+
+
+ South Korea
+ РеÑпÑблÑка ÐоÑеÑ
+
+
+
+ Spain
+ ÐÑпанÑÑ
+
+
+
+ Sweden
+ ШвеÑÑÑ
+
+
+
+ Taiwan
+ ТайванÑ
+
+
+
+ Tunisia
+ ТÑнÑÑ
+
+
+
+ Turkey
+ ТÑÑеÑÑина
+
+
+
+ Uganda
+ Уганда
+
+
+
+ United Arab Emirates
+ ÐÐÐ
+
+
+
+ United Kingdom
+ ÐеликобÑиÑанÑÑ
+
+
+
+ Yemen
+ Ðемен
+
+
+
+ Worldwide
+ СвÑÑовий
+
+
+
\ No newline at end of file
diff --git a/locale/zh_CN.ts b/locale/zh_CN.ts
index a2c8e61..b752ca3 100644
--- a/locale/zh_CN.ts
+++ b/locale/zh_CN.ts
@@ -3,72 +3,72 @@
AboutView
-
+
There's life outside the browser!
æµè§å¨ä¹å¤ï¼ç活亦精彩ï¼
-
+
Version %1
çæ¬ï¼%1
-
+
Licensed to: %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 ã
-
+
You may want to try my other apps as well:
æ¨æ许ä¹æ³å°è¯æçå
¶ä»ç¨åºï¼
-
+
%1, a YouTube music player
%1ï¼ä¸ä¸ª YouTube é³ä¹ææ¾å¨
-
+
%1, a music player
%1ï¼é³ä¹ææ¾å¨
-
+
Translate %1 to your native language using %2
ä½¿ç¨ %2 å° %1 ç¿»è¯ä¸ºæ¨çæ¯è¯
-
+
Icon designed 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
æ¨å¯¹ %1 çææé½æä»ä¹ï¼è¿è¯·ä¸åèµæã
@@ -88,7 +88,7 @@
&Code:
-
+ æ¿æ´»ç (C)ï¼
@@ -111,7 +111,7 @@
Without a license, the application will expire in %1 days.
-
+ è¥æ ææï¼è¯¥è½¯ä»¶å°ä¼å¨ %1 天åè¿æã
@@ -134,6 +134,95 @@
è´ä¹°è®¸å¯
+
+ ChannelAggregator
+
+
+ By %1
+
+
+
+
+ You have %n new video(s)
+
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+
+
+
+
+ Show Updated
+
+
+
+
+ Name
+
+
+
+
+ Last Updated
+
+
+
+
+ Last Added
+
+
+
+
+ Last Watched
+
+
+
+
+ Most Watched
+
+
+
+
+ Sort by
+ æåº
+
+
+
+ All Videos
+
+
+
+
+ Unwatched Videos
+
+
+
+
+ There are no updated subscriptions at this time.
+
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+
+
+
ClearButton
@@ -145,47 +234,47 @@
DownloadItem
-
+
bytes
åè
-
+
KB
ååè
-
+
MB
å
åè
-
+
bytes/sec
åè/ç§
-
+
KB/sec
ååè/ç§
-
+
MB/sec
å
åè/ç§
-
+
seconds
ç§
-
+
minutes
å
-
+
%4 %5 remaining
å©ä½ %4 %5
@@ -193,37 +282,37 @@
DownloadManager
-
+
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
è·åå®æ´ç
-
+
%1 downloaded in %2
%1 å·²ä¸è½½(%2)
-
+
Download finished
ä¸è½½å®æ
-
+
%n Download(s)
ä¸è½½æ°ï¼%n
@@ -231,27 +320,27 @@
DownloadSettings
-
+
Change location...
æ´æ¹åå¨ä½ç½®â¦â¦
-
+
Choose the download location
éæ©ä¸è½½åå¨ä½ç½®
-
+
Download location changed.
ä¸è½½åå¨ä½ç½®å·²ä¿®æ¹ã
-
+
Current downloads will still go in the previous location.
å½åä¸è½½ä»ç¶ä¿æåä¸ä¸ªåå¨ä½ç½®ã
-
+
Downloading to: %1
å½åä¸è½½åå¨ä½ç½®ï¼%1
@@ -259,8 +348,8 @@
DownloadView
-
-
+
+
Downloads
ä¸è½½æ
åµ
@@ -276,62 +365,62 @@
GlobalShortcuts
-
+
Play
ææ¾
-
+
Pause
æå
-
+
Play/Pause
ææ¾/æå
-
+
Stop
åæ¢
-
+
Stop playing after current track
å½å轨éååæ¢ææ¾
-
+
Next track
ä¸ä¸è½¨é
-
+
Previous track
ä¸ä¸è½¨é
-
+
Increase volume
å¢å é³é
-
+
Decrease volume
åå°é³é
-
+
Mute
éé³
-
+
Seek forward
ååæç´¢
-
+
Seek backward
ååæç´¢
@@ -339,27 +428,37 @@
HomeView
-
+
Search
æç´¢
-
+
Find videos and channels by keyword
æå
³é®è¯æ¥æ¾è§é¢åé¢é
-
+
Browse
æµè§
-
+
Browse videos by category
æåç±»æ¥æ¾è§é¢
-
+
+ Subscriptions
+
+
+
+
+ Channel subscriptions
+
+
+
+
Make yourself comfortable
请æ¨å°½æ
享åå§ï¼
@@ -367,7 +466,7 @@
LoadingWidget
-
+
Error
é误
@@ -375,426 +474,436 @@
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
å
¨å±ææ¾
-
+
Hide the playlist and the toolbar
éèææ¾å表åå·¥å
·æ
-
+
Go to the YouTube video page and pause playback
æå¼YouTubeè§é¢é¡µé¢å¹¶æååæ¾
-
+
Copy the current video YouTube link to the clipboard
å¤å¶å½åè§é¢çYouTubeé¾æ¥å°åªè´´æ¿ä¸
-
+
Copy the current video stream URL to the clipboard
å¤å¶å½åè§é¢æµçURLå°åªè´´æ¿ä¸
-
+
Find other video parts hopefully in the right order
以æ£ç¡®ç顺åºæ¥æ¾å
¶ä»è§é¢é¨å
-
+
&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 the search history. Cannot be undone.
æ¸
é¤æç´¢åå²ã注æï¼æ¸
é¤çåå²ä¸å¯æ¢å¤ã
-
+
&Quit
éåº(&Q)
-
+
Bye
åè§
-
+
&Website
ç½ç«(&W)
-
+
%1 on the Web
%1å¨ç½ç«ä¸
-
+
Please support the continued development of %1
请æ¨æ¯æ %1 ç继ç»å¼å
-
+
&About
å
³äº(&A)
-
+
Info about %1
å
³äº %1 çä¿¡æ¯
-
+
Search
æç´¢
-
+
Mute volume
éé³
-
-
+
+
&Downloads
ä¸è½½(&D)
-
+
Show details about video downloads
æ¾ç¤ºè§é¢ä¸è½½è¯¦æ
-
+
&Download
ä¸è½½(&D)
-
+
Download the current video
ä¸è½½å½åè§é¢
-
+
+ &Subscribe to Channel
+
+
+
+
Share the current video using %1
ä½¿ç¨ %1 å享å½åè§é¢
-
+
&Email
çµåé®ä»¶(&E)
-
+
Email
çµåé®ä»¶
-
+
&Close
å
³é(&C)
-
+
&Float on Top
çªå£ç½®é¡¶(&F)
-
+
&Stop After This Video
该è§é¢ååæ¢ææ¾(&S)
-
+
&Report an Issue...
æ¥åé®é¢&Râ¦
-
+
&Refine Search...
精确æç´¢(&R)...
-
+
More...
æ´å¤...
-
+
&Related Videos
ç¸å
³è§é¢(&R)
-
+
Watch videos related to the current one
æ¥çä¸å½åè§é¢ç¸å
³çè§é¢
-
+
+ Open in &Browser...
+
+
+
+
&Application
åºç¨ç¨åº(&A)
-
+
Buy %1...
è´ä¹° %1...
-
+
&Playback
ææ¾(&P)
-
+
&Playlist
ææ¾å表(&P)
-
+
&Video
è§é¢(&V)
-
+
&View
æ¥ç(&V)
-
+
&Share
å享(&S)
-
+
&Help
帮å©(&H)
-
+
Press %1 to raise the volume, %2 to lower it
æä½ %1 æé«é³éï¼%2 éä½é³é
-
-
+
+
Opening %1
æ£å¨æå¼ %1
-
+
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
çå¾
ä¸è½½å®æ
-
+
Leave &Full Screen
离å¼å
¨å±æ¨¡å¼(&F)
-
+
%1 version %2 is now available.
%1 çæ¬ %2 ç°å¨å¯ç¨ã
-
+
Remind me later
ç¨åæéæ
-
+
Update
æ´æ°
-
+
Error: %1
é误ï¼%1
-
+
P&revious
ä¸ä¸é¦(&R)
-
+
Go back to the previous track
é¥åå°ä¸ä¸é¦é³è½¨
-
+
&Compact Mode
ç´§å模å¼(&C)
-
+
Open the &YouTube Page
æå¼ YouTube 页é¢(&Y)
-
+
Copy the YouTube &Link
å¤å¶ YouTube é¾æ¥(&L)
-
+
Copy the Video Stream &URL
å¤å¶è§é¢æµ URL
-
+
Find Video &Parts
æ¥æ¾è§é¢é¨å(&P)
-
+
&Clear Recent Searches
æ¸
é¤æè¿çæç´¢(&C)
-
+
Make a &Donation
æå©(&D)
-
+
&Manually Start Playing
æå¨å¼å§ææ¾(&M)
-
+
Manually start playing videos
æå¨å¼å§ææ¾è§é¢
-
+
Choose your content location
-
+ éæ©æ¨çå
容ä½ç½®
-
+
&Play
ææ¾(&P)
-
+
Resume playback
æ¢å¤ææ¾
-
+
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 complete
ä¸è½½å®æ
@@ -802,65 +911,75 @@
MediaView
-
+
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.
æ¤é¾æ¥ä»
è½ä¿æçæ¶é´çæææ§ã
-
+
This is just the demo version of %1.
è¿ä»
æ¯ %1 çæ¼ç¤ºçã
-
+
It allows you to test the application and see if it works for you.
æ¬çæ¬å
许æ¨æµè¯ï¼ä»¥ç¡®è®¤æ¬åºç¨æ¯å¦éåæ¨ã
-
+
Continue
继ç»
-
+
of
Used in video parts, as in '2 of 3'
ä¹
-
+
part
This is for video parts, as in 'Cool video - part 1'
é¨å
-
+
episode
This is for video parts, as in 'Cool series - episode 1'
é
-
+
Sent from %1
ç± %1 åé
-
+
+ Unsubscribe from %1
+
+
+
+
+ Subscribe to %1
+
+
+
+
Get the full version
è·åå®æ´ç
-
+
Downloading %1
æ£å¨ä¸è½½ %1
@@ -870,32 +989,32 @@
A new version of %1 is available!
-
+ åç°æ°çæ¬ç %1 ï¼
%1 %2 is now available. You have %3.
-
+ %1 %2 å·²ç»å¯ç¨ãæ¨ç°æ¥æ %3ã
Would you like to download it now?
-
+ æ¨æ³ç°å¨ä¸è½½åï¼
Skip This Version
-
+ è·³è¿æ¤çæ¬
Remind Me Later
-
+ ç¨åæéæ
Install Update
-
+ å®è£
æ´æ°
@@ -903,58 +1022,58 @@
Paste
-
+ ç²è´´
PlaylistItemDelegate
-
+
%1 views
%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
éæ°ä¸è½½
@@ -962,22 +1081,22 @@
PlaylistModel
-
+
Searching...
æç´¢ä¸â¦â¦
-
+
Show %1 More
åå¤æ¾ç¤º %1
-
+
No videos
没æè§é¢
-
+
No more videos
没ææ´å¤è§é¢
@@ -985,109 +1104,109 @@
RefineSearchWidget
-
+
Sort by
æåº
-
+
Relevance
ç¸å
³æ§
-
-
+
+
Date
æ¥æ
-
+
View Count
æ¥ç计æ°
-
+
Rating
è¯å
-
+
Anytime
ä»»ä½æ¶å
-
+
Today
ä»å¤©
-
+
7 Days
7 天
-
+
30 Days
30 天
-
+
Duration
æç»æ¶é¿
-
-
+
+
All
å
¨é¨
-
+
Short
ç
-
+
Medium
ä¸ç
-
+
Long
é¿
-
+
Less than 4 minutes
å°äº 4 åé
-
+
Between 4 and 20 minutes
4 å° 20 åéä¹é´
-
+
Longer than 20 minutes
é¿äº 20 åé
-
+
Quality
è´¨é
-
+
High Definition
é«å辨ç
-
+
720p or higher
720p ææ´é«
-
+
Done
å®æ
@@ -1095,9 +1214,9 @@
RegionsView
-
+
Done
-
+ å®æ
@@ -1111,48 +1230,48 @@
SearchView
-
+
Welcome to <a href='%1'>%2</a>,
欢è¿ä½¿ç¨<a href='%1'>%2</a>ï¼
-
+
Get the full version
è·åå®æ´ç
-
+
Enter
"Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
è¾å
¥
-
+
a keyword
å
³é®å
-
+
a channel
é¢éå称
-
+
to start watching videos.
å¼å§è§çè§é¢ã
-
+
Watch
è§ç
-
+
Recent keywords
æè¿å
³é®åè¯
-
+
Recent channels
æè¿é¢é
@@ -1160,31 +1279,31 @@
SidebarHeader
-
-
+
+
&Back
åé(_B)
-
+
Forward to %1
-
+ åè¿è³ %1
-
+
Back to %1
-
+ è¿åå° %1
SidebarWidget
-
+
Refine Search
äºæ¬¡æ£ç´¢
-
+
Did you mean: %1
æ¨çæææ¯ï¼%1
@@ -1192,40 +1311,40 @@
StandardFeedsView
-
+
Most Popular
-
+ ææµè¡
-
- Featured
-
-
-
-
+
Most Shared
-
+ å享æå¤ç
-
+
Most Discussed
-
+ 讨论æå¤ç
-
+
Top Rated
+ è¯åè¾é«
+
+
+
+ All Time Popular
Video
-
+
Cannot get video stream for %1
æ æ³è·å¾è§é¢æµãå¯è½åå ï¼%1
-
+
Network error: %1 for %2
ç½ç»é误ï¼%1ãå¯è½åå ï¼%2
@@ -1233,244 +1352,244 @@
YTRegions
-
+
Algeria
-
+ é¿å°åå©äº
-
+
Argentina
-
+ é¿æ ¹å»·
-
+
Australia
-
+ 澳大å©äº
-
+
Belgium
-
+ æ¯å©æ¶
-
+
Brazil
-
+ 巴西
-
+
Canada
-
+ å æ¿å¤§
-
+
Chile
-
+ æºå©
-
+
Colombia
-
+ å¥ä¼¦æ¯äº
-
+
Czech Republic
-
+ æ·å
å
񆆫
-
+
Egypt
-
+ åå
-
+
France
-
+ æ³å½
-
+
Germany
-
+ å¾·å½
-
+
Ghana
-
+ å 纳
-
+
Greece
-
+ å¸è
-
+
Hong Kong
-
+ é¦æ¸¯
-
+
Hungary
-
+ åçå©
-
+
India
-
+ å°åº¦
-
+
Indonesia
-
+ å°åº¦å°¼è¥¿äº
-
+
Ireland
-
+ ç±å°å
°
-
+
Israel
-
+ 以è²å
-
+
Italy
-
+ æ大å©
-
+
Japan
-
+ æ¥æ¬
-
+
Jordan
-
+ 约æ¦
-
+
Kenya
-
+ è¯å°¼äº
-
+
Malaysia
-
+ 马æ¥è¥¿äº
-
+
Mexico
-
+ 墨西å¥
-
+
Morocco
-
+ æ©æ´å¥
-
+
Netherlands
-
+ è·å
°
-
+
New Zealand
-
+ æ°è¥¿å
°
-
+
Nigeria
-
+ å°¼æ¥å©äº
-
+
Peru
-
+ ç§é²
-
+
Philippines
-
+ è²å¾å®¾
-
+
Poland
-
+ æ³¢å
°
-
+
Russia
-
+ ä¿ç½æ¯
-
+
Saudi Arabia
-
+ æ²ç¹é¿æ伯
-
+
Singapore
-
+ æ°å å¡
-
+
South Africa
-
+ åé
-
+
South Korea
-
+ é©å½
-
+
Spain
-
+ 西çç
-
+
Sweden
-
+ ç士
-
+
Taiwan
-
+ å°æ¹¾
-
+
Tunisia
-
+ çªå°¼æ¯
-
+
Turkey
-
+ åè³å
¶
-
+
Uganda
-
+ ä¹å¹²è¾¾
-
+
United Arab Emirates
-
+ é¿èé
-
+
United Kingdom
-
+ è±å½
-
+
Yemen
-
+ ä¹é¨
-
+
Worldwide
-
+ å
¨ç
\ No newline at end of file
diff --git a/locale/zh_TW.ts b/locale/zh_TW.ts
new file mode 100644
index 0000000..414c5c4
--- /dev/null
+++ b/locale/zh_TW.ts
@@ -0,0 +1,1595 @@
+
+UTF-8
+
+ AboutView
+
+
+ There's life outside the browser!
+ å¨ç覽å¨ä¹å¤ççæ´»ï¼
+
+
+
+ Version %1
+ çæ¬ %1
+
+
+
+ Licensed to: %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ã
+
+
+
+ You may want to try my other apps as well:
+ æ¨å¯è½ä¹æ³å試æçå
¶ä»æç¨ç¨å¼ï¼
+
+
+
+ %1, a YouTube music player
+ %1, ä¸å YouTube çé³æ¨ææ¾å¨
+
+
+
+ %1, a music player
+ %1, ä¸åé³æ¨ææ¾å¨
+
+
+
+ Translate %1 to your native language using %2
+ ä½¿ç¨ %2 ç¿»è¯ %1 ä»é¢æçºæ¨çæ¬åèªè¨
+
+
+
+ Icon designed 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
+ æ¨ææ³ç¥éç %1 åå¾ä¾ä¸æ¢åç
+
+
+
+ ActivationDialog
+
+
+ Enter your License Details
+ 輸å
¥æ¨ç使ç¨ææ¬è©³ç´°è³æ
+
+
+
+ &Email:
+ é»åéµä»¶(&E)ï¼
+
+
+
+ &Code:
+ ææ¬ç¢¼(&C)ï¼
+
+
+
+ ActivationView
+
+
+ Please license %1
+ è«åå¾ %1 ææ¬
+
+
+
+ This demo has expired.
+ éåå±ç¤ºçå·²éæã
+
+
+
+ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions.
+ å®æ´çå
許æ¨ä¸è¼å½±çé·æ¼ %1 åéï¼ä»¥åè§çå½±çä¸æ被ä¸æ·ã
+
+
+
+ Without a license, the application will expire in %1 days.
+ æ²æåå¾ææ¬ï¼æ¬ç¨å¼å°æ¼ %1 天éæã
+
+
+
+ By purchasing the full version, you will also support the hard work I put into creating %1.
+ éé購買å®æ´çï¼æ¨éå¯ä»¥æ¯æææå
¥æ´å¤å¿åæ¼æé %1ã
+
+
+
+ Use Demo
+ 使ç¨å±ç¤ºç
+
+
+
+ Enter License
+ 輸å
¥ææ¬
+
+
+
+ Buy License
+ 購買ææ¬
+
+
+
+ ChannelAggregator
+
+
+ By %1
+ ä¾ %1
+
+
+
+ You have %n new video(s)
+ æ¨æ %n åæ°å½±ç
+
+
+
+ ChannelItemDelegate
+
+
+ All Videos
+ å
¨é¨å½±ç
+
+
+
+ Unwatched Videos
+ å°æªè§ççå½±ç
+
+
+
+ ChannelView
+
+
+ Mark all as watched
+ æ¨è¨å
¨é¨çºçéç
+
+
+
+ Show Updated
+ 顯示æ´æ°
+
+
+
+ Name
+ å稱
+
+
+
+ Last Updated
+ æè¿æ´æ°ç
+
+
+
+ Last Added
+ æè¿å å
¥ç
+
+
+
+ Last Watched
+ æè¿çéç
+
+
+
+ Most Watched
+ æå¤è§è³æ¬¡æ¸
+
+
+
+ Sort by
+ æåºæ ¹æ
+
+
+
+ All Videos
+ å
¨é¨å½±ç
+
+
+
+ Unwatched Videos
+ å°æªè§ççå½±ç
+
+
+
+ There are no updated subscriptions at this time.
+ ç®åæ²ææ´æ°çè¨é±ã
+
+
+
+ You have no subscriptions. Use the star symbol to subscribe to channels.
+ æ¨æ«ææ²æä»»ä½è¨é±ã使ç¨ææ符èè¨é±é »éã
+
+
+
+ ClearButton
+
+
+ Clear
+ æ¸
é¤
+
+
+
+ DownloadItem
+
+
+ bytes
+ bytes
+
+
+
+ KB
+ KB
+
+
+
+ MB
+ MB
+
+
+
+ bytes/sec
+ bytes/ç§
+
+
+
+ KB/sec
+ KB/ç§
+
+
+
+ MB/sec
+ MB/ç§
+
+
+
+ seconds
+ ç§
+
+
+
+ minutes
+ å
+
+
+
+ %4 %5 remaining
+ å©é¤ %4 %5
+
+
+
+ DownloadManager
+
+
+ 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
+ åå¾å®æ´ç
+
+
+
+ %1 downloaded in %2
+ %1 ä¸è¼å¨ %2
+
+
+
+ Download finished
+ ä¸è¼å®æ
+
+
+
+ %n Download(s)
+ %n ä¸è¼
+
+
+
+ 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
+ ä¸è¼
+
+
+
+ DownloadWidget
+
+
+ Downloading update...
+ ä¸è¼æ´æ°ä¸...
+
+
+
+ GlobalShortcuts
+
+
+ Play
+ ææ¾
+
+
+
+ Pause
+ æ«å
+
+
+
+ Play/Pause
+ ææ¾/æ«å
+
+
+
+ Stop
+ åæ¢
+
+
+
+ Stop playing after current track
+ å¨ç®åçæ²ç®ä¹å¾ï¼åæ¢ææ¾
+
+
+
+ Next track
+ ä¸ä¸é¦æ²ç®
+
+
+
+ Previous track
+ ä¸ä¸é¦æ²ç®
+
+
+
+ Increase volume
+ å¢å é³é
+
+
+
+ Decrease volume
+ æ¸å°é³é
+
+
+
+ Mute
+ éé³
+
+
+
+ Seek forward
+ å¿«è½
+
+
+
+ Seek backward
+ åè½
+
+
+
+ HomeView
+
+
+ Search
+ æå°
+
+
+
+ Find videos and channels by keyword
+ ç¨ééµåå°æ¾å½±çåé »é
+
+
+
+ Browse
+ ç覽
+
+
+
+ Browse videos by category
+ æé¡å¥ç覽影ç
+
+
+
+ Subscriptions
+ è¨é±
+
+
+
+ Channel subscriptions
+ é »éè¨é±
+
+
+
+ Make yourself comfortable
+ æ¨å¯ä»¥ç¡æ
享å
+
+
+
+ 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
+ åæè³å
¨è¢å¹
+
+
+
+ Hide the playlist and the toolbar
+ é±èææ¾æ¸
å®åå·¥å
·å
+
+
+
+ Go to the YouTube video page and pause playback
+ åå¾ YouTube å½±çé é¢ä¸¦ä¸æ«åææ¾
+
+
+
+ Copy the current video YouTube link to the clipboard
+ è¤è£½ç®å YouTube å½±ççé£çµå°åªè²¼ç°¿
+
+
+
+ Copy the current video stream URL to the clipboard
+ è¤è£½ç®åå½±ç串æµç¶²åå°åªè²¼ç°¿
+
+
+
+ Find other video parts hopefully in the right order
+ å¸æè½ä»¥æ£ç¢ºçé åºæ¾å°å
¶ä»å½±çé¨å
+
+
+
+ &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 the search history. Cannot be undone.
+ æ¸
é¤æå°æ·å²è¨éãä¸è½æ¤æ¶ã
+
+
+
+ &Quit
+ çµæ(&Q)
+
+
+
+ Bye
+ åè¦
+
+
+
+ &Website
+ 網ç«(&W)
+
+
+
+ %1 on the Web
+ å¨ç¶²çµ¡ä¸ç %1
+
+
+
+ Please support the continued development of %1
+ è«æ¯ææçºç¼å± %1
+
+
+
+ &About
+ éæ¼(&A)
+
+
+
+ Info about %1
+ æé %1 è¨æ¯
+
+
+
+ Search
+ æå°
+
+
+
+ Mute volume
+ éé³
+
+
+
+
+ &Downloads
+ ä¸è¼(&D)
+
+
+
+ Show details about video downloads
+ 顯示影çä¸è¼ç´°ç¯
+
+
+
+ &Download
+ ä¸è¼(&D)
+
+
+
+ Download the current video
+ ä¸è¼ç®åçå½±ç
+
+
+
+ &Subscribe to Channel
+ è¨é±é »é(&S)
+
+
+
+ Share the current video using %1
+ å享ç®åçå½±çä½¿ç¨ %1
+
+
+
+ &Email
+ é»åéµä»¶(&E)
+
+
+
+ Email
+ é»åéµä»¶
+
+
+
+ &Close
+ éé(&C)
+
+
+
+ &Float on Top
+ æµ®å¨ä¸é¢(&F)
+
+
+
+ &Stop After This Video
+ å¨éåå½±çæå®ä¹å¾åæ¢(&S)
+
+
+
+ &Report an Issue...
+ åå ±åé¡(&R)...
+
+
+
+ &Refine Search...
+ 精確æå°(&R)...
+
+
+
+ More...
+ æ´å¤...
+
+
+
+ &Related Videos
+ ç¸éå½±ç(&R)
+
+
+
+ Watch videos related to the current one
+ è§çåç®åç¸éçå½±ç
+
+
+
+ Open in &Browser...
+
+
+
+
+ &Application
+ æç¨(&A)
+
+
+
+ Buy %1...
+ 購買 %1
+
+
+
+ &Playback
+ ææ¾(&P)
+
+
+
+ &Playlist
+ ææ¾æ¸
å®(&P)
+
+
+
+ &Video
+ å½±ç(&V)
+
+
+
+ &View
+ 檢è¦(&V)
+
+
+
+ &Share
+ å享(&S)
+
+
+
+ &Help
+ 幫å©(&H)
+
+
+
+ Press %1 to raise the volume, %2 to lower it
+ æ %1 æé«é³éï¼%2 éä½é³é
+
+
+
+
+ Opening %1
+ éå %1
+
+
+
+ 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
+ çå¾
ä¸è¼å®æ
+
+
+
+ Leave &Full Screen
+ é¢éå
¨è¢å¹(&F)
+
+
+
+ %1 version %2 is now available.
+ ç¾å¨æ %1 çæ¬ %2 å¯ç¨ã
+
+
+
+ Remind me later
+ ç¨åæéæ
+
+
+
+ Update
+ æ´æ°
+
+
+
+ Error: %1
+ é¯èª¤ï¼%1
+
+
+
+ P&revious
+ ä¸ä¸å(&R)
+
+
+
+ Go back to the previous track
+ åå°ä¸ä¸åå½±ç
+
+
+
+ &Compact Mode
+ 精簡模å¼(&C)
+
+
+
+ Open the &YouTube Page
+ éå &YouTube é é¢
+
+
+
+ Copy the YouTube &Link
+ è¤è£½ YouTube çé£çµ(&L)
+
+
+
+ Copy the Video Stream &URL
+ è¤è£½å½±ç串æµç¶²å(&U)
+
+
+
+ Find Video &Parts
+ æ¾å°å
¶ä»å½±çé¨å(&P)
+
+
+
+ &Clear Recent Searches
+ æ¸
é¤æè¿çæå°(&C)
+
+
+
+ Make a &Donation
+ è´å©(&D)
+
+
+
+ &Manually Start Playing
+ æåååææ¾(&M)
+
+
+
+ Manually start playing videos
+ æåååææ¾å½±ç
+
+
+
+ Choose your content location
+ é¸ææ¨çå
§å®¹å®ä½
+
+
+
+ &Play
+ ææ¾(&P)
+
+
+
+ Resume playback
+ æ¢å¾©ææ¾
+
+
+
+ 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 complete
+ ä¸è¼å®æ
+
+
+
+ MediaView
+
+
+ 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.
+ éåé£çµå°åªå¨æéçæéå
§ææã
+
+
+
+ This is just the demo version of %1.
+ éå
å
æ¯å±ç¤ºçç %1ã
+
+
+
+ It allows you to test the application and see if it works for you.
+ å®å¯ä»¥è®æ¨æ¸¬è©¦æç¨ç¨å¼ï¼çå®æ¯å¦é©åæ¨ã
+
+
+
+ Continue
+ ç¹¼çº
+
+
+
+ of
+ Used in video parts, as in '2 of 3'
+ /
+
+
+
+ part
+ This is for video parts, as in 'Cool video - part 1'
+ é¨å
+
+
+
+ episode
+ This is for video parts, as in 'Cool series - episode 1'
+ é
+
+
+
+ Sent from %1
+ å¾ %1 ç¼é
+
+
+
+ Unsubscribe from %1
+ åæ¶è¨é± %1
+
+
+
+ Subscribe to %1
+ è¨é± %1
+
+
+
+ Get the full version
+ åå¾å®æ´ç
+
+
+
+ Downloading %1
+ æ£å¨ä¸è¼ %1
+
+
+
+ MessageWidget
+
+
+ A new version of %1 is available!
+ ææ°çæ¬ç %1 å¯ç¨
+
+
+
+ %1 %2 is now available. You have %3.
+ %1 %2 ç¾å¨å¯ç¨ãæ¨æ %3.
+
+
+
+ Would you like to download it now?
+ æ¨æ³ç¾å¨å°±ä¸è¼åï¼
+
+
+
+ Skip This Version
+ è·³éæ¤çæ¬
+
+
+
+ Remind Me Later
+ ç¨åæéæ
+
+
+
+ Install Update
+ å®è£æ´æ°
+
+
+
+ PasteLineEdit
+
+
+ Paste
+ è²¼ä¸
+
+
+
+ PlaylistItemDelegate
+
+
+ %1 views
+ ç覽次æ¸ï¼%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
+ éæ°ååä¸è¼
+
+
+
+ PlaylistModel
+
+
+ Searching...
+ æå°ä¸...
+
+
+
+ Show %1 More
+ 顯示åå¤ %1åå½±ç
+
+
+
+ No videos
+ æ²æå½±ç
+
+
+
+ No more videos
+ æ²ææ´å¤çå½±ç
+
+
+
+ RefineSearchWidget
+
+
+ Sort by
+ æåºæ ¹æ
+
+
+
+ Relevance
+ ç¸éæ§
+
+
+
+
+ Date
+ æ¥æ
+
+
+
+ View Count
+ è§ç次æ¸
+
+
+
+ Rating
+ è©å¹
+
+
+
+ Anytime
+ ä»»ä½æé
+
+
+
+ Today
+ ä»å¤©
+
+
+
+ 7 Days
+ 7天
+
+
+
+ 30 Days
+ 30天
+
+
+
+ Duration
+ é·ç
+
+
+
+
+ All
+ ææ
+
+
+
+ Short
+ ç
+
+
+
+ Medium
+ ä¸
+
+
+
+ Long
+ é·
+
+
+
+ Less than 4 minutes
+ ä¸å°4åé
+
+
+
+ Between 4 and 20 minutes
+ ä»æ¼4å20åé
+
+
+
+ Longer than 20 minutes
+ è¶
é20åé
+
+
+
+ Quality
+ å質
+
+
+
+ High Definition
+ é«ç«è³ª
+
+
+
+ 720p or higher
+ 720pææ´é«
+
+
+
+ Done
+ å®æ
+
+
+
+ RegionsView
+
+
+ Done
+ å®æ
+
+
+
+ SearchLineEdit
+
+
+ Search
+ æå°
+
+
+
+ SearchView
+
+
+ Welcome to <a href='%1'>%2</a>,
+ æ¡è¿ä½¿ç¨ <a href='%1'>%2</a>,
+
+
+
+ Get the full version
+ åå¾å®æ´ç
+
+
+
+ Enter
+ "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos"
+ 輸å
¥
+
+
+
+ a keyword
+ ä¸åééµå
+
+
+
+ a channel
+ ä¸åé »é
+
+
+
+ to start watching videos.
+ 以éå§è§çå½±çã
+
+
+
+ Watch
+ è§ç
+
+
+
+ Recent keywords
+ æè¿çééµå
+
+
+
+ Recent channels
+ æè¿çé »é
+
+
+
+ SidebarHeader
+
+
+
+ &Back
+ å¾é(&B)
+
+
+
+ Forward to %1
+ ååå° %1
+
+
+
+ Back to %1
+ éå¾å° %1
+
+
+
+ SidebarWidget
+
+
+ Refine Search
+ 精確æå°
+
+
+
+ Did you mean: %1
+ æ¨çæææ¯ï¼%1
+
+
+
+ StandardFeedsView
+
+
+ Most Popular
+ æç±é
+
+
+
+ Most Shared
+ å享æå¤
+
+
+
+ Most Discussed
+ è¨è«æå¤
+
+
+
+ Top Rated
+ è©åæé«
+
+
+
+ All Time Popular
+ 總æ¯åæ¡è¿
+
+
+
+ Video
+
+
+ Cannot get video stream for %1
+ ç¡æ³çº %1 ç²å¾å½±ç串æµ
+
+
+
+ Network error: %1 for %2
+ 網路é¯èª¤ï¼%1 çºäº %2
+
+
+
+ YTRegions
+
+
+ Algeria
+ é¿ç¾åå©äº
+
+
+
+ Argentina
+ é¿æ ¹å»·
+
+
+
+ Australia
+ 澳大å©äº
+
+
+
+ Belgium
+ æ¯å©æ
+
+
+
+ Brazil
+ 巴西
+
+
+
+ Canada
+ å æ¿å¤§
+
+
+
+ Chile
+ æºå©
+
+
+
+ Colombia
+ å¥å«æ¯äº
+
+
+
+ Czech Republic
+ æ·å
å
±åå
+
+
+
+ Egypt
+ åå
+
+
+
+ France
+ æ³å
+
+
+
+ Germany
+ å¾·å
+
+
+
+ Ghana
+ å ç´
+
+
+
+ Greece
+ å¸è
+
+
+
+ Hong Kong
+ é¦æ¸¯
+
+
+
+ Hungary
+ åçå©
+
+
+
+ India
+ å°åº¦
+
+
+
+ Indonesia
+ å°å°¼
+
+
+
+ Ireland
+ æç¾è
+
+
+
+ Israel
+ 以è²å
+
+
+
+ Italy
+ æ大å©
+
+
+
+ Japan
+ æ¥æ¬
+
+
+
+ Jordan
+ ç´æ¦
+
+
+
+ Kenya
+ è¯äº
+
+
+
+ Malaysia
+ 馬ä¾è¥¿äº
+
+
+
+ Mexico
+ 墨西å¥
+
+
+
+ Morocco
+ æ©æ´å¥
+
+
+
+ Netherlands
+ è·è
+
+
+
+ New Zealand
+ ç´è¥¿è
+
+
+
+ Nigeria
+ å¥åå©äº
+
+
+
+ Peru
+ ç§é¯
+
+
+
+ Philippines
+ è²å¾è³
+
+
+
+ Poland
+ æ³¢è
+
+
+
+ Russia
+ ä¿ç¾
æ¯
+
+
+
+ Saudi Arabia
+ æ²çå°é¿æ伯
+
+
+
+ Singapore
+ æ°å å¡
+
+
+
+ South Africa
+ åé
+
+
+
+ South Korea
+ åé
+
+
+
+ Spain
+ 西çç
+
+
+
+ Sweden
+ çå
¸
+
+
+
+ Taiwan
+ å°ç£
+
+
+
+ Tunisia
+ çªå°¼è¥¿äº
+
+
+
+ Turkey
+ åè³å
¶
+
+
+
+ Uganda
+ çå¹²é
+
+
+
+ United Arab Emirates
+ é¿æ伯è¯å大å
Œ
+
+
+
+ United Kingdom
+ è±å
+
+
+
+ Yemen
+ èé
+
+
+
+ Worldwide
+ å
¨ä¸ç
+
+
+
\ No newline at end of file
diff --git a/minitube.pro b/minitube.pro
index 836142d..40fb16d 100644
--- a/minitube.pro
+++ b/minitube.pro
@@ -1,6 +1,6 @@
CONFIG += release
TEMPLATE = app
-VERSION = 2.0
+VERSION = 2.1.3
DEFINES += APP_VERSION="$$VERSION"
APP_NAME = Minitube
@@ -9,12 +9,12 @@ DEFINES += APP_NAME="$$APP_NAME"
APP_UNIX_NAME = minitube
DEFINES += APP_UNIX_NAME="$$APP_UNIX_NAME"
-DEFINES += QT_USE_FAST_CONCATENATION
-DEFINES += QT_USE_FAST_OPERATOR_PLUS
+DEFINES *= QT_NO_DEBUG_OUTPUT
+DEFINES *= QT_USE_QSTRINGBUILDER
DEFINES += QT_STRICT_ITERATORS
TARGET = minitube
-QT += network xml phonon
+QT += network xml phonon sql script
include(src/qtsingleapplication/qtsingleapplication.pri)
HEADERS += \
src/video.h \
@@ -56,7 +56,6 @@ HEADERS += \
src/mediaview.h \
src/searchview.h \
src/view.h \
- src/userview.h \
src/playlistmodel.h \
src/videosource.h \
src/ytsearch.h \
@@ -71,7 +70,18 @@ HEADERS += \
src/ytsinglevideosource.h \
src/sidebarheader.h \
src/utils.h \
- src/diskcache.h
+ src/diskcache.h \
+ src/gridwidget.h \
+ src/painterutils.h \
+ src/database.h \
+ src/ytuser.h \
+ src/channelaggregator.h \
+ src/channelmodel.h \
+ src/aggregatevideosource.h \
+ src/channelview.h \
+ src/channelitemdelegate.h \
+ src/jsfunctions.h \
+ src/seekslider.h
SOURCES += src/main.cpp \
src/searchlineedit.cpp \
src/urllineedit.cpp \
@@ -108,7 +118,6 @@ SOURCES += src/main.cpp \
src/mediaview.cpp \
src/aboutview.cpp \
src/searchview.cpp \
- src/userview.cpp \
src/playlistitemdelegate.cpp \
src/playlistmodel.cpp \
src/videosource.cpp \
@@ -124,7 +133,18 @@ SOURCES += src/main.cpp \
src/ytsinglevideosource.cpp \
src/sidebarheader.cpp \
src/utils.cpp \
- src/diskcache.cpp
+ src/diskcache.cpp \
+ src/gridwidget.cpp \
+ src/painterutils.cpp \
+ src/database.cpp \
+ src/ytuser.cpp \
+ src/channelaggregator.cpp \
+ src/channelmodel.cpp \
+ src/aggregatevideosource.cpp \
+ src/channelview.cpp \
+ src/channelitemdelegate.cpp \
+ src/jsfunctions.cpp \
+ src/seekslider.cpp
RESOURCES += resources.qrc
DESTDIR = build/target/
OBJECTS_DIR = build/obj/
@@ -185,4 +205,4 @@ unix:!mac {
icon512.path = $$DATADIR/icons/hicolor/512x512/apps
icon512.files += data/512x512/minitube.png
}
-mac|win32:include(local/local.pri)
+mac|win32|contains(DEFINES, APP_UBUNTU):include(local/local.pri)
diff --git a/resources.qrc b/resources.qrc
index cf89be9..2f15768 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -55,5 +55,13 @@
flags/ye.png
style.css
images/worldwide.png
+ images/show-updated.png
+ images/sort.png
+ images/mark-watched.png
+ images/channels.png
+ images/unwatched.png
+ images/badge.png
+ images/badge3.png
+ images/badge4.png
diff --git a/src/Suggester.h b/src/Suggester.h
index ad39f92..e14492f 100644
--- a/src/Suggester.h
+++ b/src/Suggester.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SUGGESTER_H
#define SUGGESTER_H
diff --git a/src/aboutview.cpp b/src/aboutview.cpp
index 4ab0fb9..f173a38 100644
--- a/src/aboutview.cpp
+++ b/src/aboutview.cpp
@@ -1,6 +1,26 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "aboutview.h"
#include "constants.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
#ifdef APP_ACTIVATION
@@ -38,7 +58,7 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
info += "" + tr("Licensed to: %1").arg("" + Activation::instance().getEmail() + " ");
#endif
-#ifdef Q_WS_X11
+#ifndef APP_EXTRA
info += "
" + tr("%1 is Free Software but its development takes precious time.").arg(Constants::NAME) + " "
+ tr("Please donate to support the continued development of %2.")
.arg(QString(Constants::WEBSITE).append("#donate"), Constants::NAME) + "
";
@@ -65,7 +85,7 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
+ tr("Icon designed by %1.").arg("David Nel ")
+ "
"
- #ifdef Q_WS_X11
+ #ifndef APP_EXTRA
"" + tr("Released under the GNU General Public License ")
.arg("http://www.gnu.org/licenses/gpl.html") + "
"
#endif
@@ -81,10 +101,9 @@ AboutView::AboutView(QWidget *parent) : QWidget(parent) {
buttonLayout->setSpacing(0);
buttonLayout->setAlignment(Qt::AlignLeft);
- QPushButton *closeButton = new QPushButton(tr("&Close"), this);
+ closeButton = new QPushButton(tr("&Close"));
closeButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
closeButton->setDefault(true);
- closeButton->setFocus(Qt::OtherFocusReason);
connect(closeButton, SIGNAL(clicked()), parent, SLOT(goBack()));
buttonLayout->addWidget(closeButton);
@@ -111,4 +130,5 @@ void AboutView::appear() {
mac::CheckForUpdates();
#endif
#endif
+ closeButton->setFocus();
}
diff --git a/src/aboutview.h b/src/aboutview.h
index 912c63c..14c0bd1 100644
--- a/src/aboutview.h
+++ b/src/aboutview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef ABOUTVIEW_H
#define ABOUTVIEW_H
@@ -24,5 +44,8 @@ public:
protected:
void paintEvent(QPaintEvent *);
+private:
+ QPushButton *closeButton;
+
};
#endif
diff --git a/src/aggregatevideosource.cpp b/src/aggregatevideosource.cpp
new file mode 100644
index 0000000..55e72dc
--- /dev/null
+++ b/src/aggregatevideosource.cpp
@@ -0,0 +1,79 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "aggregatevideosource.h"
+#include "video.h"
+#include "database.h"
+#include
+
+AggregateVideoSource::AggregateVideoSource(QObject *parent) :
+ VideoSource(parent),
+ unwatched(false) { }
+
+void AggregateVideoSource::loadVideos(int max, int skip) {
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ QString sql = "select v.video_id,"
+ "v.published,"
+ "v.title,"
+ "v.author,"
+ "v.user_id,"
+ "v.description,"
+ "v.url,"
+ "v.thumb_url,"
+ "v.views,"
+ "v.duration";
+ if (unwatched)
+ sql += " from subscriptions_videos v, subscriptions s where v.channel_id=s.id "
+ "and v.added>s.watched and v.published>s.watched and v.watched=0 "
+ "order by v.published desc ";
+ else
+ sql += " from subscriptions_videos v order by published desc ";
+ sql += "limit ?,?";
+ query.prepare(sql);
+ query.bindValue(0, skip - 1);
+ query.bindValue(1, max);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ QList videos;
+ while (query.next()) {
+ Video *video = new Video();
+ video->setId(query.value(0).toString());
+ video->setPublished(QDateTime::fromTime_t(query.value(1).toUInt()));
+ video->setTitle(query.value(2).toString());
+ video->setAuthor(query.value(3).toString());
+ video->setUserId(query.value(4).toString());
+ video->setDescription(query.value(5).toString());
+ video->setWebpage(query.value(6).toString());
+ video->setThumbnailUrl(query.value(7).toString());
+ video->setViewCount(query.value(8).toInt());
+ video->setDuration(query.value(9).toInt());
+ videos << video;
+ }
+ emit gotVideos(videos);
+ emit finished(videos.size());
+}
+
+const QStringList & AggregateVideoSource::getSuggestions() {
+ QStringList *l = new QStringList();
+ return *l;
+}
+
+void AggregateVideoSource::abort() { }
diff --git a/src/aggregatevideosource.h b/src/aggregatevideosource.h
new file mode 100644
index 0000000..49de4a0
--- /dev/null
+++ b/src/aggregatevideosource.h
@@ -0,0 +1,46 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef AGGREGATEVIDEOSOURCE_H
+#define AGGREGATEVIDEOSOURCE_H
+
+#include
+#include "videosource.h"
+
+class AggregateVideoSource : public VideoSource {
+
+ Q_OBJECT
+
+public:
+ AggregateVideoSource(QObject *parent = 0);
+ void loadVideos(int max, int skip);
+ virtual void abort();
+ virtual const QStringList & getSuggestions();
+ QString getName() { return name; }
+ void setName(QString name) { this->name = name; }
+ void setUnwatched(bool enable) { unwatched = enable; }
+
+private:
+ QString name;
+ bool unwatched;
+
+};
+
+#endif // AGGREGATEVIDEOSOURCE_H
diff --git a/src/autocomplete.cpp b/src/autocomplete.cpp
index ac09e9c..f915408 100644
--- a/src/autocomplete.cpp
+++ b/src/autocomplete.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "autocomplete.h"
#include "suggester.h"
#ifdef APP_MAC
diff --git a/src/autocomplete.h b/src/autocomplete.h
index 0f0e267..17a5953 100644
--- a/src/autocomplete.h
+++ b/src/autocomplete.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SUGGESTCOMPLETION_H
#define SUGGESTCOMPLETION_H
diff --git a/src/channelaggregator.cpp b/src/channelaggregator.cpp
new file mode 100644
index 0000000..f27f23e
--- /dev/null
+++ b/src/channelaggregator.cpp
@@ -0,0 +1,279 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "channelaggregator.h"
+#include "ytuser.h"
+#include "ytsearch.h"
+#include "searchparams.h"
+#include "database.h"
+#include "video.h"
+#ifdef APP_MAC
+#include "macutils.h"
+#endif
+
+ChannelAggregator::ChannelAggregator(QObject *parent) : QObject(parent),
+ unwatchedCount(-1),
+ running(false),
+ stopped(false) {
+ QSettings settings;
+ checkInterval = settings.value("subscriptionsCheckInterval", 1800).toUInt();
+
+ timer = new QTimer(this);
+ timer->setInterval(60000 * 5);
+ connect(timer, SIGNAL(timeout()), SLOT(run()));
+}
+
+ChannelAggregator* ChannelAggregator::instance() {
+ static ChannelAggregator* i = new ChannelAggregator();
+ return i;
+}
+
+void ChannelAggregator::start() {
+ updateUnwatchedCount();
+ QTimer::singleShot(0, this, SLOT(run()));
+ timer->start();
+}
+
+void ChannelAggregator::stop() {
+ timer->stop();
+ stopped = true;
+}
+
+YTUser* ChannelAggregator::getChannelToCheck() {
+ if (stopped) return 0;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("select user_id from subscriptions where checked "
+ "order by checked limit 1");
+ query.bindValue(0, QDateTime::currentDateTime().toTime_t() - checkInterval);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (query.next())
+ return YTUser::forId(query.value(0).toString());
+ return 0;
+}
+
+void ChannelAggregator::run() {
+ if (running) return;
+ if (stopped) return;
+ if (!Database::exists()) return;
+ running = true;
+ newVideoCount = 0;
+ updatedChannels.clear();
+ if (!Database::instance().getConnection().transaction())
+ qWarning() << "Transaction failed" << __PRETTY_FUNCTION__;
+ processNextChannel();
+}
+
+void ChannelAggregator::processNextChannel() {
+ if (stopped) return;
+ qApp->processEvents();
+ YTUser* user = getChannelToCheck();
+ if (user) {
+ SearchParams *params = new SearchParams();
+ params->setAuthor(user->getUserId());
+ params->setSortBy(SearchParams::SortByNewest);
+ params->setTransient(true);
+ YTSearch *videoSource = new YTSearch(params, this);
+ connect(videoSource, SIGNAL(gotVideos(QList)),
+ SLOT(videosLoaded(QList)));
+ videoSource->loadVideos(10, 1);
+ user->updateChecked();
+ } else finish();
+}
+
+void ChannelAggregator::finish() {
+ foreach (YTUser *user, updatedChannels)
+ if (user->updateNotifyCount())
+ emit channelChanged(user);
+
+ updateUnwatchedCount();
+
+ QSqlDatabase db = Database::instance().getConnection();
+ if (!db.commit())
+ qWarning() << "Commit failed" << __PRETTY_FUNCTION__;
+ /*
+ QByteArray b = db.databaseName().right(20).toLocal8Bit();
+ const char* s = b.constData();
+ const int l = strlen(s);
+ int t = 1;
+ for (int i = 0; i < l; i++)
+ t += t % 2 ? s[i] / l : s[i] / t;
+ if (t != s[0]) return;
+ */
+
+#ifdef Q_WS_MAC
+ if (newVideoCount > 0 && unwatchedCount > 0 && mac::canNotify()) {
+ QString channelNames;
+ const int total = updatedChannels.size();
+ for (int i = 0; i < total; ++i) {
+ YTUser *user = updatedChannels.at(i);
+ channelNames += user->getDisplayName();
+ if (i < total-1) channelNames.append(", ");
+ }
+ channelNames = tr("By %1").arg(channelNames);
+ int actualNewVideoCount = qMin(newVideoCount, unwatchedCount);
+ mac::notify(tr("You have %n new video(s)", "", actualNewVideoCount),
+ channelNames, QString());
+ }
+#endif
+
+ running = false;
+}
+
+void ChannelAggregator::videosLoaded(QList videos) {
+ sender()->deleteLater();
+ foreach (Video* video, videos) {
+ qApp->processEvents();
+ addVideo(video);
+ video->deleteLater();
+ }
+ processNextChannel();
+}
+
+void ChannelAggregator::updateUnwatchedCount() {
+ if (!Database::exists()) return;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("select sum(notify_count) from subscriptions");
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (!query.next()) return;
+ int newUnwatchedCount = query.value(0).toInt();
+ if (newUnwatchedCount != unwatchedCount) {
+ unwatchedCount = newUnwatchedCount;
+ emit unwatchedCountChanged(unwatchedCount);
+ }
+}
+
+void ChannelAggregator::addVideo(Video *video) {
+ QSqlDatabase db = Database::instance().getConnection();
+
+ QSqlQuery query(db);
+ query.prepare("select count(*) from subscriptions_videos where video_id=?");
+ query.bindValue(0, video->id());
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (!query.next()) return;
+ int count = query.value(0).toInt();
+ if (count > 0) return;
+
+ // qDebug() << "Inserting" << video->author() << video->title();
+
+ QString userId = video->userId();
+ YTUser *user = YTUser::forId(userId);
+ if (!updatedChannels.contains(user))
+ updatedChannels << user;
+ int channelId = user->getId();
+
+ uint now = QDateTime::currentDateTime().toTime_t();
+ uint published = video->published().toTime_t();
+ if (published > now) {
+ qDebug() << "fixing publish time";
+ published = now;
+ }
+
+ query = QSqlQuery(db);
+ query.prepare("insert into subscriptions_videos "
+ "(video_id,channel_id,published,added,watched,"
+ "title,author,user_id,description,url,thumb_url,views,duration) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?)");
+ query.bindValue(0, video->id());
+ query.bindValue(1, channelId);
+ query.bindValue(2, published);
+ query.bindValue(3, now);
+ query.bindValue(4, 0);
+ query.bindValue(5, video->title());
+ query.bindValue(6, video->author());
+ query.bindValue(7, video->userId());
+ query.bindValue(8, video->description());
+ query.bindValue(9, video->webpage());
+ query.bindValue(10, video->thumbnailUrl());
+ query.bindValue(11, video->viewCount());
+ query.bindValue(12, video->duration());
+ success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ newVideoCount++;
+
+ query = QSqlQuery(db);
+ query.prepare("update subscriptions set updated=? where user_id=?");
+ query.bindValue(0, published);
+ query.bindValue(1, userId);
+ success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+}
+
+void ChannelAggregator::markAllAsWatched() {
+ uint now = QDateTime::currentDateTime().toTime_t();
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions set watched=?, notify_count=0");
+ query.bindValue(0, now);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ unwatchedCount = 0;
+
+ foreach (YTUser *user, YTUser::getCachedUsers()) {
+ user->setWatched(now);
+ user->setNotifyCount(0);
+ }
+
+ emit unwatchedCountChanged(0);
+}
+
+void ChannelAggregator::videoWatched(Video *video) {
+ if (!Database::exists()) return;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions_videos set watched=? where video_id=?");
+ query.bindValue(0, QDateTime::currentDateTime().toTime_t());
+ query.bindValue(1, video->id());
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (query.numRowsAffected() > 0) {
+ YTUser *user = YTUser::forId(video->userId());
+ user->updateNotifyCount();
+ }
+}
+
+void ChannelAggregator::cleanup() {
+ static const int maxVideos = 1000;
+ static const int maxDeletions = 1000;
+ if (!Database::exists()) return;
+ QSqlDatabase db = Database::instance().getConnection();
+
+ QSqlQuery query(db);
+ bool success = query.exec("select count(*) from subscriptions_videos");
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (!query.next()) return;
+ int count = query.value(0).toInt();
+ if (count <= maxVideos) return;
+
+ query = QSqlQuery(db);
+ query.prepare("delete from subscriptions_videos where id in "
+ "(select id from subscriptions_videos "
+ "order by published desc limit ?,?)");
+ query.bindValue(0, maxVideos);
+ query.bindValue(1, maxDeletions);
+ success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+}
diff --git a/src/channelaggregator.h b/src/channelaggregator.h
new file mode 100644
index 0000000..966fa70
--- /dev/null
+++ b/src/channelaggregator.h
@@ -0,0 +1,71 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef CHANNELAGGREGATOR_H
+#define CHANNELAGGREGATOR_H
+
+#include
+
+class YTUser;
+class Video;
+
+class ChannelAggregator : public QObject {
+
+ Q_OBJECT
+
+public:
+ static ChannelAggregator* instance();
+ int getUnwatchedCount() { return unwatchedCount; }
+ void markAllAsWatched();
+ void videoWatched(Video *video);
+ void cleanup();
+
+public slots:
+ void start();
+ void stop();
+ void run();
+
+signals:
+ void channelChanged(YTUser*);
+ void unwatchedCountChanged(int count);
+
+private slots:
+ void videosLoaded(QList videos);
+
+private:
+ ChannelAggregator(QObject *parent = 0);
+ YTUser* getChannelToCheck();
+ void processNextChannel();
+ void addVideo(Video* video);
+ void updateUnwatchedCount();
+ void finish();
+
+ uint checkInterval;
+ int unwatchedCount;
+ bool running;
+
+ int newVideoCount;
+ QList updatedChannels;
+
+ QTimer *timer;
+ bool stopped;
+};
+
+#endif // CHANNELAGGREGATOR_H
diff --git a/src/channelitemdelegate.cpp b/src/channelitemdelegate.cpp
new file mode 100644
index 0000000..b06e861
--- /dev/null
+++ b/src/channelitemdelegate.cpp
@@ -0,0 +1,167 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "channelitemdelegate.h"
+#include "channelmodel.h"
+#include "ytuser.h"
+#include "fontutils.h"
+#include "channelaggregator.h"
+#include "painterutils.h"
+
+static const int ITEM_WIDTH = 128;
+static const int ITEM_HEIGHT = 128;
+static const int THUMB_WIDTH = 88;
+static const int THUMB_HEIGHT = 88;
+
+ChannelItemDelegate::ChannelItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {
+
+}
+
+QSize ChannelItemDelegate::sizeHint(const QStyleOptionViewItem& /*option*/,
+ const QModelIndex& /*index*/ ) const {
+ return QSize(ITEM_WIDTH, ITEM_HEIGHT);
+}
+
+void ChannelItemDelegate::paint( QPainter* painter,
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index ) const {
+ const int itemType = index.data(ChannelModel::ItemTypeRole).toInt();
+ if (itemType == ChannelModel::ItemChannel)
+ paintChannel(painter, option, index);
+ else if (itemType == ChannelModel::ItemAggregate)
+ paintAggregate(painter, option, index);
+ else if (itemType == ChannelModel::ItemUnwatched)
+ paintUnwatched(painter, option, index);
+ else
+ QStyledItemDelegate::paint(painter, option, index);
+}
+
+void ChannelItemDelegate::paintAggregate(QPainter* painter,
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index) const {
+ painter->save();
+
+ painter->translate(option.rect.topLeft());
+ const QRect line(0, 0, option.rect.width(), option.rect.height());
+
+ static const QPixmap thumbnail = QPixmap(":/images/channels.png");
+
+ QString name = tr("All Videos");
+
+ drawItem(painter, line, thumbnail, name);
+
+ painter->restore();
+}
+
+void ChannelItemDelegate::paintUnwatched(QPainter* painter,
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index) const {
+ painter->save();
+
+ painter->translate(option.rect.topLeft());
+ const QRect line(0, 0, option.rect.width(), option.rect.height());
+
+ static const QPixmap thumbnail = QPixmap(":/images/unwatched.png");
+
+ QString name = tr("Unwatched Videos");
+
+ drawItem(painter, line, thumbnail, name);
+
+ int notifyCount = ChannelAggregator::instance()->getUnwatchedCount();
+ QString notifyText = QString::number(notifyCount);
+ if (notifyCount > 0) paintBadge(painter, line, notifyText);
+
+ painter->restore();
+}
+
+void ChannelItemDelegate::paintChannel(QPainter* painter,
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index) const {
+ const QVariant dataObject = index.data(ChannelModel::DataObjectRole);
+ const YTUserPointer channelPointer = dataObject.value();
+ YTUser *user = channelPointer.data();
+ if (!user) return;
+
+ painter->save();
+
+ painter->translate(option.rect.topLeft());
+ const QRect line(0, 0, option.rect.width(), option.rect.height());
+
+ // const bool isActive = index.data( ActiveItemRole ).toBool();
+ // const bool isHovered = index.data(ChannelsModel::HoveredItemRole ).toBool();
+ // const bool isSelected = option.state & QStyle::State_Selected;
+
+ QPixmap thumbnail = user->getThumbnail();
+ if (thumbnail.isNull()) {
+ user->loadThumbnail();
+ painter->restore();
+ return;
+ }
+
+ QString name = user->getDisplayName();
+ drawItem(painter, line, thumbnail, name);
+
+ int notifyCount = user->getNotifyCount();
+ if (notifyCount > 0)
+ paintBadge(painter, line, QString::number(notifyCount));
+
+ painter->restore();
+}
+
+void ChannelItemDelegate::drawItem(QPainter *painter,
+ const QRect &line,
+ const QPixmap &thumbnail,
+ const QString &name) const {
+ painter->drawPixmap((line.width() - THUMB_WIDTH) / 2, 8, thumbnail);
+
+ QRect nameBox = line;
+ nameBox.adjust(0, 0, 0, -THUMB_HEIGHT - 16);
+ nameBox.translate(0, line.height() - nameBox.height());
+ bool tooBig = false;
+
+ QRect textBox = painter->boundingRect(nameBox,
+ Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap,
+ name);
+ if (textBox.height() > nameBox.height() || textBox.width() > nameBox.width()) {
+ painter->setFont(FontUtils::small());
+ textBox = painter->boundingRect(nameBox,
+ Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap,
+ name);
+ if (textBox.height() > nameBox.height()) {
+ painter->setClipRect(nameBox);
+ tooBig = true;
+ }
+ }
+ if (tooBig)
+ painter->drawText(nameBox, Qt::AlignHCenter | Qt::AlignTop | Qt::TextWordWrap, name);
+ else
+ painter->drawText(textBox, Qt::AlignCenter | Qt::TextWordWrap, name);
+}
+
+void ChannelItemDelegate::paintBadge(QPainter *painter,
+ const QRect &line,
+ const QString &text) const {
+ const int topLeft = (line.width() + THUMB_WIDTH) / 2;
+ painter->save();
+ painter->translate(topLeft, 0);
+ painter->setClipping(false);
+ PainterUtils::paintBadge(painter, text, true);
+ painter->restore();
+}
diff --git a/src/channelitemdelegate.h b/src/channelitemdelegate.h
new file mode 100644
index 0000000..6e5543a
--- /dev/null
+++ b/src/channelitemdelegate.h
@@ -0,0 +1,45 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef CHANNELITEMDELEGATE_H
+#define CHANNELITEMDELEGATE_H
+
+#include
+
+class ChannelItemDelegate : public QStyledItemDelegate {
+
+ Q_OBJECT
+
+public:
+ ChannelItemDelegate(QObject* parent = 0);
+ QSize sizeHint(const QStyleOptionViewItem&, const QModelIndex&) const;
+ void paint(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const;
+
+private:
+ void paintChannel(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const;
+ void paintAggregate(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const;
+ void paintUnwatched(QPainter*, const QStyleOptionViewItem&, const QModelIndex&) const;
+ void paintBadge(QPainter *painter, const QRect &line, const QString &text) const;
+ void drawItem(QPainter *painter, const QRect &line,
+ const QPixmap &thumbnail, const QString &name) const;
+
+};
+
+#endif // CHANNELITEMDELEGATE_H
diff --git a/src/channelmodel.cpp b/src/channelmodel.cpp
new file mode 100644
index 0000000..2aa6c43
--- /dev/null
+++ b/src/channelmodel.cpp
@@ -0,0 +1,129 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "channelmodel.h"
+#include "ytuser.h"
+
+static const int channelOffset = 2;
+
+ChannelModel::ChannelModel(QObject *parent) :
+ QAbstractListModel(parent),
+ hoveredRow(-1) { }
+
+
+int ChannelModel::rowCount(const QModelIndex &) const {
+ return channels.isEmpty() ? 0 : channelOffset + channels.size();
+}
+
+QVariant ChannelModel::data(const QModelIndex &index, int role) const {
+ switch (role) {
+
+ case ChannelModel::ItemTypeRole:
+ return typeForIndex(index);
+
+ case ChannelModel::DataObjectRole:
+ if (typeForIndex(index) == ChannelModel::ItemChannel)
+ return QVariant::fromValue(QPointer(userForIndex(index)));
+ break;
+
+ case ChannelModel::HoveredItemRole:
+ return hoveredRow == index.row();
+
+ case Qt::StatusTipRole:
+ if (typeForIndex(index) == ChannelModel::ItemChannel)
+ return userForIndex(index)->getDescription();
+
+ }
+
+ return QVariant();
+}
+
+YTUser* ChannelModel::userForIndex(const QModelIndex &index) const {
+ return channels.at(index.row() - channelOffset);
+}
+
+ChannelModel::ItemTypes ChannelModel::typeForIndex(const QModelIndex &index) const {
+ switch (index.row()) {
+ case 0:
+ return ChannelModel::ItemAggregate;
+ case 1:
+ return ChannelModel::ItemUnwatched;
+ default:
+ return ChannelModel::ItemChannel;
+ }
+}
+
+void ChannelModel::setQuery(const QString &query, const QSqlDatabase &db) {
+ channels.clear();
+ sqlError = QSqlError();
+
+ QSqlQuery q(db);
+ q.prepare(query);
+ bool success = q.exec();
+ if (!success) {
+ qWarning() << q.lastQuery() << q.lastError().text();
+ sqlError = q.lastError();
+ }
+ while (q.next()) {
+ YTUser *user = YTUser::forId(q.value(0).toString());
+ connect(user, SIGNAL(thumbnailLoaded()), SLOT(updateSender()), Qt::UniqueConnection);
+ channels << user;
+ }
+
+ reset();
+}
+
+QSqlError ChannelModel::lastError() const {
+ return sqlError;
+}
+
+void ChannelModel::updateSender() {
+ YTUser *user = static_cast(sender());
+ if (!user) {
+ qWarning() << "Cannot get sender" << __PRETTY_FUNCTION__;
+ return;
+ }
+ updateChannel(user);
+}
+
+void ChannelModel::updateChannel(YTUser *user) {
+ int row = channels.indexOf(user);
+ if (row == -1) return;
+ row += channelOffset;
+ QModelIndex i = createIndex(row, 0);
+ emit dataChanged(i, i);
+}
+
+void ChannelModel::updateUnwatched() {
+ QModelIndex i = createIndex(1, 0);
+ emit dataChanged(i, i);
+}
+
+void ChannelModel::setHoveredRow(int row) {
+ int oldRow = hoveredRow;
+ hoveredRow = row;
+ emit dataChanged( createIndex( oldRow, 0 ), createIndex( oldRow, 0 ) );
+ emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, 0 ) );
+}
+
+void ChannelModel::clearHover() {
+ emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, 0 ) );
+ hoveredRow = -1;
+}
diff --git a/src/channelmodel.h b/src/channelmodel.h
new file mode 100644
index 0000000..3d89d4d
--- /dev/null
+++ b/src/channelmodel.h
@@ -0,0 +1,70 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef CHANNELMODEL_H
+#define CHANNELMODEL_H
+
+#include
+#include
+
+class YTUser;
+
+class ChannelModel : public QAbstractListModel {
+
+ Q_OBJECT
+
+public:
+ ChannelModel(QObject *parent = 0);
+
+ enum DataRoles {
+ ItemTypeRole = Qt::UserRole,
+ DataObjectRole,
+ HoveredItemRole
+ };
+
+ enum ItemTypes {
+ ItemChannel = 1,
+ ItemAggregate,
+ ItemUnwatched
+ };
+
+ void setQuery(const QString &query, const QSqlDatabase &db);
+ QSqlError lastError() const;
+ ItemTypes typeForIndex(const QModelIndex &index) const;
+ YTUser* userForIndex(const QModelIndex &index) const;
+ void setHoveredRow(int row);
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role) const;
+
+public slots:
+ void clearHover();
+ void updateSender();
+ void updateChannel(YTUser *user);
+ void updateUnwatched();
+
+private:
+ QList channels;
+ int hoveredRow;
+ QSqlError sqlError;
+
+};
+
+#endif // CHANNELMODEL_H
diff --git a/src/channelsuggest.cpp b/src/channelsuggest.cpp
index 757c534..6d0d1ff 100644
--- a/src/channelsuggest.cpp
+++ b/src/channelsuggest.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "channelsuggest.h"
#include "networkaccess.h"
diff --git a/src/channelsuggest.h b/src/channelsuggest.h
index 85cbef9..c4bdec9 100644
--- a/src/channelsuggest.h
+++ b/src/channelsuggest.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef CHANNELSUGGEST_H
#define CHANNELSUGGEST_H
diff --git a/src/channelview.cpp b/src/channelview.cpp
new file mode 100644
index 0000000..eba0591
--- /dev/null
+++ b/src/channelview.cpp
@@ -0,0 +1,301 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "channelview.h"
+#include "ytuser.h"
+#include "ytsearch.h"
+#include "searchparams.h"
+#include "channelmodel.h"
+#include "channelitemdelegate.h"
+#include "database.h"
+#include "ytsearch.h"
+#include "channelaggregator.h"
+#include "aggregatevideosource.h"
+#include "painterutils.h"
+#include "mainwindow.h"
+#include "utils.h"
+#ifdef APP_EXTRA
+#include "extra.h"
+#endif
+
+static const char *sortByKey = "subscriptionsSortBy";
+static const char *showUpdatedKey = "subscriptionsShowUpdated";
+
+ChannelView::ChannelView(QWidget *parent) : QListView(parent),
+ showUpdated(false),
+ sortBy(SortByName) {
+
+ setItemDelegate(new ChannelItemDelegate(this));
+ setSelectionMode(QAbstractItemView::NoSelection);
+
+ // layout
+ setSpacing(15);
+ setFlow(QListView::LeftToRight);
+ setWrapping(true);
+ setResizeMode(QListView::Adjust);
+ setMovement(QListView::Static);
+ setUniformItemSizes(true);
+
+ // cosmetics
+ setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
+ setFrameShape(QFrame::NoFrame);
+ setAttribute(Qt::WA_MacShowFocusRect, false);
+
+ QPalette p = palette();
+ /*
+ p.setColor(QPalette::Base, p.window().color());
+ p.setColor(QPalette::Text, p.windowText().color());
+ */
+ p.setColor(QPalette::Disabled, QPalette::Base, p.base().color());
+ p.setColor(QPalette::Disabled, QPalette::Text, p.text().color());
+ setPalette(p);
+
+ verticalScrollBar()->setPageStep(3);
+ verticalScrollBar()->setSingleStep(1);
+
+ setMouseTracking(true);
+
+ connect(this, SIGNAL(clicked(const QModelIndex &)),
+ SLOT(itemActivated(const QModelIndex &)));
+ connect(this, SIGNAL(entered(const QModelIndex &)),
+ SLOT(itemEntered(const QModelIndex &)));
+
+ channelsModel = new ChannelModel(this);
+ setModel(channelsModel);
+ connect(this, SIGNAL(viewportEntered()),
+ channelsModel, SLOT(clearHover()));
+
+ setupActions();
+
+ connect(ChannelAggregator::instance(), SIGNAL(channelChanged(YTUser*)),
+ channelsModel, SLOT(updateChannel(YTUser*)));
+ connect(ChannelAggregator::instance(), SIGNAL(unwatchedCountChanged(int)),
+ SLOT(unwatchedCountChanged(int)));
+
+ unwatchedCountChanged(ChannelAggregator::instance()->getUnwatchedCount());
+}
+
+void ChannelView::setupActions() {
+ QSettings settings;
+
+ markAsWatchedAction = new QAction(
+ Utils::icon("mark-watched"), tr("Mark all as watched"), this);
+ markAsWatchedAction->setEnabled(false);
+ markAsWatchedAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_W));
+ connect(markAsWatchedAction, SIGNAL(triggered()), SLOT(markAllAsWatched()));
+ statusActions << markAsWatchedAction;
+
+ showUpdated = settings.value(showUpdatedKey, false).toBool();
+ QAction *showUpdatedAction = new QAction(
+ Utils::icon("show-updated"), tr("Show Updated"), this);
+ showUpdatedAction->setCheckable(true);
+ showUpdatedAction->setChecked(showUpdated);
+ showUpdatedAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_U));
+ connect(showUpdatedAction, SIGNAL(toggled(bool)), SLOT(toggleShowUpdated(bool)));
+ statusActions << showUpdatedAction;
+
+ SortBy sortBy = static_cast(settings.value(sortByKey, SortByName).toInt());
+
+ QMenu *sortMenu = new QMenu(this);
+ QActionGroup *sortGroup = new QActionGroup(this);
+
+ QAction *sortByNameAction = new QAction(tr("Name"), this);
+ sortByNameAction->setActionGroup(sortGroup);
+ sortByNameAction->setCheckable(true);
+ if (sortBy == SortByName) sortByNameAction->setChecked(true);
+ connect(sortByNameAction, SIGNAL(triggered()), SLOT(setSortByName()));
+ sortMenu->addAction(sortByNameAction);
+
+ QAction *sortByUpdatedAction = new QAction(tr("Last Updated"), this);
+ sortByUpdatedAction->setActionGroup(sortGroup);
+ sortByUpdatedAction->setCheckable(true);
+ if (sortBy == SortByUpdated) sortByUpdatedAction->setChecked(true);
+ connect(sortByUpdatedAction, SIGNAL(triggered()), SLOT(setSortByUpdated()));
+ sortMenu->addAction(sortByUpdatedAction);
+
+ QAction *sortByAddedAction = new QAction(tr("Last Added"), this);
+ sortByAddedAction->setActionGroup(sortGroup);
+ sortByAddedAction->setCheckable(true);
+ if (sortBy == SortByAdded) sortByAddedAction->setChecked(true);
+ connect(sortByAddedAction, SIGNAL(triggered()), SLOT(setSortByAdded()));
+ sortMenu->addAction(sortByAddedAction);
+
+ QAction *sortByLastWatched = new QAction(tr("Last Watched"), this);
+ sortByLastWatched->setActionGroup(sortGroup);
+ sortByLastWatched->setCheckable(true);
+ if (sortBy == SortByLastWatched) sortByLastWatched->setChecked(true);
+ connect(sortByLastWatched, SIGNAL(triggered()), SLOT(setSortByLastWatched()));
+ sortMenu->addAction(sortByLastWatched);
+
+ QAction *sortByMostWatched = new QAction(tr("Most Watched"), this);
+ sortByMostWatched->setActionGroup(sortGroup);
+ sortByMostWatched->setCheckable(true);
+ if (sortBy == SortByMostWatched) sortByMostWatched->setChecked(true);
+ connect(sortByMostWatched, SIGNAL(triggered()), SLOT(setSortByMostWatched()));
+ sortMenu->addAction(sortByMostWatched);
+
+ QToolButton *sortButton = new QToolButton(this);
+ sortButton->setText(tr("Sort by"));
+ sortButton->setIcon(Utils::icon("sort"));
+ sortButton->setIconSize(QSize(16, 16));
+ sortButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ sortButton->setPopupMode(QToolButton::InstantPopup);
+ sortButton->setMenu(sortMenu);
+ QWidgetAction *widgetAction = new QWidgetAction(this);
+ widgetAction->setDefaultWidget(sortButton);
+ widgetAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_O));
+ statusActions << widgetAction;
+
+ foreach (QAction *action, statusActions) {
+ window()->addAction(action);
+ Utils::setupAction(action);
+ }
+}
+
+void ChannelView::appear() {
+ updateQuery();
+ foreach (QAction* action, statusActions)
+ MainWindow::instance()->showActionInStatusBar(action, true);
+ setFocus();
+ ChannelAggregator::instance()->run();
+}
+
+void ChannelView::disappear() {
+ foreach (QAction* action, statusActions)
+ MainWindow::instance()->showActionInStatusBar(action, false);
+}
+
+void ChannelView::mouseMoveEvent(QMouseEvent *event) {
+ QListView::mouseMoveEvent(event);
+ const QModelIndex index = indexAt(event->pos());
+ if (index.isValid()) setCursor(Qt::PointingHandCursor);
+ else unsetCursor();
+}
+
+void ChannelView::leaveEvent(QEvent *event) {
+ QListView::leaveEvent(event);
+ // channelsModel->clearHover();
+}
+
+void ChannelView::itemEntered(const QModelIndex &index) {
+ // channelsModel->setHoveredRow(index.row());
+}
+
+void ChannelView::itemActivated(const QModelIndex &index) {
+ ChannelModel::ItemTypes itemType = channelsModel->typeForIndex(index);
+ if (itemType == ChannelModel::ItemChannel) {
+ YTUser *user = channelsModel->userForIndex(index);
+ SearchParams *params = new SearchParams();
+ params->setAuthor(user->getUserId());
+ params->setSortBy(SearchParams::SortByNewest);
+ params->setTransient(true);
+ YTSearch *videoSource = new YTSearch(params, this);
+ emit activated(videoSource);
+ user->updateWatched();
+ } else if (itemType == ChannelModel::ItemAggregate) {
+ AggregateVideoSource *videoSource = new AggregateVideoSource(this);
+ videoSource->setName(tr("All Videos"));
+ emit activated(videoSource);
+ } else if (itemType == ChannelModel::ItemUnwatched) {
+ AggregateVideoSource *videoSource = new AggregateVideoSource(this);
+ videoSource->setName(tr("Unwatched Videos"));
+ videoSource->setUnwatched(true);
+ emit activated(videoSource);
+ }
+}
+
+void ChannelView::paintEvent(QPaintEvent *event) {
+ if (model()->rowCount() < 3) {
+ QString msg;
+ if (!errorMessage.isEmpty())
+ msg = errorMessage;
+ else if (showUpdated)
+ msg = tr("There are no updated subscriptions at this time.");
+ else
+ msg = tr("You have no subscriptions. "
+ "Use the star symbol to subscribe to channels.");
+ PainterUtils::centeredMessage(msg, viewport());
+ } else QListView::paintEvent(event);
+ PainterUtils::topShadow(viewport());
+}
+
+void ChannelView::toggleShowUpdated(bool enable) {
+ showUpdated = enable;
+ updateQuery(true);
+ QSettings settings;
+ settings.setValue(showUpdatedKey, showUpdated);
+}
+
+void ChannelView::updateQuery(bool transition) {
+ errorMessage.clear();
+ if (!Database::exists()) return;
+
+ QString sql = "select user_id from subscriptions";
+ if (showUpdated)
+ sql += " where notify_count>0";
+
+ switch (sortBy) {
+ case SortByUpdated:
+ sql += " order by updated desc";
+ break;
+ case SortByAdded:
+ sql += " order by added desc";
+ break;
+ case SortByLastWatched:
+ sql += " order by watched desc";
+ break;
+ case SortByMostWatched:
+ sql += " order by views desc";
+ break;
+ default:
+ sql += " order by name collate nocase";
+ break;
+ }
+
+#ifdef APP_EXTRA
+ if (transition)
+ Extra::fadeInWidget(this, this);
+#endif
+
+ channelsModel->setQuery(sql, Database::instance().getConnection());
+ if (channelsModel->lastError().isValid()) {
+ qWarning() << channelsModel->lastError().text();
+ errorMessage = channelsModel->lastError().text();
+ }
+}
+
+void ChannelView::setSortBy(SortBy sortBy) {
+ this->sortBy = sortBy;
+ updateQuery(true);
+ QSettings settings;
+ settings.setValue(sortByKey, (int)sortBy);
+}
+
+void ChannelView::markAllAsWatched() {
+ ChannelAggregator::instance()->markAllAsWatched();
+ updateQuery();
+ markAsWatchedAction->setEnabled(false);
+}
+
+void ChannelView::unwatchedCountChanged(int count) {
+ markAsWatchedAction->setEnabled(count > 0);
+ channelsModel->updateUnwatched();
+ updateQuery();
+}
diff --git a/src/channelview.h b/src/channelview.h
new file mode 100644
index 0000000..a5013c9
--- /dev/null
+++ b/src/channelview.h
@@ -0,0 +1,84 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef CHANNELSVIEW_H
+#define CHANNELSVIEW_H
+
+#include
+#include "view.h"
+
+class VideoSource;
+class ChannelModel;
+
+class ChannelView : public QListView, public View {
+
+ Q_OBJECT
+
+public:
+ ChannelView(QWidget *parent = 0);
+
+signals:
+ void activated(VideoSource *videoSource);
+
+public slots:
+ void appear();
+ void disappear();
+
+protected:
+ void mouseMoveEvent(QMouseEvent *event);
+ void leaveEvent(QEvent *event);
+ void paintEvent(QPaintEvent *event);
+
+private:
+ enum SortBy {
+ SortByName = 0,
+ SortByAdded,
+ SortByUpdated,
+ SortByLastWatched,
+ SortByMostWatched
+ };
+
+private slots:
+ void itemEntered(const QModelIndex &index);
+ void itemActivated(const QModelIndex &index);
+ void toggleShowUpdated(bool enable);
+ void setSortBy(SortBy sortBy);
+ void setSortByName() { setSortBy(SortByName); }
+ void setSortByUpdated() { setSortBy(SortByUpdated); }
+ void setSortByAdded() { setSortBy(SortByAdded); }
+ void setSortByLastWatched() { setSortBy(SortByLastWatched); }
+ void setSortByMostWatched() { setSortBy(SortByMostWatched); }
+ void markAllAsWatched();
+ void unwatchedCountChanged(int count);
+
+private:
+ void updateQuery(bool transition = false);
+ void setupActions();
+
+ ChannelModel *channelsModel;
+ QList statusActions;
+ bool showUpdated;
+ SortBy sortBy;
+ QString errorMessage;
+ QAction *markAsWatchedAction;
+
+};
+
+#endif // CHANNELSVIEW_H
diff --git a/src/constants.cpp b/src/constants.cpp
index f065959..0a54292 100644
--- a/src/constants.cpp
+++ b/src/constants.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "constants.h"
#define STR(x) #x
diff --git a/src/constants.h b/src/constants.h
index 2e1f55f..a4cdc10 100644
--- a/src/constants.h
+++ b/src/constants.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef CONSTANTS_H
#define CONSTANTS_H
diff --git a/src/database.cpp b/src/database.cpp
new file mode 100644
index 0000000..37e8433
--- /dev/null
+++ b/src/database.cpp
@@ -0,0 +1,210 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "database.h"
+#include "constants.h"
+#include
+
+static const int DATABASE_VERSION = 1;
+static const QString dbName = QLatin1String(Constants::UNIX_NAME) + ".db";
+static Database *databaseInstance = 0;
+
+Database::Database() {
+
+ QString dataLocation = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
+ QDir().mkpath(dataLocation);
+ dbLocation = dataLocation + "/" + dbName;
+
+ QMutexLocker locker(&lock);
+
+ if(QFile::exists(dbLocation)) {
+ // check db version
+ int databaseVersion = getAttribute("version").toInt();
+ if (databaseVersion != DATABASE_VERSION)
+ qWarning("Wrong database version: %d", databaseVersion);
+ } else createDatabase();
+}
+
+Database::~Database() {
+ closeConnections();
+}
+
+void Database::createDatabase() {
+
+ qWarning() << "Creating the database";
+
+ const QSqlDatabase db = getConnection();
+
+ QSqlQuery("create table subscriptions ("
+ "id integer primary key autoincrement,"
+ "user_id varchar,"
+ "user_name varchar,"
+ "name varchar,"
+ "description varchar,"
+ "thumb_url varchar,"
+ "country varchar,"
+ "added integer,"
+ "checked integer," // last check for videos on YT APIs
+ "updated integer," // most recent video added
+ "watched integer," // last time the user watched this channel
+ "loaded integer," // last time channel metadata was loaded from YT APIs
+ "notify_count integer," // new videos since "watched"
+ "views integer)" // number of times the user watched this channel
+ , db);
+ QSqlQuery("create unique index idx_user_id on subscriptions(user_id)", db);
+
+ QSqlQuery("create table subscriptions_videos ("
+ "id integer primary key autoincrement,"
+ "video_id varchar,"
+ "channel_id integer,"
+ "published integer,"
+ "added integer,"
+ "watched integer,"
+ "title varchar,"
+ "author varchar,"
+ "user_id varchar,"
+ "description varchar,"
+ "url varchar,"
+ "thumb_url varchar,"
+ "views integer,"
+ "duration integer)"
+ , db);
+ QSqlQuery("create unique index idx_video_id on subscriptions_videos(video_id)", db);
+
+ QSqlQuery("create table attributes (name varchar, value)", db);
+ QSqlQuery("insert into attributes (name, value) values ('version', "
+ + QString::number(DATABASE_VERSION) + ")", db);
+}
+
+QString Database::getDbLocation() {
+ static QString dataLocation = QDesktopServices::storageLocation(
+ QDesktopServices::DataLocation);
+ return dataLocation + "/" + dbName;
+}
+
+bool Database::exists() {
+ static bool fileExists = false;
+ if (!fileExists)
+ fileExists = QFile::exists(getDbLocation());
+ return fileExists;
+}
+
+Database& Database::instance() {
+ static QMutex mutex;
+ QMutexLocker locker(&mutex);
+ if (!databaseInstance) databaseInstance = new Database();
+ return *databaseInstance;
+}
+
+QSqlDatabase Database::getConnection() {
+ QThread *currentThread = QThread::currentThread();
+ if (!currentThread) {
+ qDebug() << "current thread is null";
+ return QSqlDatabase();
+ }
+
+ const QString threadName = currentThread->objectName();
+ // qDebug() << "threadName" << threadName << currentThread;
+ if (connections.contains(currentThread)) {
+ return connections.value(currentThread);
+ } else {
+ // qDebug() << "Creating db connection for" << threadName;
+ QSqlDatabase connection = QSqlDatabase::addDatabase("QSQLITE", threadName);
+ connection.setDatabaseName(dbLocation);
+ if(!connection.open()) {
+ qWarning() << QString("Cannot connect to database %1 in thread %2").arg(dbLocation, threadName);
+ }
+ connections.insert(currentThread, connection);
+ return connection;
+ }
+}
+
+QVariant Database::getAttribute(QString name) {
+ QSqlQuery query("select value from attributes where name=?", getConnection());
+ query.bindValue(0, name);
+
+ bool success = query.exec();
+ if (!success) qDebug() << query.lastQuery() << query.boundValues().values() << query.lastError().text();
+ if (query.next())
+ return query.value(0);
+ return QVariant();
+}
+
+void Database::setAttribute(QString name, QVariant value) {
+ QSqlQuery query(getConnection());
+ query.prepare("update attributes set value=? where name=?");
+ query.bindValue(0, value);
+ query.bindValue(1, name);
+ bool success = query.exec();
+ if (!success) qDebug() << query.lastError().text();
+}
+
+/**
+ * After calling this method you have to reacquire a valid instance using instance()
+ */
+void Database::drop() {
+ /// closeConnections();
+ if (!QFile::remove(dbLocation)) {
+ qWarning() << "Cannot delete database" << dbLocation;
+
+ // fallback to delete records in tables
+ const QSqlDatabase db = getConnection();
+ QSqlQuery query(db);
+ if (!query.exec("select name from sqlite_master where type='table'")) {
+ qWarning() << query.lastQuery() << query.lastError().text();
+ }
+
+ while (query.next()) {
+ QString tableName = query.value(0).toString();
+ if (tableName.startsWith("sqlite_") || tableName == "attributes") continue;
+ QString dropSQL = "delete from " + tableName;
+ QSqlQuery query2(db);
+ if (!query2.exec(dropSQL))
+ qWarning() << query2.lastQuery() << query2.lastError().text();
+ }
+
+ query.exec("delete from sqlite_sequence");
+
+ }
+ if (databaseInstance) delete databaseInstance;
+ databaseInstance = 0;
+}
+
+void Database::closeConnections() {
+ foreach(QSqlDatabase connection, connections.values()) {
+ // qDebug() << "Closing connection" << connection;
+ connection.close();
+ }
+ connections.clear();
+}
+
+void Database::closeConnection() {
+ QThread *currentThread = QThread::currentThread();
+ if (!connections.contains(currentThread)) return;
+ QSqlDatabase connection = connections.take(currentThread);
+ // qDebug() << "Closing connection" << connection;
+ connection.close();
+}
+
+void Database::shutdown() {
+ if (!databaseInstance) return;
+ QSqlQuery("vacuum", databaseInstance->getConnection());
+ databaseInstance->closeConnections();
+}
diff --git a/src/database.h b/src/database.h
new file mode 100644
index 0000000..74ab8b7
--- /dev/null
+++ b/src/database.h
@@ -0,0 +1,54 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef DATABASE_H
+#define DATABASE_H
+
+#include
+#include
+
+class Database : public QObject {
+
+ Q_OBJECT
+
+public:
+ static bool exists();
+ static Database& instance();
+ static void shutdown();
+ QSqlDatabase getConnection();
+ ~Database();
+ void drop();
+ void closeConnections();
+ void closeConnection();
+
+private:
+ Database();
+ static QString getDbLocation();
+ void createDatabase();
+ QVariant getAttribute(QString name);
+ void setAttribute(QString name, QVariant value);
+
+ QMutex lock;
+ QString dbLocation;
+ QHash connections;
+
+};
+
+#endif // DATABASE_H
diff --git a/src/diskcache.cpp b/src/diskcache.cpp
index f6a45f6..36234d1 100644
--- a/src/diskcache.cpp
+++ b/src/diskcache.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "diskcache.h"
#include
diff --git a/src/diskcache.h b/src/diskcache.h
index 80791a6..1f3cdc9 100644
--- a/src/diskcache.h
+++ b/src/diskcache.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DISKCACHE_H
#define DISKCACHE_H
diff --git a/src/downloaditem.cpp b/src/downloaditem.cpp
index 0ff2396..9b79821 100644
--- a/src/downloaditem.cpp
+++ b/src/downloaditem.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloaditem.h"
#include "networkaccess.h"
#include "video.h"
@@ -19,6 +39,8 @@ DownloadItem::DownloadItem(Video *video, QUrl url, QString filename, QObject *pa
, m_startedSaving(false)
, m_finishedDownloading(false)
, m_url(url)
+ , m_offset(0)
+ , sendStatusChanges(true)
, m_file(filename)
, m_reply(0)
, video(video)
@@ -28,6 +50,9 @@ DownloadItem::DownloadItem(Video *video, QUrl url, QString filename, QObject *pa
speedCheckTimer->setInterval(2000);
speedCheckTimer->setSingleShot(true);
connect(speedCheckTimer, SIGNAL(timeout()), SLOT(speedCheck()));
+
+ if (m_file.exists())
+ m_file.remove();
}
DownloadItem::~DownloadItem() {
@@ -41,8 +66,70 @@ DownloadItem::~DownloadItem() {
}
}
+bool DownloadItem::needsDownload(qint64 offset) {
+ return offset < m_offset || offset > m_offset + m_bytesReceived;
+}
+
+bool DownloadItem::isBuffered(qint64 offset) {
+ QMap::iterator i;
+ for (i = buffers.begin(); i != buffers.end(); ++i) {
+ if (offset >= i.key() && offset <= i.value()) {
+ // qDebug() << "Buffered! " << i.key() << ":" << i.value();
+ return true;
+ }
+ }
+ // qDebug() << offset << "is not buffered";
+ return false;
+}
+
+qint64 DownloadItem::blankAtOffset(qint64 offset) {
+ // qDebug() << buffers;
+ QMap::iterator i;
+ for (i = buffers.begin(); i != buffers.end(); ++i) {
+ if (offset >= i.key() && offset <= i.value()) {
+ // qDebug() << "Offset was" << offset << "now" << i.value();
+ return i.value() + 1;
+ }
+ }
+ return offset;
+}
+
+void DownloadItem::seekTo(qint64 offset, bool sendStatusChanges) {
+ // qDebug() << __PRETTY_FUNCTION__ << offset << sendStatusChanges;
+ stop();
+ if (m_bytesReceived > 0) {
+ bool bufferModified = false;
+ QMap::iterator i;
+ for (i = buffers.begin(); i != buffers.end(); ++i) {
+ if (m_offset - 1 <= i.value()) {
+ /*
+ qDebug() << "Extending existing buffer "
+ << i.key() << i.value() << "now" << m_offset + m_bytesReceived;
+ */
+ bufferModified = true;
+ i.value() = m_offset + m_bytesReceived;
+ break;
+ }
+ }
+ if (!bufferModified)
+ buffers.insert(m_offset, m_offset + m_bytesReceived);
+ }
+ m_offset = offset;
+ this->sendStatusChanges = sendStatusChanges;
+ bool seekSuccess = m_file.seek(offset);
+ if (!seekSuccess) {
+ qWarning() << "Cannot seek to offset" << offset << "in file" << m_file.fileName();
+ return;
+ }
+ start();
+}
+
void DownloadItem::start() {
- m_reply = The::http()->request(m_url);
+ // qDebug() << "Starting download at" << m_offset;
+ if (m_offset > 0)
+ m_reply = The::http()->request(m_url, QNetworkAccessManager::GetOperation, QByteArray(), m_offset);
+ else
+ m_reply = The::http()->request(m_url);
init();
}
@@ -50,11 +137,8 @@ void DownloadItem::init() {
if (!m_reply)
return;
- if (m_file.exists())
- m_file.remove();
-
m_status = Starting;
-
+ m_bytesReceived = 0;
m_startedSaving = false;
m_finishedDownloading = false;
@@ -127,6 +211,7 @@ void DownloadItem::downloadReadyRead() {
emit statusChanged();
}
+ // qWarning() << __PRETTY_FUNCTION__ << m_file.pos();
if (-1 == m_file.write(m_reply->readAll())) {
qWarning() << "Error saving." << m_file.errorString();
} else {
@@ -163,10 +248,7 @@ void DownloadItem::metaDataChanged() {
tryAgain();
return;
}
-
-#ifdef DOWNLOADMANAGER_DEBUG
- qDebug() << "DownloadItem::" << __FUNCTION__ << "not handled.";
-#endif
+ // qDebug() << m_reply->rawHeaderList();
}
int DownloadItem::initialBufferSize() {
@@ -184,13 +266,15 @@ int DownloadItem::initialBufferSize() {
void DownloadItem::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) {
- // qDebug() << bytesReceived << bytesTotal << m_downloadTime.elapsed();
+ // qDebug() << __PRETTY_FUNCTION__ << bytesReceived << bytesTotal << m_downloadTime.elapsed();
+
+ m_bytesReceived = bytesReceived;
+
+ if (!sendStatusChanges) return;
if (m_lastProgressTime.elapsed() < 150) return;
m_lastProgressTime.start();
- m_bytesReceived = bytesReceived;
-
if (m_status != Downloading) {
int neededBytes = (int) (bytesTotal * .005);
@@ -307,7 +391,7 @@ void DownloadItem::requestFinished() {
m_status = Downloading;
emit statusChanged();
}
- m_file.close();
+ if (m_offset == 0) m_file.close();
m_status = Finished;
m_totalTime = m_downloadTime.elapsed() / 1000.0;
emit statusChanged();
diff --git a/src/downloaditem.h b/src/downloaditem.h
index bb9245f..2c074f0 100644
--- a/src/downloaditem.h
+++ b/src/downloaditem.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADITEM_H
#define DOWNLOADITEM_H
@@ -41,6 +61,11 @@ public:
static QString formattedSpeed(double speed);
static QString formattedTime(double time, bool remaining = true);
QString errorMessage() const;
+ qint64 offset() const { return m_offset; }
+ bool needsDownload(qint64 offset);
+ bool isBuffered(qint64 offset);
+ qint64 blankAtOffset(qint64 offset);
+ void seekTo(qint64 offset, bool sendStatusChanges = true);
public slots:
void start();
@@ -72,6 +97,9 @@ private:
QUrl m_url;
+ qint64 m_offset;
+ bool sendStatusChanges;
+
QFile m_file;
QNetworkReply *m_reply;
Video *video;
@@ -81,6 +109,7 @@ private:
QTimer *speedCheckTimer;
+ QMap buffers;
};
// This is required in order to use QPointer as a QVariant
diff --git a/src/downloadlistview.cpp b/src/downloadlistview.cpp
index 4ebb34c..7a1fafd 100644
--- a/src/downloadlistview.cpp
+++ b/src/downloadlistview.cpp
@@ -1,6 +1,27 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloadlistview.h"
#include "downloadmodel.h"
#include "playlistitemdelegate.h"
+#include "painterutils.h"
DownloadListView::DownloadListView(QWidget *parent) : QListView(parent) {
@@ -57,3 +78,8 @@ bool DownloadListView::isHoveringPlayIcon(QMouseEvent *event) {
const int y = event->y() - itemRect.y() - buttonRect.y();
return x > 0 && x < buttonRect.width() && y > 0 && y < buttonRect.height();
}
+
+void DownloadListView::paintEvent(QPaintEvent *event) {
+ QListView::paintEvent(event);
+ PainterUtils::topShadow(viewport());
+}
diff --git a/src/downloadlistview.h b/src/downloadlistview.h
index 72f457a..59514c6 100644
--- a/src/downloadlistview.h
+++ b/src/downloadlistview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADLISTVIEW_H
#define DOWNLOADLISTVIEW_H
@@ -16,6 +36,7 @@ protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
bool isHoveringPlayIcon(QMouseEvent *event);
+ void paintEvent(QPaintEvent *event);
signals:
void downloadButtonPushed(QModelIndex index);
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 21115d3..33d2ada 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloadmanager.h"
#include "downloaditem.h"
#include "downloadmodel.h"
@@ -7,8 +27,8 @@
#ifdef APP_ACTIVATION
#include "activation.h"
#endif
-#ifdef Q_WS_MAC
-#include "macutils.h"
+#ifdef APP_EXTRA
+#include "extra.h"
#endif
static DownloadManager *downloadManagerInstance = 0;
@@ -103,9 +123,6 @@ void DownloadManager::gotStreamUrl(QUrl url) {
video->disconnect(this);
- QString path = currentDownloadFolder();
-
- // TODO ensure all chars are filename compatible
QString basename = video->title();
basename.replace('(', '[');
basename.replace(')', ']');
@@ -120,7 +137,12 @@ void DownloadManager::gotStreamUrl(QUrl url) {
basename.replace('*', ' ');
basename = basename.simplified();
- QString filename = path + "/" + basename + ".mp4";
+ if (!basename.isEmpty() && basename.at(0) == '.')
+ basename = basename.mid(1).trimmed();
+
+ if (basename.isEmpty()) basename = video->id();
+
+ QString filename = currentDownloadFolder() + "/" + basename + ".mp4";
Video *videoCopy = video->clone();
DownloadItem *item = new DownloadItem(videoCopy, url, filename, this);
@@ -138,8 +160,7 @@ void DownloadManager::gotStreamUrl(QUrl url) {
void DownloadManager::itemFinished() {
if (activeItems() == 0) emit finished();
-#ifdef Q_WS_MAC
- if (mac::canNotify()) {
+#ifdef APP_EXTRA
DownloadItem *item = static_cast(sender());
if (!item) {
qDebug() << "Cannot get item in" << __FUNCTION__;
@@ -150,8 +171,7 @@ void DownloadManager::itemFinished() {
QString stats = tr("%1 downloaded in %2").arg(
DownloadItem::formattedFilesize(item->bytesTotal()),
DownloadItem::formattedTime(item->totalTime(), false));
- mac::notify(tr("Download finished"), video->title(), stats);
- }
+ Extra::notify(tr("Download finished"), video->title(), stats);
#endif
}
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 789ee03..a07d7e3 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADMANAGER_H
#define DOWNLOADMANAGER_H
diff --git a/src/downloadmodel.cpp b/src/downloadmodel.cpp
index 2031d3f..d5d36e9 100644
--- a/src/downloadmodel.cpp
+++ b/src/downloadmodel.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloadmodel.h"
#include "downloadmanager.h"
#include "downloaditem.h"
diff --git a/src/downloadmodel.h b/src/downloadmodel.h
index 26a43de..7dd8f49 100644
--- a/src/downloadmodel.h
+++ b/src/downloadmodel.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADMODEL_H
#define DOWNLOADMODEL_H
diff --git a/src/downloadsettings.cpp b/src/downloadsettings.cpp
index d73182e..1afb2d5 100644
--- a/src/downloadsettings.cpp
+++ b/src/downloadsettings.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloadsettings.h"
#include "downloadmanager.h"
#include "mainwindow.h"
diff --git a/src/downloadsettings.h b/src/downloadsettings.h
index 968c8aa..f6d8e01 100644
--- a/src/downloadsettings.h
+++ b/src/downloadsettings.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADSETTINGS_H
#define DOWNLOADSETTINGS_H
diff --git a/src/downloadview.cpp b/src/downloadview.cpp
index 42db96b..2ad4763 100644
--- a/src/downloadview.cpp
+++ b/src/downloadview.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "downloadview.h"
#include "downloadmodel.h"
#include "downloadmanager.h"
diff --git a/src/downloadview.h b/src/downloadview.h
index 2ac7b3d..731c6f9 100644
--- a/src/downloadview.h
+++ b/src/downloadview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef DOWNLOADVIEW_H
#define DOWNLOADVIEW_H
diff --git a/src/fontutils.cpp b/src/fontutils.cpp
index b3418d6..5e3f3c1 100644
--- a/src/fontutils.cpp
+++ b/src/fontutils.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "fontutils.h"
static const int MIN_PIXEL_SIZE = 11;
diff --git a/src/fontutils.h b/src/fontutils.h
index 077b2d7..7048ea8 100644
--- a/src/fontutils.h
+++ b/src/fontutils.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef FONTUTILS_H
#define FONTUTILS_H
diff --git a/src/global.h b/src/global.h
index d2aad7a..6057a83 100644
--- a/src/global.h
+++ b/src/global.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef GLOBAL_H
#define GLOBAL_H
diff --git a/src/globalshortcutbackend.cpp b/src/globalshortcutbackend.cpp
index 8646b7a..910425a 100644
--- a/src/globalshortcutbackend.cpp
+++ b/src/globalshortcutbackend.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "globalshortcutbackend.h"
#include "globalshortcuts.h"
diff --git a/src/globalshortcutbackend.h b/src/globalshortcutbackend.h
index e6844bb..46edb7b 100644
--- a/src/globalshortcutbackend.h
+++ b/src/globalshortcutbackend.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef GLOBALSHORTCUTBACKEND_H
#define GLOBALSHORTCUTBACKEND_H
diff --git a/src/globalshortcuts.cpp b/src/globalshortcuts.cpp
index 39eda6d..e747322 100644
--- a/src/globalshortcuts.cpp
+++ b/src/globalshortcuts.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "globalshortcuts.h"
#include "globalshortcutbackend.h"
diff --git a/src/globalshortcuts.h b/src/globalshortcuts.h
index 62cd935..754ad74 100644
--- a/src/globalshortcuts.h
+++ b/src/globalshortcuts.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef GLOBALSHORTCUTS_H
#define GLOBALSHORTCUTS_H
diff --git a/src/gnomeglobalshortcutbackend.cpp b/src/gnomeglobalshortcutbackend.cpp
index 6fc3594..1b07d59 100644
--- a/src/gnomeglobalshortcutbackend.cpp
+++ b/src/gnomeglobalshortcutbackend.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "gnomeglobalshortcutbackend.h"
#include "globalshortcuts.h"
diff --git a/src/gnomeglobalshortcutbackend.h b/src/gnomeglobalshortcutbackend.h
index bf6dd89..4aecca4 100644
--- a/src/gnomeglobalshortcutbackend.h
+++ b/src/gnomeglobalshortcutbackend.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef GNOMEGLOBALSHORTCUTBACKEND_H
#define GNOMEGLOBALSHORTCUTBACKEND_H
diff --git a/src/gridwidget.cpp b/src/gridwidget.cpp
new file mode 100644
index 0000000..3e445aa
--- /dev/null
+++ b/src/gridwidget.cpp
@@ -0,0 +1,65 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "gridwidget.h"
+
+GridWidget::GridWidget(QWidget *parent) :
+ QWidget(parent),
+ hovered(false),
+ pressed(false) {
+ setCursor(Qt::PointingHandCursor);
+ setFocusPolicy(Qt::StrongFocus);
+}
+
+void GridWidget::mouseMoveEvent(QMouseEvent *event) {
+ QWidget::mouseMoveEvent(event);
+ hovered = rect().contains(event->pos());
+}
+
+void GridWidget::mousePressEvent(QMouseEvent *event) {
+ QWidget::mousePressEvent(event);
+ if (event->button() != Qt::LeftButton) return;
+ pressed = true;
+ update();
+}
+
+void GridWidget::mouseReleaseEvent(QMouseEvent *event) {
+ QWidget::mouseReleaseEvent(event);
+ if (event->button() != Qt::LeftButton) return;
+ pressed = false;
+ if (hovered) emit activated();
+}
+
+void GridWidget::leaveEvent(QEvent *event) {
+ QWidget::leaveEvent(event);
+ hovered = false;
+ update();
+}
+
+void GridWidget::enterEvent(QEvent *event) {
+ QWidget::enterEvent(event);
+ hovered = true;
+ update();
+}
+
+void GridWidget::keyReleaseEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Return)
+ emit activated();
+}
diff --git a/src/gridwidget.h b/src/gridwidget.h
new file mode 100644
index 0000000..25756ca
--- /dev/null
+++ b/src/gridwidget.h
@@ -0,0 +1,48 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef GRIDWIDGET_H
+#define GRIDWIDGET_H
+
+#include
+
+class GridWidget : public QWidget {
+
+ Q_OBJECT
+
+public:
+ GridWidget(QWidget *parent = 0);
+
+signals:
+ void activated();
+
+protected:
+ void mouseMoveEvent(QMouseEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+ void mouseReleaseEvent(QMouseEvent *event);
+ void enterEvent(QEvent *event);
+ void leaveEvent(QEvent *event);
+ void keyReleaseEvent(QKeyEvent *event);
+
+ bool hovered;
+ bool pressed;
+};
+
+#endif // GRIDWIDGET_H
diff --git a/src/homeview.cpp b/src/homeview.cpp
index 4ac091d..a3b5435 100644
--- a/src/homeview.cpp
+++ b/src/homeview.cpp
@@ -1,15 +1,40 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "homeview.h"
#include "segmentedcontrol.h"
#include "searchview.h"
#include "standardfeedsview.h"
-#include "userview.h"
+#include "channelview.h"
#include "mainwindow.h"
#include "mediaview.h"
#include "ytstandardfeed.h"
+#include "utils.h"
+#include "channelaggregator.h"
+#ifdef APP_MAC
+#include "macutils.h"
+#endif
-HomeView::HomeView(QWidget *parent) : QWidget(parent) {
- standardFeedsView = 0;
- userView = 0;
+HomeView::HomeView(QWidget *parent) : QWidget(parent),
+ standardFeedsView(0),
+ channelsView(0) {
QBoxLayout *layout = new QVBoxLayout(this);
layout->setMargin(0);
@@ -28,7 +53,7 @@ HomeView::HomeView(QWidget *parent) : QWidget(parent) {
}
void HomeView::setupBar() {
- bar = new SegmentedControl(this);
+ bar = new SegmentedControl();
QAction *action = new QAction(tr("Search"), this);
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_1));
@@ -43,22 +68,17 @@ void HomeView::setupBar() {
connect(action, SIGNAL(triggered()), SLOT(showStandardFeeds()));
bar->addAction(action);
- /*
- action = new QAction(tr("User"), this);
- action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_3));
- action->setStatusTip(tr("Your favorite videos, subscriptions and playlists"));
- connect(action, SIGNAL(triggered()), SLOT(showUser()));
- bar->addAction(action);
- */
+ subscriptionsAction = new QAction(tr("Subscriptions"), this);
+ subscriptionsAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_3));
+ subscriptionsAction->setStatusTip(tr("Channel subscriptions"));
+ connect(subscriptionsAction, SIGNAL(triggered()), SLOT(showChannels()));
+ bar->addAction(subscriptionsAction);
+ connect(ChannelAggregator::instance(), SIGNAL(unwatchedCountChanged(int)),
+ SLOT(unwatchedCountChanged(int)));
foreach (QAction* action, bar->actions()) {
- // action->setEnabled(false);
addAction(action);
- action->setAutoRepeat(false);
- if (!action->shortcut().isEmpty())
- action->setStatusTip(
- action->statusTip() + " (" +
- action->shortcut().toString(QKeySequence::NativeText) + ")");
+ Utils::setupAction(action);
}
}
@@ -70,8 +90,6 @@ void HomeView::showWidget(QWidget *widget) {
stackedWidget->setCurrentWidget(widget);
widget->setEnabled(true);
QMetaObject::invokeMethod(widget, "appear");
- bar->setCheckedAction(stackedWidget->currentIndex());
- // autoChosenView = false;
widget->setFocus();
}
@@ -85,6 +103,7 @@ void HomeView::disappear() {
void HomeView::showSearch() {
showWidget(searchView);
+ bar->setCheckedAction(0);
}
void HomeView::showStandardFeeds() {
@@ -96,12 +115,31 @@ void HomeView::showStandardFeeds() {
stackedWidget->addWidget(standardFeedsView);
}
showWidget(standardFeedsView);
+ bar->setCheckedAction(1);
+}
+
+void HomeView::showChannels() {
+ if (!channelsView) {
+ channelsView = new ChannelView();
+ connect(channelsView, SIGNAL(activated(VideoSource*)),
+ MainWindow::instance(),
+ SLOT(showMedia(VideoSource*)));
+ stackedWidget->addWidget(channelsView);
+ }
+ showWidget(channelsView);
+ bar->setCheckedAction(2);
}
-void HomeView::showUser() {
- if (!userView) {
- userView = new UserView(this);
- stackedWidget->addWidget(userView);
+void HomeView::unwatchedCountChanged(int count) {
+ QVariant v;
+ QString s;
+ if (count > 0) {
+ s = QString::number(count);
+ v = s;
}
- showWidget(userView);
+ subscriptionsAction->setProperty("notifyCount", v);
+ bar->update();
+#ifdef APP_MAC
+ mac::dockBadge(s);
+#endif
}
diff --git a/src/homeview.h b/src/homeview.h
index 2f9a8b1..168a610 100644
--- a/src/homeview.h
+++ b/src/homeview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef HOMEVIEW_H
#define HOMEVIEW_H
@@ -7,7 +27,7 @@
class SegmentedControl;
class SearchView;
class StandardFeedsView;
-class UserView;
+class ChannelView;
class HomeView : public QWidget, public View {
@@ -26,10 +46,11 @@ public:
SearchView* getSearchView() { return searchView; }
StandardFeedsView* getStandardFeedsView() { return standardFeedsView; }
-public slots:
+private slots:
void showSearch();
void showStandardFeeds();
- void showUser();
+ void showChannels();
+ void unwatchedCountChanged(int count);
private:
void setupBar();
@@ -38,7 +59,9 @@ private:
SearchView *searchView;
StandardFeedsView *standardFeedsView;
- UserView* userView;
+ ChannelView* channelsView;
+
+ QAction *subscriptionsAction;
};
diff --git a/src/jsfunctions.cpp b/src/jsfunctions.cpp
new file mode 100644
index 0000000..45070f1
--- /dev/null
+++ b/src/jsfunctions.cpp
@@ -0,0 +1,110 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "jsfunctions.h"
+#include "networkaccess.h"
+#include
+#include "constants.h"
+
+namespace The {
+NetworkAccess* http();
+}
+
+JsFunctions* JsFunctions::instance() {
+ static JsFunctions *i = new JsFunctions();
+ return i;
+}
+
+JsFunctions::JsFunctions(QObject *parent) : QObject(parent), engine(0) {
+ QFile file(jsPath());
+ if (file.exists()) {
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text))
+ parseJs(QString::fromUtf8(file.readAll()));
+ else
+ qWarning() << file.errorString() << file.fileName();
+ QFileInfo info(file);
+ if (info.lastModified().toTime_t() < QDateTime::currentDateTime().toTime_t() - 3600)
+ loadJs();
+ } else {
+ QFile resFile(QLatin1String(":/") + jsFilename());
+ resFile.open(QIODevice::ReadOnly | QIODevice::Text);
+ parseJs(QString::fromUtf8(resFile.readAll()));
+ loadJs();
+ }
+}
+
+void JsFunctions::parseJs(const QString &js) {
+ if (js.isEmpty()) return;
+ if (engine) delete engine;
+ engine = new QScriptEngine();
+ engine->evaluate(js);
+}
+
+const QLatin1String & JsFunctions::jsFilename() {
+ static const QLatin1String filename("functions.js");
+ return filename;
+}
+
+const QString & JsFunctions::jsPath() {
+ static const QString path(
+ QDesktopServices::storageLocation(QDesktopServices::DataLocation)
+ + "/" + jsFilename());
+ return path;
+}
+
+void JsFunctions::loadJs() {
+ QUrl url(QLatin1String(Constants::WEBSITE) + "-ws/" + jsFilename());
+ NetworkReply* reply = The::http()->get(url);
+ connect(reply, SIGNAL(data(QByteArray)), SLOT(gotJs(QByteArray)));
+ connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(errorJs(QNetworkReply*)));
+}
+
+void JsFunctions::gotJs(QByteArray bytes) {
+ parseJs(QString::fromUtf8(bytes));
+ QFile file(jsPath());
+ if (!file.open(QIODevice::WriteOnly))
+ qWarning() << file.errorString() << file.fileName();
+ QDataStream stream(&file);
+ stream.writeRawData(bytes.constData(), bytes.size());
+}
+
+void JsFunctions::errorJs(QNetworkReply *reply) {
+ qWarning() << "Cannot get" << jsFilename() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()
+ << reply->url().toString() << reply->errorString();
+}
+
+QString JsFunctions::evaluateFunction(const QString &function) {
+ if (!engine) return QString();
+ QScriptValue value = engine->evaluate(function);
+ if (value.isUndefined())
+ qWarning() << "Undefined result for" << function;
+ if (value.isError())
+ qWarning() << "Error in" << function << value.toString();
+
+ return value.toString();
+}
+
+QString JsFunctions::decryptSignature(const QString &s) {
+ return evaluateFunction("decryptSignature('" + s + "')");
+}
+
+QString JsFunctions::decryptAgeSignature(const QString &s) {
+ return evaluateFunction("decryptAgeSignature('" + s + "')");
+}
diff --git a/src/jsfunctions.h b/src/jsfunctions.h
new file mode 100644
index 0000000..31d7aac
--- /dev/null
+++ b/src/jsfunctions.h
@@ -0,0 +1,52 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef JSFUNCTIONS_H
+#define JSFUNCTIONS_H
+
+#include
+#include
+#include
+
+class JsFunctions : public QObject {
+
+ Q_OBJECT
+
+public:
+ static JsFunctions* instance();
+ QString decryptSignature(const QString &s);
+ QString decryptAgeSignature(const QString &s);
+
+private slots:
+ void gotJs(QByteArray bytes);
+ void errorJs(QNetworkReply *reply);
+
+private:
+ JsFunctions(QObject *parent = 0);
+ static const QLatin1String &jsFilename();
+ static const QString &jsPath();
+ void loadJs();
+ void parseJs(const QString &js);
+ QString evaluateFunction(const QString &function);
+
+ QScriptEngine *engine;
+};
+
+#endif // JSFUNCTIONS_H
diff --git a/src/loadingwidget.cpp b/src/loadingwidget.cpp
index 2b04b23..79efe0d 100644
--- a/src/loadingwidget.cpp
+++ b/src/loadingwidget.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "loadingwidget.h"
LoadingWidget::LoadingWidget(QWidget *parent) : QWidget(parent) {
@@ -9,7 +29,7 @@ LoadingWidget::LoadingWidget(QWidget *parent) : QWidget(parent) {
setAutoFillBackground(true);
- QBoxLayout *layout = new QVBoxLayout();
+ QBoxLayout *layout = new QVBoxLayout(this);
titleLabel = new QLabel(this);
titleLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
@@ -19,15 +39,12 @@ LoadingWidget::LoadingWidget(QWidget *parent) : QWidget(parent) {
titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layout->addWidget(titleLabel);
- QFont biggerFont;
- biggerFont.setPointSize(biggerFont.pointSize()*2);
-
descriptionLabel = new QLabel(this);
descriptionLabel->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
descriptionLabel->setPalette(p);
descriptionLabel->setForegroundRole(QPalette::Text);
descriptionLabel->setWordWrap(true);
- descriptionLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ descriptionLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
layout->addWidget(descriptionLabel);
progressBar = new QProgressBar(this);
@@ -40,15 +57,20 @@ LoadingWidget::LoadingWidget(QWidget *parent) : QWidget(parent) {
layout->addWidget(progressBar);
setMouseTracking(true);
-
- setLayout(layout);
}
void LoadingWidget::setVideo(Video *video) {
QFont titleFont;
+#ifdef APP_MAC
+ titleFont.setFamily("Helvetica");
+#endif
+#ifdef APP_WIN
+ titleFont.setFamily("Segoe UI Light");
+#endif
int smallerDimension = qMin(height(), width());
titleFont.setPixelSize(smallerDimension / 12);
+ titleFont.setHintingPreference(QFont::PreferNoHinting);
QFontMetrics fm(titleFont);
int textHeightInPixels = fm.height();
int spacing = textHeightInPixels / 2;
@@ -64,14 +86,15 @@ void LoadingWidget::setVideo(Video *video) {
titleLabel->setVisible(window()->height() > 100);
titleLabel->setFont(titleFont);
- static const int maxVideoLength = 256;
+ static const int maxDescLength = 256;
QString videoDesc = video->description();
- if (videoDesc.length() > maxVideoLength) {
- videoDesc.truncate(maxVideoLength-1);
+ if (videoDesc.length() > maxDescLength) {
+ videoDesc.truncate(maxDescLength-1);
videoDesc.append("...");
}
QFont descFont(titleFont);
descFont.setPixelSize(descFont.pixelSize() / 2);
+ descFont.setHintingPreference(QFont::PreferNoHinting);
descriptionLabel->setFont(descFont);
descriptionLabel->setText(videoDesc);
bool hiddenDesc = height() < 400;
diff --git a/src/loadingwidget.h b/src/loadingwidget.h
index 96a8b44..37021f4 100644
--- a/src/loadingwidget.h
+++ b/src/loadingwidget.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef LOADINGWIDGET_H
#define LOADINGWIDGET_H
diff --git a/src/main.cpp b/src/main.cpp
index 399e6f0..95e9f12 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,63 +1,36 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include
#include
#include "constants.h"
#include "mainwindow.h"
#include "searchparams.h"
#include "utils.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
#ifdef Q_WS_MAC
#include "mac_startup.h"
#endif
-#ifdef Q_WS_X11
-QString getThemeName() {
- QString themeName;
-
- QProcess process;
- process.start("dconf",
- QStringList() << "read" << "/org/gnome/desktop/interface/gtk-theme");
- if (process.waitForFinished()) {
- themeName = process.readAllStandardOutput();
- themeName = themeName.trimmed();
- themeName.remove('\'');
- if (!themeName.isEmpty()) return themeName;
- }
-
- QString rcPaths = QString::fromLocal8Bit(qgetenv("GTK2_RC_FILES"));
- if (!rcPaths.isEmpty()) {
- QStringList paths = rcPaths.split(QLatin1String(":"));
- foreach (const QString &rcPath, paths) {
- if (!rcPath.isEmpty()) {
- QFile rcFile(rcPath);
- if (rcFile.exists() && rcFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- QTextStream in(&rcFile);
- while(!in.atEnd()) {
- QString line = in.readLine();
- if (line.contains(QLatin1String("gtk-theme-name"))) {
- line = line.right(line.length() - line.indexOf(QLatin1Char('=')) - 1);
- line.remove(QLatin1Char('\"'));
- line = line.trimmed();
- themeName = line;
- break;
- }
- }
- }
- }
- if (!themeName.isEmpty())
- break;
- }
- }
-
- // Fall back to gconf
- if (themeName.isEmpty())
- themeName = QGtkStyle::getGConfString(QLatin1String("/desktop/gnome/interface/gtk_theme"));
-
- return themeName;
-}
-#endif
-
int main(int argc, char **argv) {
#ifdef Q_WS_MAC
@@ -76,18 +49,14 @@ int main(int argc, char **argv) {
app.setApplicationName(QLatin1String(Constants::NAME));
app.setOrganizationName(QLatin1String(Constants::ORG_NAME));
app.setOrganizationDomain(QLatin1String(Constants::ORG_DOMAIN));
+#ifndef APP_WIN
app.setWheelScrollLines(1);
+#endif
app.setAttribute(Qt::AA_DontShowIconsInMenus);
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
Extra::appSetup(&app);
#else
- bool isGtk = app.style()->metaObject()->className() == QLatin1String("QGtkStyle");
- if (isGtk) {
- app.setProperty("gtk", isGtk);
- QString themeName = getThemeName();
- app.setProperty("style", themeName);
- }
QFile cssFile(":/style.css");
cssFile.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(cssFile.readAll());
@@ -112,20 +81,14 @@ int main(int argc, char **argv) {
}
// qDebug() << "Using locale dir" << localeDir << locale;
QTranslator translator;
- translator.load(QLocale::system(), localeDir);
+ translator.load(QLocale::system(), QString(), QString(), localeDir);
app.installTranslator(&translator);
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
MainWindow mainWin;
- mainWin.setWindowTitle(Constants::NAME);
-
-#ifndef Q_WS_X11
- Extra::windowSetup(&mainWin);
-#else
- mainWin.setProperty("style", app.property("style"));
-#endif
+ mainWin.show();
-// no window icon on Mac
+ // no window icon on Mac
#ifndef APP_MAC
QIcon appIcon;
if (QDir(dataDir).exists()) {
@@ -135,7 +98,8 @@ int main(int argc, char **argv) {
const int iconSizes [] = { 16, 22, 32, 48, 64, 128, 256, 512 };
for (int i = 0; i < 8; i++) {
QString size = QString::number(iconSizes[i]);
- QString png = dataDir + "/" + size + "x" + size + "/" + Constants::UNIX_NAME + ".png";
+ QString png = dataDir + "/" + size + "x" + size + "/" +
+ Constants::UNIX_NAME + ".png";
appIcon.addFile(png, QSize(iconSizes[i], iconSizes[i]));
}
}
@@ -145,26 +109,13 @@ int main(int argc, char **argv) {
mainWin.setWindowIcon(appIcon);
#endif
- mainWin.connect(&app, SIGNAL(messageReceived(const QString &)), &mainWin, SLOT(messageReceived(const QString &)));
+ mainWin.connect(&app, SIGNAL(messageReceived(const QString &)),
+ &mainWin, SLOT(messageReceived(const QString &)));
app.setActivationWindow(&mainWin, true);
// all string literals are UTF-8
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
- if (app.arguments().size() > 1) {
- QString query = app.arguments().at(1);
- if (query.startsWith(QLatin1String("--"))) {
- mainWin.messageReceived(query);
- return 0;
- } else {
- SearchParams *searchParams = new SearchParams();
- searchParams->setKeywords(query);
- mainWin.showMedia(searchParams);
- }
- }
-
- mainWin.show();
-
// Seed random number generator
qsrand(QDateTime::currentDateTime().toTime_t());
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index bb815c0..3392ff2 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "mainwindow.h"
#include "homeview.h"
#include "searchview.h"
@@ -33,7 +53,7 @@
#include "searchlineedit.h"
#endif
#include
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#include "updatedialog.h"
#endif
@@ -45,6 +65,11 @@
#include "ytregions.h"
#include "regionsview.h"
#include "standardfeedsview.h"
+#include "channelaggregator.h"
+#include "database.h"
+#include "videoareawidget.h"
+#include "jsfunctions.h"
+#include "seekslider.h"
static MainWindow *singleton = 0;
@@ -60,7 +85,8 @@ MainWindow::MainWindow() :
regionsView(0),
mediaObject(0),
audioOutput(0),
- m_fullscreen(false) {
+ m_fullscreen(false),
+ m_compact(false) {
singleton = this;
@@ -71,7 +97,7 @@ MainWindow::MainWindow() :
setCentralWidget(views);
// views
- homeView = new HomeView(this);
+ homeView = new HomeView();
views->addWidget(homeView);
// TODO make this lazy
@@ -85,15 +111,9 @@ MainWindow::MainWindow() :
createToolBars();
createStatusBar();
- initPhonon();
- mediaView->setMediaObject(mediaObject);
-
// remove that useless menu/toolbar context menu
this->setContextMenuPolicy(Qt::NoContextMenu);
- // mediaView init stuff thats needs actions
- mediaView->initialize();
-
// event filter to block ugly toolbar tooltips
qApp->installEventFilter(this);
@@ -103,10 +123,8 @@ MainWindow::MainWindow() :
readSettings();
// fix stacked widget minimum size
- for (int i = 0; i < views->count(); i++) {
- QWidget* view = views->widget(i);
- if (view) view->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
- }
+ for (int i = 0; i < views->count(); i++)
+ views->widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
setMinimumWidth(0);
// show the initial view
@@ -119,6 +137,37 @@ MainWindow::MainWindow() :
views->show();
+#ifdef APP_EXTRA
+ Extra::windowSetup(this);
+#endif
+
+ qApp->processEvents();
+ QTimer::singleShot(50, this, SLOT(lazyInit()));
+}
+
+MainWindow::~MainWindow() {
+ delete history;
+}
+
+void MainWindow::lazyInit() {
+ initPhonon();
+ mediaView->initialize();
+ mediaView->setMediaObject(mediaObject);
+ qApp->processEvents();
+
+ // CLI
+ if (qApp->arguments().size() > 1) {
+ QString query = qApp->arguments().at(1);
+ if (query.startsWith(QLatin1String("--"))) {
+ messageReceived(query);
+ qApp->quit();
+ } else {
+ SearchParams *searchParams = new SearchParams();
+ searchParams->setKeywords(query);
+ showMedia(searchParams);
+ }
+ }
+
// Global shortcuts
GlobalShortcuts &shortcuts = GlobalShortcuts::instance();
#ifdef Q_WS_X11
@@ -146,12 +195,11 @@ MainWindow::MainWindow() :
mouseTimer->setSingleShot(true);
connect(mouseTimer, SIGNAL(timeout()), SLOT(hideMouse()));
- QTimer::singleShot(0, this, SLOT(checkForUpdate()));
+ JsFunctions::instance();
-}
+ checkForUpdate();
-MainWindow::~MainWindow() {
- delete history;
+ ChannelAggregator::instance()->start();
}
void MainWindow::changeEvent(QEvent* event) {
@@ -222,9 +270,6 @@ void MainWindow::createActions() {
tr("P&revious"), this);
skipBackwardAct->setStatusTip(tr("Go back to the previous track"));
skipBackwardAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Left));
-#if QT_VERSION >= 0x040600
- skipBackwardAct->setPriority(QAction::LowPriority);
-#endif
skipBackwardAct->setEnabled(false);
actions->insert("previous", skipBackwardAct);
connect(skipBackwardAct, SIGNAL(triggered()), mediaView, SLOT(skipBackward()));
@@ -253,9 +298,7 @@ void MainWindow::createActions() {
#endif
fullscreenAct->setShortcuts(fsShortcuts);
fullscreenAct->setShortcutContext(Qt::ApplicationShortcut);
-#if QT_VERSION >= 0x040600
fullscreenAct->setPriority(QAction::LowPriority);
-#endif
actions->insert("fullscreen", fullscreenAct);
connect(fullscreenAct, SIGNAL(triggered()), this, SLOT(fullscreen()));
@@ -381,13 +424,18 @@ void MainWindow::createActions() {
volumeMuteAct = new QAction(this);
volumeMuteAct->setIcon(Utils::icon("audio-volume-high"));
volumeMuteAct->setStatusTip(tr("Mute volume"));
- volumeMuteAct->setShortcuts(QList() << QKeySequence(Qt::CTRL + Qt::Key_E));
+ volumeMuteAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_K));
actions->insert("volume-mute", volumeMuteAct);
connect(volumeMuteAct, SIGNAL(triggered()), SLOT(volumeMute()));
addAction(volumeMuteAct);
QAction *definitionAct = new QAction(this);
+#ifdef Q_WS_X11
+ definitionAct->setIcon(Utils::tintedIcon("video-display", QColor(0, 0, 0),
+ QList() << QSize(16, 16)));
+#else
definitionAct->setIcon(Utils::icon("video-display"));
+#endif
definitionAct->setShortcuts(QList() << QKeySequence(Qt::CTRL + Qt::Key_D));
/*
QMenu *definitionMenu = new QMenu(this);
@@ -420,14 +468,11 @@ void MainWindow::createActions() {
action = new QAction(tr("&Download"), this);
action->setStatusTip(tr("Download the current video"));
-#ifndef APP_NO_DOWNLOADS
action->setShortcut(QKeySequence::Save);
-#endif
action->setIcon(Utils::icon("document-save"));
action->setEnabled(false);
-#if QT_VERSION >= 0x040600
+ action->setVisible(false);
action->setPriority(QAction::LowPriority);
-#endif
connect(action, SIGNAL(triggered()), mediaView, SLOT(downloadVideo()));
actions->insert("download", action);
@@ -438,25 +483,37 @@ void MainWindow::createActions() {
connect(action, SIGNAL(triggered()), mediaView, SLOT(snapshot()));
*/
+ action = new QAction(tr("&Subscribe to Channel"), this);
+ action->setProperty("originalText", action->text());
+ action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S));
+ action->setEnabled(false);
+ connect(action, SIGNAL(triggered()), mediaView, SLOT(toggleSubscription()));
+ actions->insert("subscribe-channel", action);
+ mediaView->updateSubscriptionAction(0, false);
+
QString shareTip = tr("Share the current video using %1");
action = new QAction("&Twitter", this);
action->setStatusTip(shareTip.arg("Twitter"));
+ action->setEnabled(false);
actions->insert("twitter", action);
connect(action, SIGNAL(triggered()), mediaView, SLOT(shareViaTwitter()));
action = new QAction("&Facebook", this);
action->setStatusTip(shareTip.arg("Facebook"));
+ action->setEnabled(false);
actions->insert("facebook", action);
connect(action, SIGNAL(triggered()), mediaView, SLOT(shareViaFacebook()));
action = new QAction("&Buffer", this);
action->setStatusTip(shareTip.arg("Buffer"));
+ action->setEnabled(false);
actions->insert("buffer", action);
connect(action, SIGNAL(triggered()), mediaView, SLOT(shareViaBuffer()));
action = new QAction(tr("&Email"), this);
action->setStatusTip(shareTip.arg(tr("Email")));
+ action->setEnabled(false);
actions->insert("email", action);
connect(action, SIGNAL(triggered()), mediaView, SLOT(shareViaEmail()));
@@ -505,36 +562,26 @@ void MainWindow::createActions() {
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
action->setStatusTip(tr("Watch videos related to the current one"));
action->setEnabled(false);
-#if QT_VERSION >= 0x040600
action->setPriority(QAction::LowPriority);
-#endif
connect(action, SIGNAL(triggered()), mediaView, SLOT(relatedVideos()));
actions->insert("related-videos", action);
+ action = new QAction(tr("Open in &Browser..."), this);
+ action->setEnabled(false);
+ actions->insert("open-in-browser", action);
+ connect(action, SIGNAL(triggered()), mediaView, SLOT(openInBrowser()));
+
#ifdef APP_ACTIVATION
Extra::createActivationAction(tr("Buy %1...").arg(Constants::NAME));
#endif
// common action properties
foreach (QAction *action, actions->values()) {
-
// add actions to the MainWindow so that they work
// when the menu is hidden
addAction(action);
-
- // never autorepeat.
- // unexperienced users tend to keep keys pressed for a "long" time
- action->setAutoRepeat(false);
-
- // set to something more meaningful then the toolbar text
- if (!action->statusTip().isEmpty())
- action->setToolTip(action->statusTip());
-
- // show keyboard shortcuts in the status bar
- if (!action->shortcut().isEmpty())
- action->setStatusTip(action->statusTip() + " (" + action->shortcut().toString(QKeySequence::NativeText) + ")");
+ Utils::setupAction(action);
}
-
}
void MainWindow::createMenus() {
@@ -585,10 +632,11 @@ void MainWindow::createMenus() {
videoMenu->addSeparator();
videoMenu->addAction(webPageAct);
videoMenu->addSeparator();
-#ifndef APP_NO_DOWNLOADS
+ videoMenu->addAction(The::globalActions()->value("subscribe-channel"));
+ videoMenu->addSeparator();
videoMenu->addAction(The::globalActions()->value("download"));
- // videoMenu->addAction(copyLinkAct);
-#endif
+ videoMenu->addAction(copyLinkAct);
+ videoMenu->addAction(The::globalActions()->value("open-in-browser"));
// videoMenu->addAction(The::globalActions()->value("snapshot"));
QMenu* viewMenu = menuBar()->addMenu(tr("&View"));
@@ -626,7 +674,7 @@ void MainWindow::createToolBars() {
setUnifiedTitleAndToolBarOnMac(true);
mainToolBar = new QToolBar(this);
- mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle);
+ mainToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly);
mainToolBar->setFloatable(false);
mainToolBar->setMovable(false);
@@ -639,9 +687,7 @@ void MainWindow::createToolBars() {
mainToolBar->addAction(skipAct);
mainToolBar->addAction(The::globalActions()->value("related-videos"));
-#ifndef APP_NO_DOWNLOADS
mainToolBar->addAction(The::globalActions()->value("download"));
-#endif
bool addFullScreenAct = true;
#ifdef Q_WS_MAC
@@ -656,20 +702,23 @@ void MainWindow::createToolBars() {
currentTime->setFont(smallerFont);
mainToolBar->addWidget(currentTime);
+#ifdef APP_PHONON_SEEK
mainToolBar->addWidget(new Spacer());
-
seekSlider = new Phonon::SeekSlider(this);
+ seekSlider->setVisible(false);
seekSlider->setIconVisible(false);
seekSlider->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
mainToolBar->addWidget(seekSlider);
+#endif
- /*
mainToolBar->addWidget(new Spacer());
- slider = new QSlider(this);
+ slider = new SeekSlider(this);
+ slider->setEnabled(false);
+ slider->setTracking(false);
+ slider->setMaximum(1000);
slider->setOrientation(Qt::Horizontal);
slider->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
mainToolBar->addWidget(slider);
-*/
mainToolBar->addWidget(new Spacer());
@@ -763,6 +812,9 @@ void MainWindow::showStopAfterThisInStatusBar(bool show) {
}
void MainWindow::showActionInStatusBar(QAction* action, bool show) {
+#ifdef APP_EXTRA
+ Extra::fadeInWidget(statusBar(), statusBar());
+#endif
if (show) {
statusToolBar->insertAction(statusToolBar->actions().first(), action);
} else {
@@ -781,8 +833,6 @@ void MainWindow::readSettings() {
setGeometry(100, 100, 1000, 500);
}
setDefinitionMode(settings.value("definition", VideoDefinition::getDefinitionNames().first()).toString());
- audioOutput->setVolume(settings.value("volume", 1).toDouble());
- // audioOutput->setMuted(settings.value("volumeMute").toBool());
The::globalActions()->value("manualplay")->setChecked(settings.value("manualplay", false).toBool());
}
@@ -823,7 +873,6 @@ void MainWindow::showWidget(QWidget* widget, bool transition) {
View* newView = dynamic_cast (widget);
if (newView) {
widget->setEnabled(true);
- newView->appear();
QHash metadata = newView->metadata();
QString title = metadata.value("title").toString();
if (title.isEmpty()) title = Constants::NAME;
@@ -831,37 +880,26 @@ void MainWindow::showWidget(QWidget* widget, bool transition) {
setWindowTitle(title);
QString desc = metadata.value("description").toString();
if (!desc.isEmpty()) showMessage(desc);
+ newView->appear();
+
+ // dynamic view actions
+ foreach (QAction* action, viewActions)
+ showActionInStatusBar(action, false);
+ viewActions = newView->getViewActions();
+ foreach (QAction* action, viewActions)
+ showActionInStatusBar(action, true);
+
}
const bool isMediaView = widget == mediaView;
stopAct->setEnabled(isMediaView);
compactViewAct->setEnabled(isMediaView);
- webPageAct->setEnabled(isMediaView);
- copyPageAct->setEnabled(isMediaView);
- copyLinkAct->setEnabled(isMediaView);
- findVideoPartsAct->setEnabled(isMediaView);
toolbarSearch->setEnabled(widget == homeView || isMediaView || widget == downloadView);
- if (widget == homeView) {
- skipAct->setEnabled(false);
- The::globalActions()->value("previous")->setEnabled(false);
- The::globalActions()->value("download")->setEnabled(false);
- The::globalActions()->value("stopafterthis")->setEnabled(false);
- The::globalActions()->value("related-videos")->setEnabled(false);
- The::globalActions()->value("refine-search")->setEnabled(false);
- }
-
- The::globalActions()->value("twitter")->setEnabled(isMediaView);
- The::globalActions()->value("facebook")->setEnabled(isMediaView);
- The::globalActions()->value("buffer")->setEnabled(isMediaView);
- The::globalActions()->value("email")->setEnabled(isMediaView);
-
aboutAct->setEnabled(widget != aboutView);
The::globalActions()->value("downloads")->setChecked(widget == downloadView);
- setUpdatesEnabled(true);
-
QWidget *oldWidget = views->currentWidget();
if (oldWidget)
oldWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
@@ -869,8 +907,11 @@ void MainWindow::showWidget(QWidget* widget, bool transition) {
views->setCurrentWidget(widget);
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-#ifndef Q_WS_X11
- if (transition && oldWidget != mediaView)
+ setUpdatesEnabled(true);
+
+#ifdef APP_EXTRA
+ if (transition && (oldWidget != mediaView ||
+ !mediaView->getVideoArea()->isVideoShown()))
Extra::fadeInWidget(oldWidget, widget);
#endif
@@ -912,7 +953,11 @@ void MainWindow::quit() {
if (!m_fullscreen && !compactViewAct->isChecked()) {
writeSettings();
}
+ mediaView->stop();
Temporary::deleteAll();
+ ChannelAggregator::instance()->stop();
+ ChannelAggregator::instance()->cleanup();
+ Database::shutdown();
qApp->quit();
}
@@ -959,13 +1004,13 @@ void MainWindow::showHome(bool transition) {
}
void MainWindow::showMedia(SearchParams *searchParams) {
- mediaView->search(searchParams);
showWidget(mediaView);
+ mediaView->search(searchParams);
}
void MainWindow::showMedia(VideoSource *videoSource) {
- mediaView->setVideoSource(videoSource);
showWidget(mediaView);
+ mediaView->setVideoSource(videoSource);
}
void MainWindow::stateChanged(Phonon::State newState, Phonon::State /* oldState */) {
@@ -1101,9 +1146,11 @@ void MainWindow::updateUIForFullscreen() {
fullscreenAct->setShortcuts(QList(fsShortcuts)
<< QKeySequence(Qt::Key_Escape));
fullscreenAct->setText(tr("Leave &Full Screen"));
+ fullscreenAct->setIcon(Utils::icon("view-restore"));
} else {
fullscreenAct->setShortcuts(fsShortcuts);
fullscreenAct->setText(fsText);
+ fullscreenAct->setIcon(Utils::icon("view-fullscreen"));
}
// No compact view action when in full screen
@@ -1139,7 +1186,18 @@ void MainWindow::updateUIForFullscreen() {
}
}
+bool MainWindow::isReallyFullScreen() {
+#ifdef Q_WS_MAC
+ WId handle = winId();
+ if (mac::CanGoFullScreen(handle)) return mac::IsFullScreen(handle);
+ else return isFullScreen();
+#else
+ return isFullScreen();
+#endif
+}
+
void MainWindow::compactView(bool enable) {
+ m_compact = enable;
static QList compactShortcuts;
static QList stopShortcuts;
@@ -1152,7 +1210,7 @@ void MainWindow::compactView(bool enable) {
#endif
if (enable) {
- setMinimumSize(160, 120);
+ setMinimumSize(320, 180);
#ifdef Q_WS_MAC
mac::RemoveFullScreenWindow(winId());
#endif
@@ -1161,7 +1219,7 @@ void MainWindow::compactView(bool enable) {
if (settings.contains(key))
restoreGeometry(settings.value(key).toByteArray());
else
- resize(320, 240);
+ resize(320, 180);
mainToolBar->setVisible(!enable);
mediaView->setPlaylistVisible(!enable);
@@ -1197,6 +1255,10 @@ void MainWindow::compactView(bool enable) {
// auto float on top
floatOnTop(enable);
+
+#ifdef Q_WS_MAC
+ mac::compactMode(winId(), enable);
+#endif
}
void MainWindow::searchFocus() {
@@ -1214,12 +1276,17 @@ void MainWindow::initPhonon() {
this, SLOT(stateChanged(Phonon::State, Phonon::State)));
connect(mediaObject, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)));
connect(mediaObject, SIGNAL(totalTimeChanged(qint64)), this, SLOT(totalTimeChanged(qint64)));
+#ifdef APP_PHONON_SEEK
seekSlider->setMediaObject(mediaObject);
+#endif
audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
connect(audioOutput, SIGNAL(volumeChanged(qreal)), this, SLOT(volumeChanged(qreal)));
connect(audioOutput, SIGNAL(mutedChanged(bool)), this, SLOT(volumeMutedChanged(bool)));
volumeSlider->setAudioOutput(audioOutput);
Phonon::createPath(mediaObject, audioOutput);
+ QSettings settings;
+ audioOutput->setVolume(settings.value("volume", 1).toDouble());
+ // audioOutput->setMuted(settings.value("volumeMute").toBool());
}
void MainWindow::tick(qint64 time) {
@@ -1236,11 +1303,12 @@ void MainWindow::tick(qint64 time) {
const qint64 remainingTime = mediaObject->remainingTime();
currentTime->setStatusTip(tr("Remaining time: %1").arg(formatTime(remainingTime)));
- /*
slider->blockSignals(true);
- slider->setValue(time/1000);
+ const qint64 totalTime = mediaObject->totalTime();
+ // qWarning() << totalTime << time << time * 100 / totalTime;
+ if (totalTime > 0 && time > 0 && !slider->isSliderDown() && mediaObject->state() == Phonon::PlayingState)
+ slider->setValue(time * slider->maximum() / totalTime);
slider->blockSignals(false);
- */
}
void MainWindow::totalTimeChanged(qint64 time) {
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 1602748..404fa13 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
@@ -24,13 +44,17 @@ public:
static MainWindow* instance();
MainWindow();
~MainWindow();
+#ifdef APP_PHONON_SEEK
Phonon::SeekSlider* getSeekSlider() { return seekSlider; }
+#endif
+ QSlider* getSlider() { return slider; }
void readSettings();
void writeSettings();
static void printHelp();
MediaView* getMediaView() { return mediaView; }
QToolButton* getRegionButton() { return regionButton; }
QAction* getRegionAction() { return regionAction; }
+ void showActionInStatusBar(QAction*, bool show);
public slots:
void showHome(bool transition = true);
@@ -49,6 +73,8 @@ public slots:
void buy();
void hideBuyAction();
#endif
+ bool isReallyFullScreen();
+ bool isCompact() { return m_compact; }
protected:
void changeEvent(QEvent *);
@@ -59,6 +85,7 @@ protected:
void resizeEvent(QResizeEvent *);
private slots:
+ void lazyInit();
void checkForUpdate();
void gotNewVersion(QString version);
void visitSite();
@@ -94,7 +121,6 @@ private slots:
void toggleDownloads(bool show);
void floatOnTop(bool);
- void showActionInStatusBar(QAction*, bool show);
void showStopAfterThisInStatusBar(bool show);
void hideMouse();
@@ -115,6 +141,7 @@ private:
// view mechanism
QStackedWidget *views;
QStack *history;
+ QList viewActions;
// view widgets
HomeView *homeView;
@@ -168,7 +195,10 @@ private:
QAction *regionAction;
// phonon
+ QSlider *slider;
+#ifdef APP_PHONON_SEEK
Phonon::SeekSlider *seekSlider;
+#endif
Phonon::VolumeSlider *volumeSlider;
Phonon::MediaObject *mediaObject;
Phonon::AudioOutput *audioOutput;
@@ -179,6 +209,8 @@ private:
bool m_fullscreen;
bool m_maximized;
QTimer *mouseTimer;
+ bool m_compact;
+
};
#endif
diff --git a/src/mediaview.cpp b/src/mediaview.cpp
index 5caf3da..c1a0846 100644
--- a/src/mediaview.cpp
+++ b/src/mediaview.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "mediaview.h"
#include "playlistmodel.h"
#include "playlistview.h"
@@ -14,22 +34,24 @@
#include "refinesearchwidget.h"
#include "sidebarwidget.h"
#include "sidebarheader.h"
-#ifdef APP_MAC
-#include "macfullscreen.h"
-#include "macutils.h"
-#endif
#ifdef APP_ACTIVATION
#include "activation.h"
#endif
+#ifdef APP_EXTRA
+#include "extra.h"
+#endif
#include "videosource.h"
#include "ytsearch.h"
#include "searchparams.h"
#include "ytsinglevideosource.h"
+#include "channelaggregator.h"
+#include "utils.h"
+#include "ytuser.h"
namespace The {
NetworkAccess* http();
QHash* globalActions();
-QMap* globalMenus();
+QHash* globalMenus();
QNetworkAccessManager* networkAccessManager();
}
@@ -38,15 +60,15 @@ MediaView* MediaView::instance() {
return i;
}
-MediaView::MediaView(QWidget *parent) : QWidget(parent) {
- reallyStopped = false;
- downloadItem = 0;
+MediaView::MediaView(QWidget *parent) : QWidget(parent),
+ stopped(false),
+ downloadItem(0) { }
+void MediaView::initialize() {
QBoxLayout *layout = new QVBoxLayout(this);
layout->setMargin(0);
splitter = new MiniSplitter();
- splitter->setChildrenCollapsible(false);
playlistView = new PlaylistView(this);
// respond to the user doubleclicking a playlist item
@@ -78,7 +100,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
splitter->addWidget(sidebar);
videoAreaWidget = new VideoAreaWidget(this);
- videoAreaWidget->setMinimumSize(320,240);
+ // videoAreaWidget->setMinimumSize(320,240);
videoWidget = new Phonon::VideoWidget(this);
videoAreaWidget->setVideoWidget(videoWidget);
videoAreaWidget->setListModel(playlistModel);
@@ -88,14 +110,15 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
splitter->addWidget(videoAreaWidget);
- layout->addWidget(splitter);
-
- splitter->setStretchFactor(0, 1);
- splitter->setStretchFactor(1, 5);
+ splitter->setStretchFactor(0, 0);
+ splitter->setStretchFactor(1, 8);
// restore splitter state
QSettings settings;
splitter->restoreState(settings.value("splitter").toByteArray());
+ splitter->setChildrenCollapsible(false);
+
+ layout->addWidget(splitter);
errorTimer = new QTimer(this);
errorTimer->setSingleShot(true);
@@ -108,15 +131,31 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
connect(demoTimer, SIGNAL(timeout()), SLOT(demoMessage()));
#endif
-}
-
-void MediaView::initialize() {
connect(videoAreaWidget, SIGNAL(doubleClicked()),
The::globalActions()->value("fullscreen"), SLOT(trigger()));
QAction* refineSearchAction = The::globalActions()->value("refine-search");
connect(refineSearchAction, SIGNAL(toggled(bool)),
sidebar, SLOT(toggleRefineSearch(bool)));
+
+ currentVideoActions
+ << The::globalActions()->value("webpage")
+ << The::globalActions()->value("pagelink")
+ << The::globalActions()->value("videolink")
+ << The::globalActions()->value("open-in-browser")
+ << The::globalActions()->value("findVideoParts")
+ << The::globalActions()->value("skip")
+ << The::globalActions()->value("previous")
+ << The::globalActions()->value("stopafterthis")
+ << The::globalActions()->value("related-videos")
+ << The::globalActions()->value("refine-search")
+ << The::globalActions()->value("twitter")
+ << The::globalActions()->value("facebook")
+ << The::globalActions()->value("buffer")
+ << The::globalActions()->value("email");
+
+ QSlider *slider = MainWindow::instance()->getSlider();
+ connect(slider, SIGNAL(valueChanged(int)), SLOT(sliderMoved(int)));
}
void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) {
@@ -125,8 +164,6 @@ void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) {
connect(mediaObject, SIGNAL(finished()), SLOT(playbackFinished()));
connect(mediaObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)),
SLOT(stateChanged(Phonon::State, Phonon::State)));
- connect(mediaObject, SIGNAL(currentSourceChanged(Phonon::MediaSource)),
- SLOT(currentSourceChanged(Phonon::MediaSource)));
connect(mediaObject, SIGNAL(aboutToFinish()), SLOT(aboutToFinish()));
}
@@ -156,19 +193,24 @@ void MediaView::search(SearchParams *searchParams) {
}
void MediaView::setVideoSource(VideoSource *videoSource, bool addToHistory) {
- reallyStopped = false;
+ stopped = false;
#ifdef APP_ACTIVATION
demoTimer->stop();
#endif
errorTimer->stop();
+ // qDebug() << "Adding VideoSource" << videoSource->getName() << videoSource;
+
if (addToHistory) {
int currentIndex = getHistoryIndex();
if (currentIndex >= 0 && currentIndex < history.size() - 1) {
while (history.size() > currentIndex + 1) {
VideoSource *vs = history.takeLast();
- if (!vs->parent()) delete vs;
+ if (!vs->parent()) {
+ qDebug() << "Deleting VideoSource" << vs->getName() << vs;
+ delete vs;
+ }
}
}
history.append(videoSource);
@@ -184,8 +226,6 @@ void MediaView::setVideoSource(VideoSource *videoSource, bool addToHistory) {
SearchParams *searchParams = getSearchParams();
bool isChannel = searchParams && !searchParams->author().isEmpty();
playlistView->setClickableAuthors(!isChannel);
-
- The::globalActions()->value("related-videos")->setEnabled(true);
}
void MediaView::searchAgain() {
@@ -226,6 +266,12 @@ int MediaView::getHistoryIndex() {
void MediaView::appear() {
playlistView->setFocus();
+ Video *currentVideo = playlistModel->activeVideo();
+ if (currentVideo) {
+ MainWindow::instance()->setWindowTitle(
+ currentVideo->title() + " - " + Constants::NAME);
+ MainWindow::instance()->showMessage(currentVideo->description());
+ }
}
void MediaView::disappear() {
@@ -262,58 +308,76 @@ QRegExp MediaView::wordRE(QString s) {
}
void MediaView::stop() {
+ stopped = true;
+
+ while (!history.isEmpty()) {
+ VideoSource *videoSource = history.takeFirst();
+ if (!videoSource->parent()) delete videoSource;
+ }
+
playlistModel->abortSearch();
- reallyStopped = true;
- mediaObject->stop();
videoAreaWidget->clear();
+ videoAreaWidget->update();
errorTimer->stop();
playlistView->selectionModel()->clearSelection();
if (downloadItem) {
downloadItem->stop();
delete downloadItem;
downloadItem = 0;
+ currentVideoSize = 0;
}
The::globalActions()->value("refine-search")->setChecked(false);
+ updateSubscriptionAction(0, false);
+#ifdef APP_ACTIVATION
+ demoTimer->stop();
+#endif
- while (!history.isEmpty()) {
- VideoSource *videoSource = history.takeFirst();
- if (!videoSource->parent()) delete videoSource;
- }
+ foreach (QAction *action, currentVideoActions)
+ action->setEnabled(false);
+
+ QAction *a = The::globalActions()->value("download");
+ a->setEnabled(false);
+ a->setVisible(false);
+
+ mediaObject->stop();
+ currentVideoId.clear();
+
+ QSlider *slider = MainWindow::instance()->getSlider();
+ slider->setEnabled(false);
+ slider->setValue(0);
}
-Video* MediaView::getCurrentVideo() {
- Video *currentVideo = 0;
- if (downloadItem)
- currentVideo = downloadItem->getVideo();
- return currentVideo;
+const QString & MediaView::getCurrentVideoId() {
+ return currentVideoId;
}
void MediaView::activeRowChanged(int row) {
- if (reallyStopped) return;
-
- Video *video = playlistModel->videoAt(row);
- if (!video) return;
+ if (stopped) return;
errorTimer->stop();
- videoAreaWidget->showLoading(video);
-
mediaObject->stop();
if (downloadItem) {
downloadItem->stop();
delete downloadItem;
downloadItem = 0;
+ currentVideoSize = 0;
}
+ Video *video = playlistModel->videoAt(row);
+ if (!video) return;
+
+ videoAreaWidget->showLoading(video);
+
connect(video, SIGNAL(gotStreamUrl(QUrl)),
SLOT(gotStreamUrl(QUrl)), Qt::UniqueConnection);
connect(video, SIGNAL(errorStreamUrl(QString)),
SLOT(handleError(QString)), Qt::UniqueConnection);
-
video->loadStreamUrl();
- // video title in the statusbar
- MainWindow::instance()->showMessage(video->title());
+ // video title in titlebar
+ MainWindow::instance()->setWindowTitle(video->title() + " - " + Constants::NAME);
+ MainWindow::instance()->showMessage(video->description());
// ensure active item is visible
if (row != -1) {
@@ -324,16 +388,41 @@ void MediaView::activeRowChanged(int row) {
// enable/disable actions
The::globalActions()->value("download")->setEnabled(
DownloadManager::instance()->itemForVideo(video) == 0);
- The::globalActions()->value("skip")->setEnabled(true);
The::globalActions()->value("previous")->setEnabled(row > 0);
The::globalActions()->value("stopafterthis")->setEnabled(true);
The::globalActions()->value("related-videos")->setEnabled(true);
+#ifndef APP_NO_DOWNLOADS
+ bool enableDownload = video->license() == Video::LicenseCC;
+#ifdef APP_ACTIVATION
+ enableDownload = enableDownload || Activation::instance().isLegacy();
+#endif
+#ifdef APP_DOWNLOADS
+ enableDownload = true;
+#endif
+ QAction *a = The::globalActions()->value("download");
+ a->setEnabled(enableDownload);
+ a->setVisible(enableDownload);
+#endif
+
+ updateSubscriptionAction(video, YTUser::isSubscribed(video->userId()));
+
+ foreach (QAction *action, currentVideoActions)
+ action->setEnabled(true);
+
+ QSlider *slider = MainWindow::instance()->getSlider();
+ slider->setEnabled(false);
+ slider->setValue(0);
+
// see you in gotStreamUrl...
}
void MediaView::gotStreamUrl(QUrl streamUrl) {
- if (reallyStopped) return;
+ if (stopped) return;
+ if (!streamUrl.isValid()) {
+ skip();
+ return;
+ }
Video *video = static_cast(sender());
if (!video) {
@@ -342,77 +431,62 @@ void MediaView::gotStreamUrl(QUrl streamUrl) {
}
video->disconnect(this);
- QString tempFile = Temporary::filename();
+ currentVideoId = video->id();
- Video *videoCopy = video->clone();
- if (downloadItem) {
- downloadItem->stop();
- delete downloadItem;
+#ifdef Q_WS_X11_NO
+ mediaObject->setCurrentSource(streamUrl);
+ mediaObject->play();
+#else
+ startDownloading();
+#endif
+
+ // ensure we always have 10 videos ahead
+ playlistModel->searchNeeded();
+
+ // ensure active item is visible
+ int row = playlistModel->activeRow();
+ if (row != -1) {
+ QModelIndex index = playlistModel->index(row, 0, QModelIndex());
+ playlistView->scrollTo(index, QAbstractItemView::EnsureVisible);
}
- downloadItem = new DownloadItem(videoCopy, streamUrl, tempFile, this);
- connect(downloadItem, SIGNAL(statusChanged()),
- SLOT(downloadStatusChanged()), Qt::UniqueConnection);
- // connect(downloadItem, SIGNAL(progress(int)), SLOT(downloadProgress(int)));
- connect(downloadItem, SIGNAL(bufferProgress(int)),
- loadingWidget, SLOT(bufferStatus(int)), Qt::UniqueConnection);
- // connect(downloadItem, SIGNAL(finished()), SLOT(itemFinished()));
- connect(video, SIGNAL(errorStreamUrl(QString)),
- SLOT(handleError(QString)), Qt::UniqueConnection);
- connect(downloadItem, SIGNAL(error(QString)),
- SLOT(handleError(QString)), Qt::UniqueConnection);
- downloadItem->start();
-#ifdef Q_WS_MAC
- if (mac::canNotify())
- mac::notify(video->title(), video->author(), video->formattedDuration());
+#ifdef APP_ACTIVATION
+ if (!Activation::instance().isActivated())
+ demoTimer->start(180000);
+#endif
+
+#ifdef APP_EXTRA
+ Extra::notify(video->title(), video->author(), video->formattedDuration());
#endif
-}
-/*
-void MediaView::downloadProgress(int percent) {
- MainWindow* mainWindow = dynamic_cast(window());
-
- mainWindow->getSeekSlider()->setStyleSheet(" QSlider::groove:horizontal {"
- "border: 1px solid #999999;"
- // "border-left: 50px solid rgba(255, 0, 0, 128);"
- "height: 8px;"
- "background: qlineargradient(x1:0, y1:0, x2:.5, y2:0, stop:0 rgba(255, 0, 0, 92), stop:"
- + QString::number(percent/100.0) +
-
- " rgba(255, 0, 0, 92), stop:" + QString::number((percent+1)/100.0) + " transparent, stop:1 transparent);"
- "margin: 2px 0;"
- "}"
- "QSlider::handle:horizontal {"
- "background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f);"
- "border: 1px solid #5c5c5c;"
- "width: 16px;"
- "height: 16px;"
- "margin: -2px 0;"
- "border-radius: 8px;"
- "}"
-
- );
+ ChannelAggregator::instance()->videoWatched(video);
}
-*/
-
void MediaView::downloadStatusChanged() {
+ // qDebug() << __PRETTY_FUNCTION__;
switch(downloadItem->status()) {
case Downloading:
- startPlaying();
+ // qDebug() << "Downloading";
+ if (downloadItem->offset() == 0) startPlaying();
+ else {
+ // qDebug() << "Seeking to" << downloadItem->offset();
+ mediaObject->seek(offsetToTime(downloadItem->offset()));
+ mediaObject->play();
+ }
break;
case Starting:
// qDebug() << "Starting";
break;
case Finished:
// qDebug() << "Finished" << mediaObject->state();
- // if (mediaObject->state() == Phonon::StoppedState) startPlaying();
#ifdef Q_WS_X11
- MainWindow::instance()->getSeekSlider()->setEnabled(mediaObject->isSeekable());
+ // MainWindow::instance()->getSeekSlider()->setEnabled(mediaObject->isSeekable());
#endif
break;
case Failed:
// qDebug() << "Failed";
+ skip();
+ break;
case Idle:
// qDebug() << "Idle";
break;
@@ -420,36 +494,29 @@ void MediaView::downloadStatusChanged() {
}
void MediaView::startPlaying() {
- if (reallyStopped) return;
+ // qDebug() << __PRETTY_FUNCTION__;
+ if (stopped) return;
if (!downloadItem) {
skip();
return;
}
+ if (downloadItem->offset() == 0) {
+ currentVideoSize = downloadItem->bytesTotal();
+ // qDebug() << "currentVideoSize" << currentVideoSize;
+ }
+
// go!
QString source = downloadItem->currentFilename();
- qDebug() << "Playing" << source;
+ qDebug() << "Playing" << source << QFile::exists(source);
mediaObject->setCurrentSource(source);
mediaObject->play();
#ifdef Q_WS_X11
- MainWindow::instance()->getSeekSlider()->setEnabled(false);
-#endif
-
- // ensure we always have 10 videos ahead
- playlistModel->searchNeeded();
-
- // ensure active item is visible
- int row = playlistModel->activeRow();
- if (row != -1) {
- QModelIndex index = playlistModel->index(row, 0, QModelIndex());
- playlistView->scrollTo(index, QAbstractItemView::EnsureVisible);
- }
-
-#ifdef APP_ACTIVATION
- if (!Activation::instance().isActivated())
- demoTimer->start(180000);
+ // MainWindow::instance()->getSeekSlider()->setEnabled(false);
#endif
+ QSlider *slider = MainWindow::instance()->getSlider();
+ slider->setEnabled(true);
}
void MediaView::itemActivated(const QModelIndex &index) {
@@ -459,7 +526,8 @@ void MediaView::itemActivated(const QModelIndex &index) {
Video *activeVideo = playlistModel->activeVideo();
Video *video = playlistModel->videoAt(index.row());
if (activeVideo && video && activeVideo == video) {
- mediaObject->seek(0);
+ // mediaObject->seek(0);
+ sliderMoved(0);
mediaObject->play();
} else playlistModel->setActiveRow(index.row());
@@ -470,10 +538,6 @@ void MediaView::itemActivated(const QModelIndex &index) {
}
}
-void MediaView::currentSourceChanged(const Phonon::MediaSource /* source */ ) {
-
-}
-
void MediaView::skipVideo() {
// skippedVideo is useful for DELAYED skip operations
// in order to be sure that we're skipping the video we wanted
@@ -504,9 +568,9 @@ void MediaView::skipBackward() {
void MediaView::aboutToFinish() {
qint64 currentTime = mediaObject->currentTime();
- qDebug() << __PRETTY_FUNCTION__ << currentTime;
- if (currentTime + 10000 < mediaObject->totalTime()) {
- // mediaObject->seek(mediaObject->currentTime());
+ qint64 totalTime = mediaObject->totalTime();
+ qDebug() << __PRETTY_FUNCTION__ << currentTime << totalTime;
+ if (totalTime < 1 || currentTime + 10000 < totalTime) {
// QTimer::singleShot(500, this, SLOT(playbackResume()));
mediaObject->seek(currentTime);
mediaObject->play();
@@ -514,11 +578,12 @@ void MediaView::aboutToFinish() {
}
void MediaView::playbackFinished() {
- const int totalTime = mediaObject->totalTime();
- const int currentTime = mediaObject->currentTime();
+ if (stopped) return;
+ const qint64 totalTime = mediaObject->totalTime();
+ const qint64 currentTime = mediaObject->currentTime();
qDebug() << __PRETTY_FUNCTION__ << mediaObject->currentTime() << totalTime;
// add 10 secs for imprecise Phonon backends (VLC, Xine)
- if (currentTime > 0 && currentTime + 10000 < totalTime) {
+ if (totalTime < 1 || (currentTime > 0 && currentTime + 10000 < totalTime)) {
// mediaObject->seek(currentTime);
QTimer::singleShot(500, this, SLOT(playbackResume()));
} else {
@@ -530,8 +595,11 @@ void MediaView::playbackFinished() {
}
void MediaView::playbackResume() {
- qDebug() << __PRETTY_FUNCTION__ << mediaObject->currentTime();
- mediaObject->seek(mediaObject->currentTime());
+ if (stopped) return;
+ const qint64 currentTime = mediaObject->currentTime();
+ qDebug() << __PRETTY_FUNCTION__ << currentTime;
+ if (currentTime > 0)
+ mediaObject->seek(currentTime);
mediaObject->play();
}
@@ -560,6 +628,13 @@ void MediaView::copyVideoLink() {
MainWindow::instance()->showMessage(message);
}
+void MediaView::openInBrowser() {
+ Video* video = playlistModel->activeVideo();
+ if (!video) return;
+ mediaObject->pause();
+ QDesktopServices::openUrl(video->getStreamUrl());
+}
+
void MediaView::removeSelected() {
if (!playlistView->selectionModel()->hasSelection()) return;
QModelIndexList indexes = playlistView->selectionModel()->selectedIndexes();
@@ -574,7 +649,8 @@ void MediaView::selectVideos(QList videos) {
}
}
-void MediaView::selectionChanged(const QItemSelection & /*selected*/, const QItemSelection & /*deselected*/) {
+void MediaView::selectionChanged(const QItemSelection & /*selected*/,
+ const QItemSelection & /*deselected*/) {
const bool gotSelection = playlistView->selectionModel()->hasSelection();
The::globalActions()->value("remove")->setEnabled(gotSelection);
The::globalActions()->value("moveUp")->setEnabled(gotSelection);
@@ -590,7 +666,8 @@ void MediaView::moveUpSelected() {
// set current index after row moves to something more intuitive
int row = indexes.first().row();
- playlistView->selectionModel()->setCurrentIndex(playlistModel->index(row>1?row:1), QItemSelectionModel::NoUpdate);
+ playlistView->selectionModel()->setCurrentIndex(playlistModel->index(row>1?row:1),
+ QItemSelectionModel::NoUpdate);
}
void MediaView::moveDownSelected() {
@@ -600,9 +677,11 @@ void MediaView::moveDownSelected() {
qStableSort(indexes.begin(), indexes.end(), qGreater());
playlistModel->move(indexes, false);
- // set current index after row moves to something more intuitive (respect 1 static item on bottom)
+ // set current index after row moves to something more intuitive
+ // (respect 1 static item on bottom)
int row = indexes.first().row()+1, max = playlistModel->rowCount() - 2;
- playlistView->selectionModel()->setCurrentIndex(playlistModel->index(row>max?max:row), QItemSelectionModel::NoUpdate);
+ playlistView->selectionModel()->setCurrentIndex(
+ playlistModel->index(row>max?max:row), QItemSelectionModel::NoUpdate);
}
void MediaView::setPlaylistVisible(bool visible) {
@@ -679,6 +758,7 @@ void MediaView::downloadVideo() {
MainWindow::instance()->showMessage(message);
}
+/*
void MediaView::snapshot() {
QImage image = videoWidget->snapshot();
qDebug() << image.size();
@@ -687,58 +767,66 @@ void MediaView::snapshot() {
// qDebug() << pixmap.size();
videoAreaWidget->showSnapshotPreview(pixmap);
}
+*/
void MediaView::fullscreen() {
videoAreaWidget->setParent(0);
videoAreaWidget->showFullScreen();
}
-/*
-void MediaView::setSlider(QSlider *slider) {
- this->slider = slider;
- // slider->setEnabled(false);
- slider->setTracking(false);
- // connect(slider, SIGNAL(valueChanged(int)), SLOT(sliderMoved(int)));
+void MediaView::startDownloading() {
+ Video *video = playlistModel->activeVideo();
+ if (!video) return;
+ Video *videoCopy = video->clone();
+ if (downloadItem) {
+ downloadItem->stop();
+ delete downloadItem;
+ }
+ QString tempFile = Temporary::filename();
+ downloadItem = new DownloadItem(videoCopy, video->getStreamUrl(), tempFile, this);
+ connect(downloadItem, SIGNAL(statusChanged()),
+ SLOT(downloadStatusChanged()), Qt::UniqueConnection);
+ connect(downloadItem, SIGNAL(bufferProgress(int)),
+ loadingWidget, SLOT(bufferStatus(int)), Qt::UniqueConnection);
+ // connect(downloadItem, SIGNAL(finished()), SLOT(itemFinished()));
+ connect(video, SIGNAL(errorStreamUrl(QString)),
+ SLOT(handleError(QString)), Qt::UniqueConnection);
+ connect(downloadItem, SIGNAL(error(QString)),
+ SLOT(handleError(QString)), Qt::UniqueConnection);
+ downloadItem->start();
}
void MediaView::sliderMoved(int value) {
- qDebug() << __func__;
- int sliderPercent = (value * 100) / (slider->maximum() - slider->minimum());
- qDebug() << slider->minimum() << value << slider->maximum();
- if (sliderPercent <= downloadItem->currentPercent()) {
- qDebug() << sliderPercent << downloadItem->currentPercent();
- mediaObject->seek(value);
+ if (currentVideoSize <= 0 || !downloadItem || !mediaObject->isSeekable())
+ return;
+
+ QSlider *slider = MainWindow::instance()->getSlider();
+ if (slider->isSliderDown()) return;
+
+ qint64 offset = (currentVideoSize * value) / slider->maximum();
+
+ bool needsDownload = downloadItem->needsDownload(offset);
+ if (needsDownload) {
+ if (downloadItem->isBuffered(offset)) {
+ qint64 realOffset = downloadItem->blankAtOffset(offset);
+ if (offset < currentVideoSize)
+ downloadItem->seekTo(realOffset, false);
+ mediaObject->seek(offsetToTime(offset));
+ } else {
+ mediaObject->pause();
+ downloadItem->seekTo(offset);
+ }
} else {
- seekTo(value);
+ // qDebug() << "simple seek";
+ mediaObject->seek(offsetToTime(offset));
}
}
-void MediaView::seekTo(int value) {
- qDebug() << __func__;
- mediaObject->pause();
- errorTimer->stop();
- // mediaObject->clear();
-
- QString tempDir = QDesktopServices::storageLocation(QDesktopServices::TempLocation);
- QString tempFile = tempDir + "/minitube" + QString::number(value) + ".mp4";
- if (!QFile::remove(tempFile)) {
- qDebug() << "Cannot remove temp file";
- }
- Video *videoCopy = downloadItem->getVideo()->clone();
- QUrl streamUrl = videoCopy->getStreamUrl();
- streamUrl.addQueryItem("begin", QString::number(value));
- if (downloadItem) delete downloadItem;
- downloadItem = new DownloadItem(videoCopy, streamUrl, tempFile, this);
- connect(downloadItem, SIGNAL(statusChanged()), SLOT(downloadStatusChanged()));
- // connect(downloadItem, SIGNAL(finished()), SLOT(itemFinished()));
- downloadItem->start();
-
- // slider->setMinimum(value);
-
+qint64 MediaView::offsetToTime(qint64 offset) {
+ const qint64 totalTime = mediaObject->totalTime();
+ return ((offset * totalTime) / currentVideoSize);
}
-*/
-
void MediaView::findVideoParts() {
// parts
@@ -757,24 +845,28 @@ void MediaView::findVideoParts() {
static QString counterNumber = "([1-9]|1[0-5])";
// query.remove(QRegExp(counterSeparators + optionalSpace + counterNumber));
- query.remove(QRegExp(counterNumber + optionalSpace + counterSeparators + optionalSpace + counterNumber));
+ query.remove(QRegExp(counterNumber + optionalSpace +
+ counterSeparators + optionalSpace + counterNumber));
query.remove(wordRE("pr?t\\.?" + optionalSpace + counterNumber));
query.remove(wordRE("ep\\.?" + optionalSpace + counterNumber));
query.remove(wordRE("part" + optionalSpace + counterNumber));
query.remove(wordRE("episode" + optionalSpace + counterNumber));
query.remove(wordRE(tr("part", "This is for video parts, as in 'Cool video - part 1'") +
optionalSpace + counterNumber));
- query.remove(wordRE(tr("episode", "This is for video parts, as in 'Cool series - episode 1'") +
+ query.remove(wordRE(tr("episode",
+ "This is for video parts, as in 'Cool series - episode 1'") +
optionalSpace + counterNumber));
query.remove(QRegExp("[\\(\\)\\[\\]]"));
#define NUMBERS "one|two|three|four|five|six|seven|eight|nine|ten"
- QRegExp englishNumberRE = QRegExp(QLatin1String(".*(") + NUMBERS + ").*", Qt::CaseInsensitive);
+ QRegExp englishNumberRE = QRegExp(QLatin1String(".*(") + NUMBERS + ").*",
+ Qt::CaseInsensitive);
// bool numberAsWords = englishNumberRE.exactMatch(query);
query.remove(englishNumberRE);
- QRegExp localizedNumberRE = QRegExp(QLatin1String(".*(") + tr(NUMBERS) + ").*", Qt::CaseInsensitive);
+ QRegExp localizedNumberRE = QRegExp(QLatin1String(".*(") + tr(NUMBERS) + ").*",
+ Qt::CaseInsensitive);
// if (!numberAsWords) numberAsWords = localizedNumberRE.exactMatch(query);
query.remove(localizedNumberRE);
@@ -852,7 +944,7 @@ void MediaView::authorPushed(QModelIndex index) {
Video* video = playlistModel->videoAt(index.row());
if (!video) return;
- QString channel = video->authorUri();
+ QString channel = video->userId();
if (channel.isEmpty()) channel = video->author();
if (channel.isEmpty()) return;
@@ -863,3 +955,53 @@ void MediaView::authorPushed(QModelIndex index) {
// go!
search(searchParams);
}
+
+void MediaView::updateSubscriptionAction(Video *video, bool subscribed) {
+ QAction *subscribeAction = The::globalActions()->value("subscribe-channel");
+
+ QString subscribeTip;
+ QString subscribeText;
+ if (!video) {
+ subscribeText = subscribeAction->property("originalText").toString();
+ subscribeAction->setEnabled(false);
+ } else if (subscribed) {
+ subscribeText = tr("Unsubscribe from %1").arg(video->author());
+ subscribeTip = subscribeText;
+ subscribeAction->setEnabled(true);
+ } else {
+ subscribeText = tr("Subscribe to %1").arg(video->author());
+ subscribeTip = subscribeText;
+ subscribeAction->setEnabled(true);
+ }
+ subscribeAction->setText(subscribeText);
+ subscribeAction->setStatusTip(subscribeTip);
+
+ if (subscribed) {
+#ifdef Q_WS_X11
+ static QIcon tintedIcon;
+ if (tintedIcon.isNull()) {
+ QList sizes;
+ sizes << QSize(16, 16);
+ tintedIcon = Utils::tintedIcon("bookmark-new", QColor(254, 240, 0), sizes);
+ }
+ subscribeAction->setIcon(tintedIcon);
+#else
+ subscribeAction->setIcon(Utils::icon("bookmark-remove"));
+#endif
+ } else {
+ subscribeAction->setIcon(Utils::icon("bookmark-new"));
+ }
+
+ Utils::setupAction(subscribeAction);
+}
+
+void MediaView::toggleSubscription() {
+ Video *video = playlistModel->activeVideo();
+ if (!video) return;
+ QString userId = video->userId();
+ if (userId.isEmpty()) return;
+ bool subscribed = YTUser::isSubscribed(userId);
+ if (subscribed) YTUser::unsubscribe(userId);
+ else YTUser::subscribe(userId);
+ updateSubscriptionAction(video, !subscribed);
+}
diff --git a/src/mediaview.h b/src/mediaview.h
index 8277707..2bc3f29 100644
--- a/src/mediaview.h
+++ b/src/mediaview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef __MEDIAVIEW_H__
#define __MEDIAVIEW_H__
@@ -37,7 +57,9 @@ public:
const QList & getHistory() { return history; }
int getHistoryIndex();
PlaylistModel* getPlaylistModel() { return playlistModel; }
- Video* getCurrentVideo();
+ const QString &getCurrentVideoId();
+ void updateSubscriptionAction(Video *video, bool subscribed);
+ VideoAreaWidget* getVideoArea() { return videoAreaWidget; }
public slots:
void search(SearchParams *searchParams);
@@ -50,6 +72,7 @@ public slots:
void openWebPage();
void copyWebPage();
void copyVideoLink();
+ void openInBrowser();
void shareViaTwitter();
void shareViaFacebook();
void shareViaBuffer();
@@ -61,7 +84,7 @@ public slots:
void setPlaylistVisible(bool visible=true);
void saveSplitterState();
void downloadVideo();
- void snapshot();
+ // void snapshot();
void fullscreen();
void findVideoParts();
void relatedVideos();
@@ -69,6 +92,7 @@ public slots:
void goBack();
bool canGoForward();
void goForward();
+ void toggleSubscription();
private slots:
// list/model
@@ -80,7 +104,6 @@ private slots:
void handleError(QString message);
// phonon
void stateChanged(Phonon::State newState, Phonon::State oldState);
- void currentSourceChanged(const Phonon::MediaSource source);
void aboutToFinish();
#ifdef APP_ACTIVATION
void demoMessage();
@@ -92,16 +115,14 @@ private slots:
void playbackResume();
void authorPushed(QModelIndex);
void searchAgain();
-
- /*
- void downloadProgress(int percent);
void sliderMoved(int value);
- void seekTo(int value);
- */
+ qint64 offsetToTime(qint64 offset);
+ void startDownloading();
private:
MediaView(QWidget *parent = 0);
SearchParams* getSearchParams();
+
static QRegExp wordRE(QString s);
QSplitter *splitter;
@@ -115,9 +136,10 @@ private:
Phonon::MediaObject *mediaObject;
Phonon::VideoWidget *videoWidget;
- bool reallyStopped;
+ bool stopped;
QTimer *errorTimer;
Video *skippedVideo;
+ QString currentVideoId;
#ifdef APP_ACTIVATION
QTimer *demoTimer;
@@ -125,6 +147,9 @@ private:
DownloadItem *downloadItem;
QList history;
+ QList currentVideoActions;
+
+ qint64 currentVideoSize;
};
#endif // __MEDIAVIEW_H__
diff --git a/src/networkaccess.cpp b/src/networkaccess.cpp
index 4ed98b7..ea8b557 100644
--- a/src/networkaccess.cpp
+++ b/src/networkaccess.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "networkaccess.h"
#include "constants.h"
#include
@@ -12,7 +32,7 @@ const QString USER_AGENT = QString(Constants::NAME)
+ " (" + Constants::WEBSITE + ")";
*/
-const QString USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11";
+const QString USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36";
NetworkReply::NetworkReply(QNetworkReply *networkReply) :
QObject(networkReply),
@@ -22,7 +42,7 @@ NetworkReply::NetworkReply(QNetworkReply *networkReply) :
setupReply();
readTimeoutTimer = new QTimer(this);
- readTimeoutTimer->setInterval(10000);
+ readTimeoutTimer->setInterval(25000);
readTimeoutTimer->setSingleShot(true);
connect(readTimeoutTimer, SIGNAL(timeout()), SLOT(readTimeout()), Qt::UniqueConnection);
readTimeoutTimer->start();
@@ -70,7 +90,7 @@ void NetworkReply::finished() {
}
void NetworkReply::requestError(QNetworkReply::NetworkError code) {
- qDebug() << networkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()
+ qWarning() << networkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()
<< networkReply->errorString() << code;
emit error(networkReply);
}
@@ -121,11 +141,14 @@ QNetworkRequest NetworkAccess::buildRequest(QUrl url) {
return request;
}
-QNetworkReply* NetworkAccess::request(QUrl url, int operation, const QByteArray& body) {
+QNetworkReply* NetworkAccess::request(QUrl url, int operation, const QByteArray& body, uint offset) {
QNetworkAccessManager *manager = The::networkAccessManager();
QNetworkRequest request = buildRequest(url);
+ if (offset > 0)
+ request.setRawHeader("Range", QString("bytes=%1-").arg(offset).toUtf8());
+
QNetworkReply *networkReply;
switch (operation) {
diff --git a/src/networkaccess.h b/src/networkaccess.h
index a595ac7..7708186 100644
--- a/src/networkaccess.h
+++ b/src/networkaccess.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef NETWORKACCESS_H
#define NETWORKACCESS_H
@@ -43,7 +63,7 @@ public:
NetworkAccess(QObject* parent = 0);
QNetworkReply* request(QUrl url,
int operation = QNetworkAccessManager::GetOperation,
- const QByteArray &body = QByteArray());
+ const QByteArray &body = QByteArray(), uint offset = 0);
NetworkReply* get(QUrl url);
NetworkReply* head(QUrl url);
NetworkReply* post(QUrl url, const QMap& params);
diff --git a/src/painterutils.cpp b/src/painterutils.cpp
new file mode 100644
index 0000000..54ee39e
--- /dev/null
+++ b/src/painterutils.cpp
@@ -0,0 +1,108 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "painterutils.h"
+#include "fontutils.h"
+
+PainterUtils::PainterUtils() { }
+
+void PainterUtils::centeredMessage(QString message, QWidget* widget) {
+ QPainter painter(widget);
+ painter.setFont(FontUtils::bigBold());
+ QSize textSize(QFontMetrics(painter.font()).size(Qt::TextSingleLine, message));
+ QPoint topLeft(
+ (widget->width()-textSize.width())/2,
+ ((widget->height()-textSize.height())/2)
+ );
+ QRect rect(topLeft, textSize);
+
+ /*
+ rect.adjust(0, -1, 0, 0);
+ painter.setPen(QColor(0, 0, 0, 128));
+ painter.drawText(rect, Qt::AlignCenter, message);
+ rect.adjust(0, 1, 0, 0);
+ */
+
+ QPen textPen;
+ textPen.setBrush(widget->palette().mid());
+ painter.setPen(textPen);
+ painter.drawText(rect, Qt::AlignCenter, message);
+}
+
+void PainterUtils::topShadow(QWidget *widget) {
+ static QLinearGradient shadow;
+ static const int shadowHeight = 10;
+ if (shadow.stops().count() == 2) {
+ shadow.setFinalStop(0, shadowHeight);
+ const qreal initialOpacity = 96;
+ for (qreal i = 0; i <= 1; i += 1.0/shadowHeight) {
+ qreal opacity = qPow(initialOpacity, (1.0 - i)) - 1;
+ shadow.setColorAt(i, QColor(0x00, 0x00, 0x00, opacity));
+ }
+ }
+ QRect rect = widget->rect();
+ QPainter p(widget);
+ p.fillRect(rect.x(), rect.y(), rect.width(), shadowHeight, QBrush(shadow));
+}
+
+void PainterUtils::paintBadge(QPainter *painter, const QString &text, bool center) {
+ static const QPixmap badge1 = QPixmap(":/images/badge.png");
+ static const QPixmap badge3 = QPixmap(":/images/badge3.png");
+ static const QPixmap badge4 = QPixmap(":/images/badge4.png");
+ static const int size = badge1.height();
+
+ const int textSize = text.size();
+
+ QPixmap badge;
+ if (textSize < 3) badge = badge1;
+ else if (textSize == 3) badge = badge3;
+ else badge = badge4;
+
+ int x = 0;
+ if (center) x -= badge.width() / 2;
+
+ QRect rect(x, 0, badge.width(), size);
+ painter->drawPixmap(rect, badge);
+
+ QFont f = painter->font();
+ f.setPixelSize(11);
+ f.setHintingPreference(QFont::PreferNoHinting);
+#ifdef APP_MAC
+ f.setFamily("Helvetica");
+#endif
+#ifdef APP_WIN
+ rect.adjust(0, -2, 0, 0);
+#endif
+#ifdef Q_WS_X11
+ rect.adjust(0, -1, 0, 0);
+#endif
+ painter->save();
+ painter->setFont(f);
+
+ rect.adjust(0, 1, 0, 0);
+ painter->setPen(QColor(0, 0, 0, 64));
+ painter->drawText(rect, Qt::AlignCenter, text);
+
+ rect.adjust(0, -1, 0, 0);
+ painter->setPen(Qt::white);
+ painter->drawText(rect, Qt::AlignCenter, text);
+
+ painter->restore();
+}
diff --git a/src/painterutils.h b/src/painterutils.h
new file mode 100644
index 0000000..35557bc
--- /dev/null
+++ b/src/painterutils.h
@@ -0,0 +1,38 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef PAINTERUTILS_H
+#define PAINTERUTILS_H
+
+#include
+
+class PainterUtils {
+
+public:
+ static void centeredMessage(QString message, QWidget* widget);
+ static void topShadow(QWidget *widget);
+ static void paintBadge(QPainter *painter, const QString &text, bool center = false);
+
+private:
+ PainterUtils();
+
+};
+
+#endif // PAINTERUTILS_H
diff --git a/src/playlistitemdelegate.cpp b/src/playlistitemdelegate.cpp
index 79b2304..b681347 100644
--- a/src/playlistitemdelegate.cpp
+++ b/src/playlistitemdelegate.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "playlistitemdelegate.h"
#include "playlistmodel.h"
#include "fontutils.h"
@@ -6,16 +26,15 @@
#include "videodefinition.h"
#include "video.h"
-const qreal PlaylistItemDelegate::THUMB_HEIGHT = 90.0;
-const qreal PlaylistItemDelegate::THUMB_WIDTH = 160.0;
-const qreal PlaylistItemDelegate::PADDING = 10.0;
-
-QRect lastAuthorRect;
-QHash authorRects;
+const int PlaylistItemDelegate::THUMB_HEIGHT = 90;
+const int PlaylistItemDelegate::THUMB_WIDTH = 160;
+const int PlaylistItemDelegate::PADDING = 10;
PlaylistItemDelegate::PlaylistItemDelegate(QObject* parent, bool downloadInfo)
: QStyledItemDelegate(parent),
- downloadInfo(downloadInfo) {
+ downloadInfo(downloadInfo),
+ progressBar(0) {
+
boldFont.setBold(true);
smallerBoldFont = FontUtils::smallBold();
smallerFont = FontUtils::small();
@@ -30,17 +49,26 @@ PlaylistItemDelegate::PlaylistItemDelegate(QObject* parent, bool downloadInfo)
} else createPlayIcon();
}
+PlaylistItemDelegate::~PlaylistItemDelegate() {
+ if (progressBar) delete progressBar;
+}
+
void PlaylistItemDelegate::createPlayIcon() {
playIcon = QPixmap(THUMB_WIDTH, THUMB_HEIGHT);
playIcon.fill(Qt::transparent);
- QPainter painter(&playIcon);
- QPolygon polygon;
+
+ QPixmap tempPixmap(THUMB_WIDTH, THUMB_HEIGHT);
+ tempPixmap.fill(Qt::transparent);
+ QPainter painter(&tempPixmap);
+ painter.setRenderHints(QPainter::Antialiasing, true);
+
const int hPadding = PADDING*6;
const int vPadding = PADDING*2;
+
+ QPolygon polygon;
polygon << QPoint(hPadding, vPadding)
<< QPoint(THUMB_WIDTH-hPadding, THUMB_HEIGHT/2)
<< QPoint(hPadding, THUMB_HEIGHT-vPadding);
- painter.setRenderHints(QPainter::Antialiasing, true);
painter.setBrush(Qt::white);
QPen pen;
pen.setColor(Qt::white);
@@ -49,16 +77,19 @@ void PlaylistItemDelegate::createPlayIcon() {
pen.setCapStyle(Qt::RoundCap);
painter.setPen(pen);
painter.drawPolygon(polygon);
-}
+ painter.end();
-PlaylistItemDelegate::~PlaylistItemDelegate() { }
+ QPainter painter2(&playIcon);
+ painter2.setOpacity(.75);
+ painter2.drawPixmap(0, 0, tempPixmap);
+}
QSize PlaylistItemDelegate::sizeHint( const QStyleOptionViewItem& /*option*/, const QModelIndex& /*index*/ ) const {
- return QSize( 256, THUMB_HEIGHT+1.0);
+ return QSize(THUMB_WIDTH, THUMB_HEIGHT + 1);
}
void PlaylistItemDelegate::paint( QPainter* painter,
- const QStyleOptionViewItem& option, const QModelIndex& index ) const {
+ const QStyleOptionViewItem& option, const QModelIndex& index ) const {
int itemType = index.data(ItemTypeRole).toInt();
if (itemType == ItemTypeVideo) {
@@ -73,24 +104,20 @@ void PlaylistItemDelegate::paint( QPainter* painter,
}
void PlaylistItemDelegate::paintBody( QPainter* painter,
- const QStyleOptionViewItem& option,
- const QModelIndex& index ) const {
-
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index ) const {
painter->save();
painter->translate( option.rect.topLeft() );
-
- QRectF line(0, 0, option.rect.width(), option.rect.height());
+ QRect line(0, 0, option.rect.width(), option.rect.height());
if (downloadInfo) line.setWidth(line.width() / 2);
- painter->setClipRect(line);
const bool isActive = index.data( ActiveTrackRole ).toBool();
const bool isSelected = option.state & QStyle::State_Selected;
// draw the "current track" highlight underneath the text
- if (isActive && !isSelected) {
- paintActiveOverlay(painter, line.x(), line.y(), line.width(), line.height());
- }
+ if (isActive && !isSelected)
+ paintActiveOverlay(painter, line);
// get the video metadata
const VideoPointer videoPointer = index.data( VideoRole ).value();
@@ -101,147 +128,144 @@ void PlaylistItemDelegate::paintBody( QPainter* painter,
// play icon overlayed on the thumb
if (isActive)
- paintPlayIcon(painter);
+ painter->drawPixmap(playIcon.rect(), playIcon);
// time
drawTime(painter, video->formattedDuration(), line);
- if (isActive) painter->setFont(boldFont);
-
- // text color
- if (isSelected)
- painter->setPen(QPen(option.palette.brush(QPalette::HighlightedText), 0));
- else
- painter->setPen(QPen(option.palette.brush(QPalette::Text), 0));
-
- // title
- QString videoTitle = video->title();
- QRectF textBox = line.adjusted(PADDING+THUMB_WIDTH, PADDING, -2 * PADDING, -PADDING);
- textBox = painter->boundingRect( textBox, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, videoTitle);
- painter->drawText(textBox, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, videoTitle);
-
- painter->setFont(smallerFont);
-
- // published date
- QString publishedString = video->published().date().toString(Qt::DefaultLocaleShortDate);
- QSizeF stringSize(QFontMetrics(painter->font()).size( Qt::TextSingleLine, publishedString ) );
- QPointF textLoc(PADDING+THUMB_WIDTH, PADDING*2 + textBox.height());
- QRectF publishedTextBox(textLoc , stringSize);
- painter->drawText(publishedTextBox, Qt::AlignLeft | Qt::AlignTop, publishedString);
-
- // author
- bool authorHovered = false;
- bool authorPressed = false;
- const bool isHovered = index.data(HoveredItemRole).toBool();
- if (isHovered) {
- authorHovered = index.data(AuthorHoveredRole).toBool();
- authorPressed = index.data(AuthorPressedRole).toBool();
- }
-
- painter->save();
- painter->setFont(smallerBoldFont);
- if (!isSelected) {
- if (authorHovered)
- painter->setPen(QPen(option.palette.brush(QPalette::Highlight), 0));
- else
- painter->setPen(QPen(option.palette.brush(QPalette::Mid), 0));
- }
- QString authorString = video->author();
- textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
- stringSize = QSizeF(QFontMetrics(painter->font()).size( Qt::TextSingleLine, authorString ) );
- QRectF authorTextBox(textLoc , stringSize);
- authorRects.insert(index.row(), authorTextBox.toRect());
- painter->drawText(authorTextBox, Qt::AlignLeft | Qt::AlignTop, authorString);
- painter->restore();
-
- // view count
- if (video->viewCount() >= 0) {
- painter->save();
- QLocale locale;
- QString viewCountString = tr("%1 views").arg(locale.toString(video->viewCount()));
- textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
- stringSize = QSizeF(QFontMetrics(painter->font()).size( Qt::TextSingleLine, viewCountString ) );
- QRectF viewCountTextBox(textLoc , stringSize);
- painter->drawText(viewCountTextBox, Qt::AlignLeft | Qt::AlignBottom, viewCountString);
- painter->restore();
- }
-
- if (downloadInfo) {
- painter->save();
- QString definitionString = VideoDefinition::getDefinitionName(video->getDefinitionCode());
- textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
- stringSize = QSizeF(QFontMetrics(painter->font()).size( Qt::TextSingleLine, definitionString ) );
- QRectF viewCountTextBox(textLoc , stringSize);
- painter->drawText(viewCountTextBox, Qt::AlignLeft | Qt::AlignBottom, definitionString);
- painter->restore();
- }
-
- /*
- QLinearGradient myGradient;
- QPen myPen;
- QFont myFont;
- QPointF baseline(authorTextBox.x(), authorTextBox.y() + authorTextBox.height());
- QPainterPath myPath;
- myPath.addText(baseline, boldFont, authorString);
- painter->setBrush(palette.color(QPalette::WindowText));
- painter->setPen(palette.color(QPalette::Dark));
- painter->setRenderHints (QPainter::Antialiasing, true);
- painter->drawPath(myPath);
- */
-
// separator
- painter->setClipping(false);
painter->setPen(option.palette.color(QPalette::Midlight));
painter->drawLine(THUMB_WIDTH, THUMB_HEIGHT, option.rect.width(), THUMB_HEIGHT);
if (!video->thumbnail().isNull())
painter->setPen(Qt::black);
painter->drawLine(0, THUMB_HEIGHT, THUMB_WIDTH-1, THUMB_HEIGHT);
+ if (line.width() > THUMB_WIDTH + 60) {
+
+ if (isActive) painter->setFont(boldFont);
+
+ // text color
+ if (isSelected)
+ painter->setPen(QPen(option.palette.brush(QPalette::HighlightedText), 0));
+ else
+ painter->setPen(QPen(option.palette.brush(QPalette::Text), 0));
+
+ // title
+ QString videoTitle = video->title();
+ QString v = videoTitle;
+ const int flags = Qt::AlignTop | Qt::TextWordWrap;
+ QRect textBox = line.adjusted(PADDING+THUMB_WIDTH, PADDING, 0, 0);
+ textBox = painter->boundingRect(textBox, flags, v);
+ while (textBox.height() > 55 && v.length() > 10) {
+ videoTitle.truncate(videoTitle.length() - 1);
+ v = videoTitle;
+ v = v.trimmed().append("...");
+ textBox = painter->boundingRect(textBox, flags, v);
+ }
+ painter->drawText(textBox, flags, v);
+
+ painter->setFont(smallerFont);
+
+ // published date
+ QString publishedString = video->published().date().toString(Qt::DefaultLocaleShortDate);
+ QSize stringSize(QFontMetrics(painter->font()).size( Qt::TextSingleLine, publishedString ) );
+ QPoint textLoc(PADDING+THUMB_WIDTH, PADDING*2 + textBox.height());
+ QRect publishedTextBox(textLoc , stringSize);
+ painter->drawText(publishedTextBox, Qt::AlignLeft | Qt::AlignTop, publishedString);
+
+ if (line.width() > publishedTextBox.x() + publishedTextBox.width()*2) {
+
+ // author
+ bool authorHovered = false;
+ bool authorPressed = false;
+ const bool isHovered = index.data(HoveredItemRole).toBool();
+ if (isHovered) {
+ authorHovered = index.data(AuthorHoveredRole).toBool();
+ authorPressed = index.data(AuthorPressedRole).toBool();
+ }
+
+ painter->save();
+ painter->setFont(smallerBoldFont);
+ if (!isSelected) {
+ if (authorHovered)
+ painter->setPen(QPen(option.palette.brush(QPalette::Highlight), 0));
+ else
+ painter->setPen(QPen(option.palette.brush(QPalette::Mid), 0));
+ }
+ QString authorString = video->author();
+ textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
+ stringSize = QSize(QFontMetrics(painter->font()).size( Qt::TextSingleLine, authorString ) );
+ QRect authorTextBox(textLoc , stringSize);
+ authorRects.insert(index.row(), authorTextBox);
+ painter->drawText(authorTextBox, Qt::AlignLeft | Qt::AlignTop, authorString);
+ painter->restore();
+
+ if (line.width() > authorTextBox.x() + 50) {
+
+ // view count
+ if (video->viewCount() >= 0) {
+ QLocale locale;
+ QString viewCountString = tr("%1 views").arg(locale.toString(video->viewCount()));
+ textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
+ stringSize = QSize(QFontMetrics(painter->font()).size( Qt::TextSingleLine, viewCountString ) );
+ QRect viewCountTextBox(textLoc , stringSize);
+ painter->drawText(viewCountTextBox, Qt::AlignLeft | Qt::AlignBottom, viewCountString);
+ }
+
+ if (downloadInfo) {
+ QString definitionString = VideoDefinition::getDefinitionName(video->getDefinitionCode());
+ textLoc.setX(textLoc.x() + stringSize.width() + PADDING);
+ stringSize = QSize(QFontMetrics(painter->font()).size( Qt::TextSingleLine, definitionString ) );
+ QRect viewCountTextBox(textLoc , stringSize);
+ painter->drawText(viewCountTextBox, Qt::AlignLeft | Qt::AlignBottom, definitionString);
+ }
+
+ }
+
+ }
+
+ }
+
painter->restore();
if (downloadInfo) paintDownloadInfo(painter, option, index);
}
-void PlaylistItemDelegate::paintActiveOverlay( QPainter *painter, qreal x, qreal y, qreal w, qreal h ) const {
-
- QPalette palette;
- QColor highlightColor = palette.color(QPalette::Highlight);
- QColor backgroundColor = palette.color(QPalette::Base);
- const float animation = 0.25;
- const int gradientRange = 16;
-
- QColor color2 = QColor::fromHsv(
- highlightColor.hue(),
- (int) (backgroundColor.saturation() * (1.0f - animation) + highlightColor.saturation() * animation),
- (int) (backgroundColor.value() * (1.0f - animation) + highlightColor.value() * animation)
- );
- QColor color1 = QColor::fromHsv(
- color2.hue(),
- qMax(color2.saturation() - gradientRange, 0),
- qMin(color2.value() + gradientRange, 255)
- );
- QRect rect((int) x, (int) y, (int) w, (int) h);
- painter->save();
- painter->setPen(Qt::NoPen);
- QLinearGradient linearGradient(0, 0, 0, rect.height());
- linearGradient.setColorAt(0.0, color1);
- linearGradient.setColorAt(1.0, color2);
- painter->setBrush(linearGradient);
- painter->drawRect(rect);
- painter->restore();
-}
+void PlaylistItemDelegate::paintActiveOverlay(QPainter *painter, const QRect &line) const {
+ static QLinearGradient linearGradient;
+ static bool initialized = false;
+
+ if (!initialized) {
+ QPalette palette;
+ QColor highlightColor = palette.color(QPalette::Highlight);
+ QColor backgroundColor = palette.color(QPalette::Base);
+ const float animation = 0.4;
+ const int gradientRange = 16;
+
+ QColor color2 = QColor::fromHsv(
+ highlightColor.hue(),
+ (int) (backgroundColor.saturation() * (1.0f - animation) + highlightColor.saturation() * animation),
+ (int) (backgroundColor.value() * (1.0f - animation) + highlightColor.value() * animation)
+ );
+ QColor color1 = QColor::fromHsv(
+ color2.hue(),
+ qMax(color2.saturation() - gradientRange, 0),
+ qMin(color2.value() + gradientRange, 255)
+ );
+
+ linearGradient = QLinearGradient(0, 0, 0, THUMB_HEIGHT);
+ linearGradient.setColorAt(0.0, color1);
+ linearGradient.setColorAt(1.0, color2);
+ initialized = true;
+ }
-void PlaylistItemDelegate::paintPlayIcon(QPainter *painter) const {
- painter->save();
- painter->setOpacity(.5);
- painter->drawPixmap(playIcon.rect(), playIcon);
- painter->restore();
+ painter->fillRect(line, linearGradient);
}
-void PlaylistItemDelegate::drawTime(QPainter *painter, QString time, QRectF line) const {
+void PlaylistItemDelegate::drawTime(QPainter *painter, const QString &time, const QRect &line) const {
static const int timePadding = 4;
- QRectF textBox = painter->boundingRect(line, Qt::AlignLeft | Qt::AlignTop, time);
+ QRect textBox = painter->boundingRect(line, Qt::AlignLeft | Qt::AlignTop, time);
// add padding
textBox.adjust(0, 0, timePadding, 0);
// move to bottom right corner of the thumb
@@ -261,8 +285,8 @@ void PlaylistItemDelegate::drawTime(QPainter *painter, QString time, QRectF line
}
void PlaylistItemDelegate::paintDownloadInfo( QPainter* painter,
- const QStyleOptionViewItem& option,
- const QModelIndex& index ) const {
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index ) const {
// get the video metadata
const DownloadItemPointer downloadItemPointer = index.data(DownloadItemRole).value();
@@ -285,11 +309,11 @@ void PlaylistItemDelegate::paintDownloadInfo( QPainter* painter,
QString eta = DownloadItem::formattedTime(downloadItem->remainingTime());
message = tr("%1 of %2 (%3) â %4").arg(
- downloaded,
- total,
- speed,
- eta
- );
+ downloaded,
+ total,
+ speed,
+ eta
+ );
} else if (status == Starting) {
message = tr("Preparing");
} else if (status == Failed) {
@@ -343,9 +367,9 @@ void PlaylistItemDelegate::paintDownloadInfo( QPainter* painter,
else if (status == Finished) {
if (downloadButtonHovered)
#ifdef APP_MAC
- message = tr("Show in %1").arg("Finder");
+ message = tr("Show in %1").arg("Finder");
#else
- message = tr("Open parent folder");
+ message = tr("Open parent folder");
#endif
painter->save();
QIcon searchIcon = Utils::icon("system-search");
@@ -361,20 +385,19 @@ void PlaylistItemDelegate::paintDownloadInfo( QPainter* painter,
painter->restore();
}
- QRectF textBox = line.adjusted(PADDING, PADDING*2 + progressBar->sizeHint().height(), -2 * PADDING, -PADDING);
+ QRect textBox = line.adjusted(PADDING, PADDING*2 + progressBar->sizeHint().height(), -2 * PADDING, -PADDING);
textBox = painter->boundingRect( textBox, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, message);
painter->drawText(textBox, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, message);
painter->restore();
-
}
-QRect PlaylistItemDelegate::downloadButtonRect(QRect line) const {
+QRect PlaylistItemDelegate::downloadButtonRect(const QRect &line) const {
return QRect(
- line.width() - PADDING*2 - 16,
- PADDING + progressBar->sizeHint().height() / 2 - 8,
- 16,
- 16);
+ line.width() - PADDING*2 - 16,
+ PADDING + progressBar->sizeHint().height() / 2 - 8,
+ 16,
+ 16);
}
QRect PlaylistItemDelegate::authorRect(const QModelIndex& index) const {
diff --git a/src/playlistitemdelegate.h b/src/playlistitemdelegate.h
index 5a7b2b3..222ad9a 100644
--- a/src/playlistitemdelegate.h
+++ b/src/playlistitemdelegate.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef PLAYLISTITEMDELEGATE_H
#define PLAYLISTITEMDELEGATE_H
@@ -13,7 +33,7 @@ public:
QSize sizeHint( const QStyleOptionViewItem&, const QModelIndex& ) const;
void paint( QPainter*, const QStyleOptionViewItem&, const QModelIndex& ) const;
- QRect downloadButtonRect(QRect line) const;
+ QRect downloadButtonRect(const QRect &line) const;
QRect authorRect(const QModelIndex& index) const;
private:
@@ -24,15 +44,14 @@ private:
const QModelIndex& index ) const;
// active track painting
- void paintActiveOverlay( QPainter *painter, qreal x, qreal y, qreal w, qreal h ) const;
- void paintPlayIcon(QPainter *painter) const;
+ void paintActiveOverlay(QPainter *painter, const QRect &line) const;
// Paints the video duration
- void drawTime(QPainter *painter, QString time, QRectF line) const;
+ void drawTime(QPainter *painter, const QString &time, const QRect &line) const;
- static const qreal THUMB_WIDTH;
- static const qreal THUMB_HEIGHT;
- static const qreal PADDING;
+ static const int THUMB_WIDTH;
+ static const int THUMB_HEIGHT;
+ static const int PADDING;
QPixmap playIcon;
QFont boldFont;
@@ -42,6 +61,8 @@ private:
bool downloadInfo;
QProgressBar *progressBar;
+ mutable QRect lastAuthorRect;
+ mutable QHash authorRects;
};
#endif
diff --git a/src/playlistmodel.cpp b/src/playlistmodel.cpp
index e14fbd2..b3bf4cf 100644
--- a/src/playlistmodel.cpp
+++ b/src/playlistmodel.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "playlistmodel.h"
#include "videomimedata.h"
#include "videosource.h"
@@ -48,7 +68,6 @@ QVariant PlaylistModel::data(const QModelIndex &index, int role) const {
case ItemTypeRole:
return ItemTypeShowMore;
case Qt::DisplayRole:
- case Qt::StatusTipRole:
if (!errorMessage.isEmpty()) return errorMessage;
if (searching) return tr("Searching...");
if (canSearchMore) return tr("Show %1 More").arg(maxItems);
@@ -92,6 +111,8 @@ QVariant PlaylistModel::data(const QModelIndex &index, int role) const {
return authorHovered;
case AuthorPressedRole:
return authorPressed;
+ case Qt::StatusTipRole:
+ return video->description();
}
return QVariant();
@@ -187,8 +208,11 @@ void PlaylistModel::abortSearch() {
while (!videos.isEmpty())
delete videos.takeFirst();
reset();
- videoSource->abort();
+ // if (videoSource) videoSource->abort();
searching = false;
+ m_activeRow = -1;
+ m_activeVideo = 0;
+ skip = 1;
}
void PlaylistModel::searchFinished(int total) {
@@ -213,25 +237,19 @@ void PlaylistModel::searchError(QString message) {
void PlaylistModel::addVideos(QList newVideos) {
if (newVideos.isEmpty()) return;
-
- bool isFirstVideo = videos.isEmpty();
-
- beginInsertRows(QModelIndex(), videos.size(), videos.size() + newVideos.size() - 1);
+ beginInsertRows(QModelIndex(), videos.size(), videos.size() + newVideos.size() - 2);
videos.append(newVideos);
endInsertRows();
-
foreach (Video* video, newVideos) {
connect(video, SIGNAL(gotThumbnail()),
SLOT(updateThumbnail()), Qt::UniqueConnection);
video->loadThumbnail();
}
-
- // if (isFirstVideo) handleFirstVideo(newVideos.first());
}
void PlaylistModel::handleFirstVideo(Video *video) {
- int currentVideoRow = rowForCloneVideo(MediaView::instance()->getCurrentVideo());
+ int currentVideoRow = rowForCloneVideo(MediaView::instance()->getCurrentVideoId());
if (currentVideoRow != -1) setActiveRow(currentVideoRow, false);
else {
QSettings settings;
@@ -241,7 +259,7 @@ void PlaylistModel::handleFirstVideo(Video *video) {
QSettings settings;
if (!settings.value("manualplay", false).toBool()) {
- int newActiveRow = rowForCloneVideo(MediaView::instance()->getCurrentVideo());
+ int newActiveRow = rowForCloneVideo(MediaView::instance()->getCurrentVideoId());
if (newActiveRow != -1) setActiveRow(newActiveRow, false);
else setActiveRow(0);
}
@@ -272,8 +290,8 @@ void PlaylistModel::handleFirstVideo(Video *video) {
QString channel = searchParams->author();
if (!channel.isEmpty() && !searchParams->isTransient()) {
QString value;
- if (!video->authorUri().isEmpty() && video->authorUri() != video->author())
- value = video->authorUri() + "|" + video->author();
+ if (!video->userId().isEmpty() && video->userId() != video->author())
+ value = video->userId() + "|" + video->author();
else value = video->author();
QStringList channels = settings.value(recentChannelsKey).toStringList();
channels.removeAll(value);
@@ -419,11 +437,10 @@ bool PlaylistModel::dropMimeData(const QMimeData *data,
}
-int PlaylistModel::rowForCloneVideo(Video *video) const {
- if (!video) return -1;
+int PlaylistModel::rowForCloneVideo(const QString &videoId) const {
for (int i = 0; i < videos.size(); ++i) {
Video *v = videos.at(i);
- if (v->id() == video->id()) return i;
+ if (v->id() == videoId) return i;
}
return -1;
}
diff --git a/src/playlistmodel.h b/src/playlistmodel.h
index 6b665a3..a5c3b7c 100644
--- a/src/playlistmodel.h
+++ b/src/playlistmodel.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef PLAYLISTMODEL_H
#define PLAYLISTMODEL_H
@@ -56,7 +76,7 @@ public:
Video* videoAt( int row ) const;
Video* activeVideo() const;
- int rowForCloneVideo(Video *video) const;
+ int rowForCloneVideo(const QString &videoId) const;
VideoSource* getVideoSource() { return videoSource; }
void setVideoSource(VideoSource *videoSource);
diff --git a/src/playlistview.cpp b/src/playlistview.cpp
index d8cbf99..41b54d3 100644
--- a/src/playlistview.cpp
+++ b/src/playlistview.cpp
@@ -1,13 +1,36 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "playlistview.h"
#include "playlistmodel.h"
#include "playlistitemdelegate.h"
+#include "painterutils.h"
-PlaylistView::PlaylistView(QWidget *parent) : QListView(parent) {
- clickableAuthors = true;
-
+PlaylistView::PlaylistView(QWidget *parent) : QListView(parent),
+ clickableAuthors(true) {
setItemDelegate(new PlaylistItemDelegate(this));
setSelectionMode(QAbstractItemView::ExtendedSelection);
+ setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
+ setMinimumWidth(175);
+
// dragndrop
setDragEnabled(true);
setAcceptDrops(true);
@@ -18,7 +41,7 @@ PlaylistView::PlaylistView(QWidget *parent) : QListView(parent) {
setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
setFrameShape(QFrame::NoFrame);
setAttribute(Qt::WA_MacShowFocusRect, false);
- // setMinimumSize(120, 240);
+ setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setUniformItemSizes(true);
connect(this, SIGNAL(entered(const QModelIndex &)),
@@ -38,7 +61,6 @@ void PlaylistView::leaveEvent(QEvent * /* event */) {
void PlaylistView::mouseMoveEvent(QMouseEvent *event) {
QListView::mouseMoveEvent(event);
- // QWidget::mouseMoveEvent(event);
if (isHoveringThumbnail(event)) {
setCursor(Qt::PointingHandCursor);
@@ -116,3 +138,8 @@ bool PlaylistView::isShowMoreItem(const QModelIndex &index) {
return model()->rowCount() > 1 &&
model()->rowCount() == index.row() + 1;
}
+
+void PlaylistView::paintEvent(QPaintEvent *event) {
+ QListView::paintEvent(event);
+ PainterUtils::topShadow(viewport());
+}
diff --git a/src/playlistview.h b/src/playlistview.h
index fb3bd0c..82c5edd 100644
--- a/src/playlistview.h
+++ b/src/playlistview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef PLAYLISTVIEW_H
#define PLAYLISTVIEW_H
@@ -16,6 +36,7 @@ protected:
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
+ void paintEvent(QPaintEvent *event);
signals:
void authorPushed(QModelIndex index);
diff --git a/src/refinesearchbutton.cpp b/src/refinesearchbutton.cpp
index 4917a96..aa78fcc 100644
--- a/src/refinesearchbutton.cpp
+++ b/src/refinesearchbutton.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "refinesearchbutton.h"
static const int refineButtonSize = 48;
diff --git a/src/refinesearchbutton.h b/src/refinesearchbutton.h
index 05c15cb..a861d8f 100644
--- a/src/refinesearchbutton.h
+++ b/src/refinesearchbutton.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef REFINESEARCHBUTTON_H
#define REFINESEARCHBUTTON_H
diff --git a/src/refinesearchwidget.cpp b/src/refinesearchwidget.cpp
index f1a140e..46f4099 100644
--- a/src/refinesearchwidget.cpp
+++ b/src/refinesearchwidget.cpp
@@ -1,7 +1,27 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "refinesearchwidget.h"
#include "fontutils.h"
#include "searchparams.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
@@ -119,8 +139,10 @@ void RefineSearchWidget::setup() {
}
layout->addSpacing(spacing);
- QPushButton *doneButton = new QPushButton(tr("Done"), this);
+ doneButton = new QPushButton(tr("Done"), this);
doneButton->setDefault(true);
+ doneButton->setAutoDefault(true);
+ doneButton->setFocusPolicy(Qt::StrongFocus);
doneButton->setFont(FontUtils::medium());
doneButton->setProperty("custom", true);
doneButton->setProperty("important", true);
@@ -138,7 +160,7 @@ void RefineSearchWidget::setupLabel(QString text, QBoxLayout *layout, QString pa
QLabel *icon = new QLabel(this);
icon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QString resource = paramName;
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
resource = Extra::resourceName(resource);
#endif
QPixmap pixmap = QPixmap(":/images/search-" + resource + ".png");
@@ -207,8 +229,6 @@ void RefineSearchWidget::actionTriggered(QAction *action) {
void RefineSearchWidget::setSearchParams(SearchParams *params) {
setup();
- qDebug() << (params != 0);
-
The::globalActions()->value("refine-search")->setEnabled(params);
setEnabled(params);
@@ -239,6 +259,8 @@ void RefineSearchWidget::setSearchParams(SearchParams *params) {
Qt::UniqueConnection);
dirty = false;
+
+ doneButton->setFocus();
}
void RefineSearchWidget::doneClicked() {
diff --git a/src/refinesearchwidget.h b/src/refinesearchwidget.h
index 78c6e1e..7330ca4 100644
--- a/src/refinesearchwidget.h
+++ b/src/refinesearchwidget.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef REFINESEARCHWIDGET_H
#define REFINESEARCHWIDGET_H
@@ -35,6 +55,7 @@ private:
QHash bars;
bool dirty;
+ QPushButton *doneButton;
};
diff --git a/src/regionsview.cpp b/src/regionsview.cpp
index c83ed92..a6189aa 100644
--- a/src/regionsview.cpp
+++ b/src/regionsview.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "regionsview.h"
#include "ytregions.h"
#include "mainwindow.h"
diff --git a/src/regionsview.h b/src/regionsview.h
index cf92d20..f0029ca 100644
--- a/src/regionsview.h
+++ b/src/regionsview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef REGIONSVIEW_H
#define REGIONSVIEW_H
diff --git a/src/searchparams.cpp b/src/searchparams.cpp
index a7906fc..be08e72 100644
--- a/src/searchparams.cpp
+++ b/src/searchparams.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "searchparams.h"
SearchParams::SearchParams(QObject *parent) : QObject(parent) {
diff --git a/src/searchparams.h b/src/searchparams.h
index 24e023f..f2e9d03 100644
--- a/src/searchparams.h
+++ b/src/searchparams.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SEARCHPARAMS_H
#define SEARCHPARAMS_H
diff --git a/src/searchview.cpp b/src/searchview.cpp
index 950d342..522701e 100644
--- a/src/searchview.cpp
+++ b/src/searchview.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "searchview.h"
#include "constants.h"
#include "fontutils.h"
@@ -9,13 +29,14 @@
#else
#include "searchlineedit.h"
#endif
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
#ifdef APP_ACTIVATION
#include "activation.h"
#endif
#include "mainwindow.h"
+#include "painterutils.h"
namespace The {
QHash* globalActions();
@@ -36,6 +57,8 @@ SearchView::SearchView(QWidget *parent) : QWidget(parent) {
setAttribute(Qt::WA_OpaquePaintEvent);
#endif
+ setAutoFillBackground(true);
+
QBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->setMargin(PADDING);
mainLayout->setSpacing(0);
@@ -68,6 +91,12 @@ SearchView::SearchView(QWidget *parent) : QWidget(parent) {
.arg(Constants::WEBSITE, Constants::NAME)
+ "", this);
welcomeLabel->setOpenExternalLinks(true);
+#ifdef APP_WIN
+ QFont f = welcomeLabel->font();
+ f.setHintingPreference(QFont::PreferNoHinting);
+ f.setFamily("Segoe UI Light");
+ welcomeLabel->setFont(f);
+#endif
layout->addWidget(welcomeLabel);
layout->addSpacing(PADDING / 2);
@@ -280,7 +309,7 @@ void SearchView::watch(QString query) {
searchParams->setKeywords(query);
else {
// remove spaces from channel name
- query = query.replace(" ", "");
+ query = query.simplified();
searchParams->setAuthor(query);
searchParams->setSortBy(SearchParams::SortByNewest);
}
@@ -332,9 +361,8 @@ void SearchView::watchKeywords(QString query) {
emit search(searchParams);
}
-void SearchView::paintEvent(QPaintEvent * /*event*/) {
- QPainter painter(this);
-
+void SearchView::paintEvent(QPaintEvent *event) {
+ QWidget::paintEvent(event);
#if defined(APP_MAC) | defined(APP_WIN)
QBrush brush;
if (window()->isActiveWindow()) {
@@ -342,21 +370,17 @@ void SearchView::paintEvent(QPaintEvent * /*event*/) {
} else {
brush = palette().window();
}
+ QPainter painter(this);
painter.fillRect(0, 0, width(), height(), brush);
+ painter.end();
#endif
-
- static QLinearGradient shadow;
- static const int shadowHeight = 10;
- if (shadow.stops().count() == 2) {
- shadow.setFinalStop(0, shadowHeight);
- const qreal initialOpacity = 96;
- for (qreal i = 0; i <= 1; i += 1.0/shadowHeight) {
- qreal opacity = qPow(initialOpacity, (1.0 - i)) - 1;
- shadow.setColorAt(i, QColor(0x00, 0x00, 0x00, opacity));
- }
- }
- QRect r = rect();
- painter.fillRect(r.x(), r.y(), r.width(), shadowHeight, QBrush(shadow));
+#ifdef APP_UBUNTU
+ QStyleOption o;
+ o.initFrom(this);
+ QPainter p(this);
+ style()->drawPrimitive(QStyle::PE_Widget, &o, &p, this);
+#endif
+ // PainterUtils::topShadow(this);
}
void SearchView::searchTypeChanged(int index) {
diff --git a/src/searchview.h b/src/searchview.h
index 4fcf504..9cefc71 100644
--- a/src/searchview.h
+++ b/src/searchview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef __SEARCHVIEW_H__
#define __SEARCHVIEW_H__
diff --git a/src/seekslider.cpp b/src/seekslider.cpp
new file mode 100644
index 0000000..281673f
--- /dev/null
+++ b/src/seekslider.cpp
@@ -0,0 +1,15 @@
+#include "seekslider.h"
+
+class MyProxyStyle : public QProxyStyle {
+public:
+ int styleHint(StyleHint hint, const QStyleOption *option = 0,
+ const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const {
+ if (hint == SH_Slider_AbsoluteSetButtons)
+ return Qt::LeftButton;
+ return QProxyStyle::styleHint(hint, option, widget, returnData);
+ }
+};
+
+SeekSlider::SeekSlider(QWidget *parent) : QSlider(parent) {
+ setStyle(new MyProxyStyle());
+}
diff --git a/src/seekslider.h b/src/seekslider.h
new file mode 100644
index 0000000..87e6cb9
--- /dev/null
+++ b/src/seekslider.h
@@ -0,0 +1,15 @@
+#ifndef SEEKSLIDER_H
+#define SEEKSLIDER_H
+
+#include
+
+class SeekSlider : public QSlider {
+
+ Q_OBJECT
+
+public:
+ SeekSlider(QWidget *parent = 0);
+
+};
+
+#endif // SEEKSLIDER_H
diff --git a/src/segmentedcontrol.cpp b/src/segmentedcontrol.cpp
index a896fbd..27e6390 100644
--- a/src/segmentedcontrol.cpp
+++ b/src/segmentedcontrol.cpp
@@ -1,6 +1,27 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "segmentedcontrol.h"
#include "fontutils.h"
#include "mainwindow.h"
+#include "painterutils.h"
static const QColor borderColor = QColor(0x26, 0x26, 0x26);
@@ -233,13 +254,22 @@ void SegmentedControl::paintButton(QPainter *painter, const QRect& rect, const Q
painter->setFont(FontUtils::smallBold());
+ const QString text = action->text();
+
// text shadow
painter->setPen(QColor(0, 0, 0, 128));
- painter->drawText(0, -1, width, height, Qt::AlignCenter, action->text());
+ painter->drawText(0, -1, width, height, Qt::AlignCenter, text);
painter->setPen(QPen(Qt::white, 1));
- painter->drawText(0, 0, width, height, Qt::AlignCenter, action->text());
+ painter->drawText(0, 0, width, height, Qt::AlignCenter, text);
+
+ if (action->property("notifyCount").isValid()) {
+ QRect textBox = painter->boundingRect(rect,
+ Qt::AlignCenter,
+ text);
+ painter->translate((width + textBox.width()) / 2 + 10, (height - 20) / 2);
+ PainterUtils::paintBadge(painter, action->property("notifyCount").toString());
+ }
painter->restore();
}
-
diff --git a/src/segmentedcontrol.h b/src/segmentedcontrol.h
index 094a3b7..ba1ccdf 100644
--- a/src/segmentedcontrol.h
+++ b/src/segmentedcontrol.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SEGMENTEDCONTROL_H
#define SEGMENTEDCONTROL_H
diff --git a/src/sidebarheader.cpp b/src/sidebarheader.cpp
index 91670a9..dc8026e 100644
--- a/src/sidebarheader.cpp
+++ b/src/sidebarheader.cpp
@@ -1,8 +1,29 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "sidebarheader.h"
#include "utils.h"
#include "mediaview.h"
#include "videosource.h"
#include "fontutils.h"
+#include "utils.h"
SidebarHeader::SidebarHeader(QWidget *parent) : QToolBar(parent) { }
@@ -11,6 +32,8 @@ void SidebarHeader::setup() {
if (isSetup) return;
isSetup = true;
+ setIconSize(QSize(16, 16));
+
backAction = new QAction(
Utils::icon("go-previous"),
tr("&Back"), this);
@@ -27,19 +50,16 @@ void SidebarHeader::setup() {
foreach (QAction* action, actions()) {
window()->addAction(action);
- action->setAutoRepeat(false);
+ Utils::setupAction(action);
}
- /*
QWidget *spacerWidget = new QWidget(this);
spacerWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- spacerWidget->setVisible(true);
addWidget(spacerWidget);
- */
}
QSize SidebarHeader::minimumSizeHint (void) const {
- return(QSize(1, QFontMetrics(font()).height() * 1.9));
+ return(QSize(160, QFontMetrics(font()).height() * 1.9));
}
void SidebarHeader::updateInfo() {
@@ -87,6 +107,14 @@ void SidebarHeader::updateTitle(QString title) {
void SidebarHeader::setTitle(QString title) {
this->title = title;
update();
+
+ QList history = MediaView::instance()->getHistory();
+ int currentIndex = MediaView::instance()->getHistoryIndex();
+ VideoSource *currentVideoSource = history.at(currentIndex);
+ foreach (QAction* action, videoSourceActions)
+ removeAction(action);
+ videoSourceActions = currentVideoSource->getActions();
+ addActions(videoSourceActions);
}
void SidebarHeader::paintEvent(QPaintEvent *event) {
@@ -101,12 +129,13 @@ void SidebarHeader::paintEvent(QPaintEvent *event) {
QString t = title;
QRect textBox = p.boundingRect(r, Qt::AlignCenter, t);
int i = 1;
- static const int margin = 100;
- while (textBox.width() > r.width() - margin) {
- t = t.left(t.length() - i) + "...";
+ static const int margin = 50;
+ while (textBox.width() > r.width() - margin*2 && t.length() > 3) {
+ t = t.left(t.length() - i).trimmed() + QLatin1String("...");
textBox = p.boundingRect(r, Qt::AlignCenter, t);
i++;
}
-
p.drawText(r, Qt::AlignCenter, t);
+
+
}
diff --git a/src/sidebarheader.h b/src/sidebarheader.h
index 1ef4937..8591d54 100644
--- a/src/sidebarheader.h
+++ b/src/sidebarheader.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SIDEBARHEADER_H
#define SIDEBARHEADER_H
@@ -25,6 +45,7 @@ private:
QAction *backAction;
QAction * forwardAction;
QString title;
+ QList videoSourceActions;
};
#endif // SIDEBARHEADER_H
diff --git a/src/sidebarwidget.cpp b/src/sidebarwidget.cpp
index 5a5647f..fd5fd40 100644
--- a/src/sidebarwidget.cpp
+++ b/src/sidebarwidget.cpp
@@ -1,8 +1,28 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "sidebarwidget.h"
#include "refinesearchbutton.h"
#include "refinesearchwidget.h"
#include "sidebarheader.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
@@ -44,10 +64,6 @@ SidebarWidget::SidebarWidget(QWidget *parent) :
}
void SidebarWidget::setup() {
- static bool isSetup = false;
- if (isSetup) return;
- isSetup = true;
-
refineSearchButton = new RefineSearchButton(this);
refineSearchButton->setStatusTip(tr("Refine Search")
+ " (" + QKeySequence(Qt::CTRL + Qt::Key_R).toString(QKeySequence::NativeText) + ")");
@@ -72,7 +88,6 @@ void SidebarWidget::setPlaylist(QListView *playlist) {
}
void SidebarWidget::showPlaylist() {
- setup();
stackedWidget->setCurrentWidget(playlist);
The::globalActions()->value("refine-search")->setChecked(false);
}
@@ -81,8 +96,8 @@ void SidebarWidget::showRefineSearchWidget() {
if (!refineSearchWidget->isEnabled()) return;
refineSearchWidget->setDirty(false);
stackedWidget->setCurrentWidget(refineSearchWidget);
- refineSearchWidget->setFocus();
-#ifndef Q_WS_X11
+ // refineSearchWidget->setFocus();
+#ifdef APP_EXTRA
Extra::fadeInWidget(playlist, refineSearchWidget);
#endif
refineSearchButton->hide();
@@ -92,7 +107,7 @@ void SidebarWidget::showRefineSearchWidget() {
void SidebarWidget::hideRefineSearchWidget() {
stackedWidget->setCurrentWidget(playlist);
playlist->setFocus();
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
Extra::fadeInWidget(refineSearchWidget, playlist);
#endif
The::globalActions()->value("refine-search")->setChecked(false);
diff --git a/src/sidebarwidget.h b/src/sidebarwidget.h
index 26d9bf0..cd8efe6 100644
--- a/src/sidebarwidget.h
+++ b/src/sidebarwidget.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SIDEBARWIDGET_H
#define SIDEBARWIDGET_H
diff --git a/src/spacer.cpp b/src/spacer.cpp
index 95594fc..07a9c55 100644
--- a/src/spacer.cpp
+++ b/src/spacer.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "spacer.h"
Spacer::Spacer(QWidget *parent) : QWidget(parent) { }
diff --git a/src/spacer.h b/src/spacer.h
index 3d1f44f..88ae160 100644
--- a/src/spacer.h
+++ b/src/spacer.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SPACER_H
#define SPACER_H
diff --git a/src/standardfeedsview.cpp b/src/standardfeedsview.cpp
index 1aae3e3..4bfeee6 100644
--- a/src/standardfeedsview.cpp
+++ b/src/standardfeedsview.cpp
@@ -1,16 +1,35 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "standardfeedsview.h"
#include "videosourcewidget.h"
#include "ytcategories.h"
#include "ytstandardfeed.h"
#include "ytregions.h"
#include "mainwindow.h"
+#include "painterutils.h"
namespace The {
QHash* globalActions();
}
-static const int cols = 5;
-
StandardFeedsView::StandardFeedsView(QWidget *parent) : QWidget(parent),
layout(0) {
QPalette p = palette();
@@ -76,6 +95,7 @@ void StandardFeedsView::addVideoSourceWidget(VideoSource *videoSource) {
connect(w, SIGNAL(activated(VideoSource*)),
SIGNAL(activated(VideoSource*)));
int i = layout->count();
+ static const int cols = 5;
layout->addWidget(w, i / cols, i % cols);
}
@@ -83,18 +103,21 @@ QList StandardFeedsView::getMainFeeds() {
QList feeds;
feeds << buildStardardFeed("most_popular", tr("Most Popular"))
- << buildStardardFeed("recently_featured", tr("Featured"))
+ // << buildStardardFeed("recently_featured", tr("Featured"))
<< buildStardardFeed("most_shared", tr("Most Shared"))
<< buildStardardFeed("most_discussed", tr("Most Discussed"))
- << buildStardardFeed("top_rated", tr("Top Rated"));
+ << buildStardardFeed("top_rated", tr("Top Rated"))
+ << buildStardardFeed("most_popular", tr("All Time Popular"), "all_time");
return feeds;
}
-YTStandardFeed* StandardFeedsView::buildStardardFeed(QString feedId, QString label) {
+YTStandardFeed* StandardFeedsView::buildStardardFeed(
+ QString feedId, QString label, QString time) {
YTStandardFeed *feed = new YTStandardFeed(this);
feed->setFeedId(feedId);
feed->setLabel(label);
+ if (!time.isEmpty()) feed->setTime(time);
feed->setRegionId(YTRegions::currentRegionId());
return feed;
}
@@ -121,4 +144,8 @@ void StandardFeedsView::selectLocalRegion() {
load();
}
+void StandardFeedsView::paintEvent(QPaintEvent *event) {
+ QWidget::paintEvent(event);
+ PainterUtils::topShadow(this);
+}
diff --git a/src/standardfeedsview.h b/src/standardfeedsview.h
index 17d850f..1d52143 100644
--- a/src/standardfeedsview.h
+++ b/src/standardfeedsview.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef CATEGORIESVIEW_H
#define CATEGORIESVIEW_H
@@ -22,6 +42,9 @@ public slots:
void appear();
void disappear();
void load();
+
+protected:
+ void paintEvent(QPaintEvent *event);
private slots:
void layoutCategories(const QList &categories);
@@ -31,7 +54,7 @@ private slots:
private:
void addVideoSourceWidget(VideoSource *videoSource);
QList getMainFeeds();
- YTStandardFeed* buildStardardFeed(QString feedId, QString label);
+ YTStandardFeed* buildStardardFeed(QString feedId, QString label, QString time = QString());
QGridLayout *layout;
};
diff --git a/src/suggester.h b/src/suggester.h
index ad39f92..e14492f 100644
--- a/src/suggester.h
+++ b/src/suggester.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef SUGGESTER_H
#define SUGGESTER_H
diff --git a/src/temporary.cpp b/src/temporary.cpp
index 362cbd8..3f29d70 100644
--- a/src/temporary.cpp
+++ b/src/temporary.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "temporary.h"
#include "constants.h"
diff --git a/src/temporary.h b/src/temporary.h
index 50b9633..de5e24d 100644
--- a/src/temporary.h
+++ b/src/temporary.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef TEMPORARY_H
#define TEMPORARY_H
diff --git a/src/updatechecker.cpp b/src/updatechecker.cpp
index fc794d3..af7c349 100644
--- a/src/updatechecker.cpp
+++ b/src/updatechecker.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "updatechecker.h"
#include "networkaccess.h"
#include "constants.h"
@@ -14,7 +34,7 @@ UpdateChecker::UpdateChecker() {
}
void UpdateChecker::checkForUpdate() {
- QUrl updateUrl(QString(Constants::WEBSITE) + "-ws/release.xml");
+ QUrl updateUrl(QLatin1String(Constants::WEBSITE) + "-ws/release.xml");
updateUrl.addQueryItem("v", Constants::VERSION);
#ifdef APP_MAC
diff --git a/src/updatechecker.h b/src/updatechecker.h
index 8d6cf08..74f0fb9 100644
--- a/src/updatechecker.h
+++ b/src/updatechecker.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef UPDATECHECKER_H
#define UPDATECHECKER_H
diff --git a/src/urllineedit.h b/src/urllineedit.h
index 037bb8b..a8e4a12 100644
--- a/src/urllineedit.h
+++ b/src/urllineedit.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/src/userview.cpp b/src/userview.cpp
deleted file mode 100644
index af6257a..0000000
--- a/src/userview.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "userview.h"
-
-UserView::UserView(QWidget *parent) : QWidget(parent) {
- layout = new QGridLayout(this);
-}
diff --git a/src/userview.h b/src/userview.h
deleted file mode 100644
index bb03acd..0000000
--- a/src/userview.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef USERVIEW_H
-#define USERVIEW_H
-
-#include
-#include "view.h"
-
-class VideoSource;
-
-class UserView : public QWidget, public View {
-
- Q_OBJECT
-
-public:
- UserView(QWidget *parent = 0);
-
-signals:
- void activated(VideoSource *standardFeed);
-
-private:
- QGridLayout *layout;
-
-};
-
-#endif // USERVIEW_H
diff --git a/src/utils.cpp b/src/utils.cpp
index 01b03b3..5c5aa1e 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -1,32 +1,96 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "utils.h"
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
#include "extra.h"
#endif
-QIcon getIcon(const QString &name) {
-#ifdef Q_WS_X11
- return QIcon::fromTheme(name);
-#else
- return Extra::getIcon(name);
-#endif
+QIcon Utils::themeIcon(const QString &name) {
+ if (QIcon::hasThemeIcon(name))
+ return QIcon::fromTheme(name);
+ else
+ return QIcon(QString(":/images/%1.png").arg(name));
}
QIcon Utils::icon(const QString &name) {
-#ifdef Q_WS_X11
- QString themeName = qApp->property("style").toString();
- if (themeName == QLatin1String("Ambiance"))
- return icon(QStringList() << name + "-symbolic" << name);
- else return getIcon(name);
-#else
+#ifdef APP_EXTRA
return Extra::getIcon(name);
+#else
+ return themeIcon(name);
#endif
}
QIcon Utils::icon(const QStringList &names) {
QIcon icon;
foreach (QString name, names) {
- icon = getIcon(name);
+ icon = Utils::themeIcon(name);
if (!icon.availableSizes().isEmpty()) break;
}
return icon;
}
+
+QIcon Utils::tintedIcon(const QString &name, const QColor &color, QList sizes) {
+ QIcon i = icon(name);
+ QIcon t;
+ if (sizes.isEmpty()) sizes = i.availableSizes();
+ foreach (QSize size, sizes) {
+ QPixmap pixmap = i.pixmap(size);
+ QImage tintedImage = tinted(pixmap.toImage(), color);
+ t.addPixmap(QPixmap::fromImage(tintedImage));
+ }
+ return t;
+}
+
+QImage Utils::grayscaled(const QImage &image) {
+ QImage img = image;
+ int pixels = img.width() * img.height();
+ unsigned int *data = (unsigned int *)img.bits();
+ for (int i = 0; i < pixels; ++i) {
+ int val = qGray(data[i]);
+ data[i] = qRgba(val, val, val, qAlpha(data[i]));
+ }
+ return img;
+}
+
+QImage Utils::tinted(const QImage &image, const QColor &color,
+ QPainter::CompositionMode mode) {
+ QImage img(image.size(), QImage::Format_ARGB32_Premultiplied);
+ QPainter painter(&img);
+ painter.drawImage(0, 0, grayscaled(image));
+ painter.setCompositionMode(mode);
+ painter.fillRect(img.rect(), color);
+ painter.end();
+ img.setAlphaChannel(image.alphaChannel());
+ return img;
+}
+
+void Utils::setupAction(QAction *action) {
+ // never autorepeat.
+ // unexperienced users tend to keep keys pressed for a "long" time
+ action->setAutoRepeat(false);
+
+ // show keyboard shortcuts in the status bar
+ if (!action->shortcut().isEmpty())
+ action->setStatusTip(action->statusTip() +
+ " (" +
+ action->shortcut().toString(QKeySequence::NativeText) +
+ ")");
+}
diff --git a/src/utils.h b/src/utils.h
index 1b023e8..b62bddf 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef UTILS_H
#define UTILS_H
@@ -6,12 +26,18 @@
class Utils {
public:
+ static QIcon themeIcon(const QString &name);
static QIcon icon(const QString &name);
static QIcon icon(const QStringList &names);
+ static QIcon tintedIcon(const QString &name, const QColor &color,
+ QList sizes = QList());
+ static void setupAction(QAction *action);
private:
Utils() { }
-
+ static QImage grayscaled(const QImage &image);
+ static QImage tinted(const QImage &image, const QColor &color,
+ QPainter::CompositionMode mode = QPainter::CompositionMode_Screen);
};
#endif // UTILS_H
diff --git a/src/video.cpp b/src/video.cpp
index 1e65242..8cb1f97 100644
--- a/src/video.cpp
+++ b/src/video.cpp
@@ -1,17 +1,41 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "video.h"
#include "networkaccess.h"
#include
#include "videodefinition.h"
+#include "jsfunctions.h"
namespace The {
- NetworkAccess* http();
+NetworkAccess* http();
}
Video::Video() : m_duration(0),
-m_viewCount(-1),
-definitionCode(0),
-elIndex(0),
-loadingStreamUrl(false)
+ m_viewCount(-1),
+ definitionCode(0),
+ elIndex(0),
+ ageGate(false),
+ m_license(LicenseYouTube),
+ loadingStreamUrl(false),
+ loadingThumbnail(false)
{ }
Video* Video::clone() {
@@ -19,7 +43,7 @@ Video* Video::clone() {
cloneVideo->m_title = m_title;
cloneVideo->m_description = m_description;
cloneVideo->m_author = m_author;
- cloneVideo->m_authorUri = m_authorUri;
+ cloneVideo->m_userId = m_userId;
cloneVideo->m_webpage = m_webpage;
cloneVideo->m_streamUrl = m_streamUrl;
cloneVideo->m_thumbnail = m_thumbnail;
@@ -43,7 +67,7 @@ void Video::setWebpage(QUrl webpage) {
QRegExp re("^https?://www\\.youtube\\.com/watch\\?v=([0-9A-Za-z_-]+).*");
bool match = re.exactMatch(m_webpage.toString());
if (!match || re.numCaptures() < 1) {
- qDebug() << QString("Cannot get video id for %1").arg(m_webpage.toString());
+ qWarning() << QString("Cannot get video id for %1").arg(m_webpage.toString());
// emit errorStreamUrl(QString("Cannot get video id for %1").arg(m_webpage.toString()));
// loadingStreamUrl = false;
return;
@@ -52,13 +76,17 @@ void Video::setWebpage(QUrl webpage) {
}
void Video::loadThumbnail() {
+ if (m_thumbnailUrl.isEmpty() || loadingThumbnail) return;
+ loadingThumbnail = true;
QObject *reply = The::http()->get(m_thumbnailUrl);
connect(reply, SIGNAL(data(QByteArray)), SLOT(setThumbnail(QByteArray)));
}
void Video::setThumbnail(QByteArray bytes) {
+ loadingThumbnail = false;
m_thumbnail.loadFromData(bytes);
- m_thumbnail = m_thumbnail.scaled(160, 90);
+ if (m_thumbnail.width() > 160)
+ m_thumbnail = m_thumbnail.scaledToWidth(160, Qt::SmoothTransformation);
emit gotThumbnail();
}
@@ -74,45 +102,48 @@ void Video::loadStreamUrl() {
return;
}
loadingStreamUrl = true;
+ elIndex = 0;
+ ageGate = false;
- // https://develop.participatoryculture.org/trac/democracy/browser/trunk/tv/portable/flashscraper.py
getVideoInfo();
}
void Video::getVideoInfo() {
- static const QStringList elTypes = QStringList() << "&el=embedded" << "&el=vevo" << "&el=detailpage" << "";
-
- if (elIndex > elTypes.size() - 1) {
+ static const QStringList elTypes = QStringList() << "&el=embedded" << "&el=detailpage" << "&el=vevo" << "";
+
+ QUrl videoInfoUrl;
+
+ if (elIndex == elTypes.size()) {
+ // qDebug() << "Trying special embedded el param";
+ videoInfoUrl = QUrl("http://www.youtube.com/get_video_info");
+ videoInfoUrl.addQueryItem("video_id", videoId);
+ videoInfoUrl.addQueryItem("el", "embedded");
+ videoInfoUrl.addQueryItem("gl", "US");
+ videoInfoUrl.addQueryItem("hl", "en");
+ videoInfoUrl.addQueryItem("eurl", "https://youtube.googleapis.com/v/" + videoId);
+ videoInfoUrl.addQueryItem("asv", "3");
+ videoInfoUrl.addQueryItem("sts", "1588");
+ } else if (elIndex > elTypes.size() - 1) {
+ qWarning() << "Cannot get video info";
loadingStreamUrl = false;
emit errorStreamUrl("Cannot get video info");
- /*
- // Don't panic! We have a plan B.
- // get the youtube video webpage
- qDebug() << "Scraping" << webpage().toString();
- QObject *reply = The::http()->get(webpage().toString());
- connect(reply, SIGNAL(data(QByteArray)), SLOT(scrapeWebPage(QByteArray)));
- connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(errorVideoInfo(QNetworkReply*)));
- // see you in scrapWebPage(QByteArray)
- */
return;
+ } else {
+ // qDebug() << "Trying el param:" << elTypes.at(elIndex) << elIndex;
+ videoInfoUrl = QUrl(QString(
+ "http://www.youtube.com/get_video_info?video_id=%1%2&ps=default&eurl=&gl=US&hl=en"
+ ).arg(videoId, elTypes.at(elIndex)));
}
- // Get Video Token
- QUrl videoInfoUrl = QUrl(QString(
- "http://www.youtube.com/get_video_info?video_id=%1%2&ps=default&eurl=&gl=US&hl=en"
- ).arg(videoId, elTypes.at(elIndex)));
-
QObject *reply = The::http()->get(videoInfoUrl);
connect(reply, SIGNAL(data(QByteArray)), SLOT(gotVideoInfo(QByteArray)));
connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(errorVideoInfo(QNetworkReply*)));
// see you in gotVideoInfo...
-
}
void Video::gotVideoInfo(QByteArray data) {
QString videoInfo = QString::fromUtf8(data);
-
// qDebug() << "videoInfo" << videoInfo;
// get video token
@@ -120,11 +151,13 @@ void Video::gotVideoInfo(QByteArray data) {
bool match = re.exactMatch(videoInfo);
// handle regexp failure
if (!match || re.numCaptures() < 1) {
+ // qDebug() << "Cannot get token. Trying next el param";
// Don't panic! We're gonna try another magic "el" param
elIndex++;
getVideoInfo();
return;
}
+
QString videoToken = re.cap(1);
while (videoToken.contains('%'))
videoToken = QByteArray::fromPercentEncoding(videoToken.toAscii());
@@ -136,31 +169,38 @@ void Video::gotVideoInfo(QByteArray data) {
match = re.exactMatch(videoInfo);
// handle regexp failure
if (!match || re.numCaptures() < 1) {
+ // qDebug() << "Cannot get urlMap. Trying next el param";
// Don't panic! We're gonna try another magic "el" param
elIndex++;
getVideoInfo();
return;
}
+ // qDebug() << "Got token and urlMap" << elIndex;
+
QString fmtUrlMap = re.cap(1);
fmtUrlMap = QByteArray::fromPercentEncoding(fmtUrlMap.toUtf8());
+ parseFmtUrlMap(fmtUrlMap);
+}
+void Video::parseFmtUrlMap(QString fmtUrlMap, bool fromWebPage) {
QSettings settings;
- QString definitionName = settings.value("definition").toString();
+ QString definitionName = settings.value("definition", "360p").toString();
int definitionCode = VideoDefinition::getDefinitionCode(definitionName);
// qDebug() << "fmtUrlMap" << fmtUrlMap;
- QStringList formatUrls = fmtUrlMap.split(",", QString::SkipEmptyParts);
+ QStringList formatUrls = fmtUrlMap.split(',', QString::SkipEmptyParts);
QHash urlMap;
foreach(QString formatUrl, formatUrls) {
// qDebug() << "formatUrl" << formatUrl;
- QStringList urlParams = formatUrl.split("&", QString::SkipEmptyParts);
+ QStringList urlParams = formatUrl.split('&', QString::SkipEmptyParts);
// qDebug() << "urlParams" << urlParams;
int format = -1;
QString url;
QString sig;
foreach(QString urlParam, urlParams) {
+ // qDebug() << urlParam;
if (urlParam.startsWith("itag=")) {
int separator = urlParam.indexOf("=");
format = urlParam.mid(separator + 1).toInt();
@@ -172,14 +212,41 @@ void Video::gotVideoInfo(QByteArray data) {
int separator = urlParam.indexOf("=");
sig = urlParam.mid(separator + 1);
sig = QByteArray::fromPercentEncoding(sig.toUtf8());
+ } else if (urlParam.startsWith("s=")) {
+ if (fromWebPage || ageGate) {
+ int separator = urlParam.indexOf("=");
+ sig = urlParam.mid(separator + 1);
+ sig = QByteArray::fromPercentEncoding(sig.toUtf8());
+ if (ageGate)
+ sig = JsFunctions::instance()->decryptAgeSignature(sig);
+ else
+ sig = JsFunctions::instance()->decryptSignature(sig);
+ } else {
+ // qDebug() << "Loading webpage";
+ QUrl url("http://www.youtube.com/watch");
+ url.addQueryItem("v", videoId);
+ url.addQueryItem("gl", "US");
+ url.addQueryItem("hl", "en");
+ url.addQueryItem("has_verified", "1");
+ QObject *reply = The::http()->get(url);
+ connect(reply, SIGNAL(data(QByteArray)), SLOT(scrapeWebPage(QByteArray)));
+ connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(errorVideoInfo(QNetworkReply*)));
+ // see you in scrapWebPage(QByteArray)
+ return;
+ }
}
}
if (format == -1 || url.isNull()) continue;
url += "&signature=" + sig;
+ if (!url.contains("ratebypass"))
+ url += "&ratebypass=yes";
+
+ // qWarning() << url;
+
if (format == definitionCode) {
- qDebug() << "Found format" << definitionCode;
+ // qDebug() << "Found format" << definitionCode;
QUrl videoUrl = QUrl::fromEncoded(url.toUtf8(), QUrl::StrictMode);
m_streamUrl = videoUrl;
this->definitionCode = definitionCode;
@@ -199,7 +266,7 @@ void Video::gotVideoInfo(QByteArray data) {
if (previousIndex < 0) previousIndex = 0;
int definitionCode = definitionCodes.at(previousIndex);
if (urlMap.contains(definitionCode)) {
- qDebug() << "Found format" << definitionCode;
+ // qDebug() << "Found format" << definitionCode;
QString url = urlMap.value(definitionCode);
QUrl videoUrl = QUrl::fromEncoded(url.toUtf8(), QUrl::StrictMode);
m_streamUrl = videoUrl;
@@ -212,15 +279,14 @@ void Video::gotVideoInfo(QByteArray data) {
}
emit errorStreamUrl(tr("Cannot get video stream for %1").arg(m_webpage.toString()));
-
}
void Video::foundVideoUrl(QString videoToken, int definitionCode) {
// qDebug() << "foundVideoUrl" << videoToken << definitionCode;
QUrl videoUrl = QUrl(QString(
- "http://www.youtube.com/get_video?video_id=%1&t=%2&eurl=&el=&ps=&asv=&fmt=%3"
- ).arg(videoId, videoToken, QString::number(definitionCode)));
+ "http://www.youtube.com/get_video?video_id=%1&t=%2&eurl=&el=&ps=&asv=&fmt=%3"
+ ).arg(videoId, videoToken, QString::number(definitionCode)));
m_streamUrl = videoUrl;
loadingStreamUrl = false;
@@ -233,37 +299,31 @@ void Video::errorVideoInfo(QNetworkReply *reply) {
}
void Video::scrapeWebPage(QByteArray data) {
+ QString html = QString::fromUtf8(data);
+ // qWarning() << html;
- QString videoHTML = QString::fromUtf8(data);
- QRegExp re(".*, \"t\": \"([^\"]+)\".*");
- bool match = re.exactMatch(videoHTML);
+ if (html.contains("player-age-gate-content\"")) {
+ // qDebug() << "Found ageGate";
+ ageGate = true;
+ elIndex = 4;
+ getVideoInfo();
+ return;
+ }
+ QRegExp re(".*\"url_encoded_fmt_stream_map\":\\s+\"([^\"]+)\".*");
+ bool match = re.exactMatch(html);
// on regexp failure, stop and report error
if (!match || re.numCaptures() < 1) {
- emit errorStreamUrl("Error parsing video page");
- loadingStreamUrl = false;
+ qWarning() << "Error parsing video page";
+ // emit errorStreamUrl("Error parsing video page");
+ // loadingStreamUrl = false;
+ elIndex++;
+ getVideoInfo();
return;
}
-
- QString videoToken = re.cap(1);
- // FIXME proper decode
- videoToken = videoToken.replace("%3D", "=");
-
- // we'll need this in gotHeadHeaders()
- this->videoToken = videoToken;
-
- // qDebug() << "token" << videoToken;
-
- QSettings settings;
- QString definitionName = settings.value("definition").toString();
- int definitionCode = VideoDefinition::getDefinitionCode(definitionName);
- if (definitionCode == 18) {
- // This is assumed always available
- foundVideoUrl(videoToken, 18);
- } else {
- findVideoUrl(definitionCode);
- }
-
+ QString fmtUrlMap = re.cap(1);
+ fmtUrlMap.replace("\\u0026", "&");
+ parseFmtUrlMap(fmtUrlMap, true);
}
void Video::gotHeadHeaders(QNetworkReply* reply) {
@@ -313,8 +373,8 @@ void Video::findVideoUrl(int definitionCode) {
this->definitionCode = definitionCode;
QUrl videoUrl = QUrl(QString(
- "http://www.youtube.com/get_video?video_id=%1&t=%2&eurl=&el=&ps=&asv=&fmt=%3"
- ).arg(videoId, videoToken, QString::number(definitionCode)));
+ "http://www.youtube.com/get_video?video_id=%1&t=%2&eurl=&el=&ps=&asv=&fmt=%3"
+ ).arg(videoId, videoToken, QString::number(definitionCode)));
QObject *reply = The::http()->head(videoUrl);
connect(reply, SIGNAL(finished(QNetworkReply*)), SLOT(gotHeadHeaders(QNetworkReply*)));
@@ -324,7 +384,6 @@ void Video::findVideoUrl(int definitionCode) {
}
-
QString Video::formattedDuration() const {
QString format = m_duration > 3600 ? "h:mm:ss" : "m:ss";
return QTime().addSecs(m_duration).toString(format);
diff --git a/src/video.h b/src/video.h
index 4b15e37..76a9f58 100644
--- a/src/video.h
+++ b/src/video.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEO_H
#define VIDEO_H
@@ -12,29 +32,34 @@ public:
Video();
Video* clone();
- const QString title() const { return m_title; }
+ enum License {
+ LicenseYouTube = 1,
+ LicenseCC
+ };
+
+ const QString & title() const { return m_title; }
void setTitle( QString title ) { m_title = title; }
- const QString description() const { return m_description; }
+ const QString & description() const { return m_description; }
void setDescription( QString description ) { m_description = description; }
- const QString author() const { return m_author; }
+ const QString & author() const { return m_author; }
void setAuthor( QString author ) { m_author = author; }
- const QString authorUri() const { return m_authorUri; }
- void setAuthorUri( QString authorUri ) { m_authorUri = authorUri; }
+ const QString & userId() const { return m_userId; }
+ void setUserId( QString userId ) { m_userId = userId; }
- const QUrl webpage() const { return m_webpage; }
+ const QUrl & webpage() const { return m_webpage; }
void setWebpage(QUrl webpage);
void loadThumbnail();
const QPixmap & thumbnail() const { return m_thumbnail; }
- QString thumbnailUrl() { return m_thumbnailUrl; }
+ const QString & thumbnailUrl() { return m_thumbnailUrl; }
void setThumbnailUrl(QString url) { m_thumbnailUrl = url; }
void loadMediumThumbnail();
- QString mediumThumbnailUrl() { return m_mediumThumbnailUrl; }
+ const QString & mediumThumbnailUrl() { return m_mediumThumbnailUrl; }
void setMediumThumbnailUrl(QString url) { m_mediumThumbnailUrl = url; }
int duration() const { return m_duration; }
@@ -44,15 +69,19 @@ public:
int viewCount() const { return m_viewCount; }
void setViewCount( int viewCount ) { m_viewCount = viewCount; }
- const QDateTime published() const { return m_published; }
+ const QDateTime & published() const { return m_published; }
void setPublished( QDateTime published ) { m_published = published; }
int getDefinitionCode() const { return definitionCode; }
void loadStreamUrl();
- QUrl getStreamUrl() { return m_streamUrl; }
+ const QUrl & getStreamUrl() { return m_streamUrl; }
- QString id() const { return videoId; }
+ void setId(QString id) { videoId = id; }
+ const QString & id() const { return videoId; }
+
+ void setLicense(License license) { m_license = license; }
+ License license() const { return m_license; }
signals:
void gotThumbnail();
@@ -71,11 +100,12 @@ private:
void getVideoInfo();
void findVideoUrl(int definitionCode);
void foundVideoUrl(QString videoToken, int definitionCode);
+ void parseFmtUrlMap(QString fmtUrlMap, bool fromWebPage = false);
QString m_title;
QString m_description;
QString m_author;
- QString m_authorUri;
+ QString m_userId;
QUrl m_webpage;
QUrl m_streamUrl;
QPixmap m_thumbnail;
@@ -84,7 +114,7 @@ private:
int m_duration;
QDateTime m_published;
int m_viewCount;
-
+ License m_license;
QString videoId;
QString videoToken;
int definitionCode;
@@ -92,8 +122,10 @@ private:
// current index for the elTypes list
// needed to iterate on elTypes
int elIndex;
+ bool ageGate;
bool loadingStreamUrl;
+ bool loadingThumbnail;
};
// This is required in order to use QPointer as a QVariant
diff --git a/src/videoareawidget.cpp b/src/videoareawidget.cpp
index 695070f..14a5718 100644
--- a/src/videoareawidget.cpp
+++ b/src/videoareawidget.cpp
@@ -1,8 +1,32 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "videoareawidget.h"
#include "videomimedata.h"
-#ifndef Q_WS_X11
+#include "mainwindow.h"
+#ifdef APP_EXTRA
#include "extra.h"
#endif
+#ifdef Q_WS_MAC
+#include "macutils.h"
+#endif
VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent) {
QBoxLayout *vLayout = new QVBoxLayout(this);
@@ -28,11 +52,12 @@ VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent) {
stackedLayout = new QStackedLayout();
vLayout->addLayout(stackedLayout);
- snapshotPreview = new QLabel(this);
- stackedLayout->addWidget(snapshotPreview);
+ // snapshotPreview = new QLabel(this);
+ // stackedLayout->addWidget(snapshotPreview);
- setAcceptDrops(true);
+ setAcceptDrops(true);
setMouseTracking(true);
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
@@ -44,10 +69,12 @@ void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
this->loadingWidget = loadingWidget;
stackedLayout->addWidget(loadingWidget);
+ stackedLayout->setCurrentWidget(loadingWidget);
}
void VideoAreaWidget::showVideo() {
stackedLayout->setCurrentWidget(videoWidget);
+ loadingWidget->clear();
}
void VideoAreaWidget::showError(QString message) {
@@ -58,16 +85,17 @@ void VideoAreaWidget::showError(QString message) {
}
void VideoAreaWidget::showLoading(Video *video) {
- stackedLayout->setCurrentWidget(loadingWidget);
- this->loadingWidget->setVideo(video);
messageLabel->hide();
messageLabel->clear();
+ stackedLayout->setCurrentWidget(loadingWidget);
+ loadingWidget->setVideo(video);
}
+/*
void VideoAreaWidget::showSnapshotPreview(QPixmap pixmap) {
snapshotPreview->setPixmap(pixmap);
stackedLayout->setCurrentWidget(snapshotPreview);
-#ifndef Q_WS_X11
+#ifdef APP_EXTRA
Extra::flashInWidget(snapshotPreview);
#endif
QTimer::singleShot(1500, this, SLOT(hideSnapshotPreview()));
@@ -76,13 +104,14 @@ void VideoAreaWidget::showSnapshotPreview(QPixmap pixmap) {
void VideoAreaWidget::hideSnapshotPreview() {
stackedLayout->setCurrentWidget(videoWidget);
}
+*/
void VideoAreaWidget::clear() {
- stackedLayout->setCurrentWidget(loadingWidget);
loadingWidget->clear();
messageLabel->hide();
messageLabel->clear();
- snapshotPreview->clear();
+ // snapshotPreview->clear();
+ stackedLayout->setCurrentWidget(loadingWidget);
}
void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
@@ -95,6 +124,29 @@ void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
if(event->button() == Qt::RightButton)
emit rightClicked();
+
+ else if (event->button() == Qt::LeftButton) {
+ bool isNormalWindow = !window()->isMaximized() &&
+ !MainWindow::instance()->isReallyFullScreen();
+ if (isNormalWindow) {
+ dragPosition = event->globalPos() - window()->frameGeometry().topLeft();
+ event->accept();
+ }
+ }
+}
+
+void VideoAreaWidget::mouseMoveEvent(QMouseEvent *event) {
+ bool isNormalWindow = !window()->isMaximized() &&
+ !MainWindow::instance()->isReallyFullScreen();
+ if (event->buttons() & Qt::LeftButton && isNormalWindow) {
+ QPoint p = event->globalPos() - dragPosition;
+#ifdef Q_WS_MAC
+ mac::moveWindowTo(window()->winId(), p.x(), p.y());
+#else
+ window()->move(p);
+#endif
+ event->accept();
+ }
}
void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
diff --git a/src/videoareawidget.h b/src/videoareawidget.h
index 4d4fd65..3673f69 100644
--- a/src/videoareawidget.h
+++ b/src/videoareawidget.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEOAREAWIDGET_H
#define VIDEOAREAWIDGET_H
@@ -21,7 +41,8 @@ public:
void setListModel(PlaylistModel *listModel) {
this->listModel = listModel;
}
- void showSnapshotPreview(QPixmap pixmap);
+ // void showSnapshotPreview(QPixmap pixmap);
+ bool isVideoShown() { return stackedLayout->currentWidget() == videoWidget; }
signals:
void doubleClicked();
@@ -30,11 +51,12 @@ signals:
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
+ void mouseMoveEvent(QMouseEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
private slots:
- void hideSnapshotPreview();
+ // void hideSnapshotPreview();
private:
QStackedLayout *stackedLayout;
@@ -42,7 +64,8 @@ private:
LoadingWidget *loadingWidget;
PlaylistModel *listModel;
QLabel *messageLabel;
- QLabel *snapshotPreview;
+ // QLabel *snapshotPreview;
+ QPoint dragPosition;
};
diff --git a/src/videodefinition.cpp b/src/videodefinition.cpp
index 341b881..28e3024 100644
--- a/src/videodefinition.cpp
+++ b/src/videodefinition.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "videodefinition.h"
QStringList VideoDefinition::getDefinitionNames() {
diff --git a/src/videodefinition.h b/src/videodefinition.h
index dadc992..809fafb 100644
--- a/src/videodefinition.h
+++ b/src/videodefinition.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEODEFINITION_H
#define VIDEODEFINITION_H
diff --git a/src/videomimedata.cpp b/src/videomimedata.cpp
index 619c7d1..b2a45be 100644
--- a/src/videomimedata.cpp
+++ b/src/videomimedata.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "videomimedata.h"
VideoMimeData::VideoMimeData() {}
diff --git a/src/videomimedata.h b/src/videomimedata.h
index ce06bd2..6abb788 100644
--- a/src/videomimedata.h
+++ b/src/videomimedata.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEOMIMEDATA_H
#define VIDEOMIMEDATA_H
diff --git a/src/videosource.cpp b/src/videosource.cpp
index d2da7fb..6f08656 100644
--- a/src/videosource.cpp
+++ b/src/videosource.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "videosource.h"
void VideoSource::setParam(QString name, QVariant value) {
diff --git a/src/videosource.h b/src/videosource.h
index 767697e..760f512 100644
--- a/src/videosource.h
+++ b/src/videosource.h
@@ -1,7 +1,28 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEOSOURCE_H
#define VIDEOSOURCE_H
#include
+#include
class Video;
@@ -15,6 +36,7 @@ public:
virtual void abort() = 0;
virtual const QStringList & getSuggestions() = 0;
virtual QString getName() = 0;
+ virtual QList getActions() { return QList(); }
public slots:
void setParam(QString name, QVariant value);
diff --git a/src/videosourcewidget.cpp b/src/videosourcewidget.cpp
index 90b893b..ccd2a0f 100644
--- a/src/videosourcewidget.cpp
+++ b/src/videosourcewidget.cpp
@@ -1,21 +1,39 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "videosourcewidget.h"
#include "videosource.h"
#include "video.h"
#include "fontutils.h"
VideoSourceWidget::VideoSourceWidget(VideoSource *videoSource, QWidget *parent)
- : QWidget(parent),
- videoSource(videoSource),
- hovered(false),
- pressed(false) {
+ : GridWidget(parent),
+ videoSource(videoSource) {
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- setCursor(Qt::PointingHandCursor);
- setFocusPolicy(Qt::StrongFocus);
connect(videoSource, SIGNAL(gotVideos(QList)),
SLOT(previewVideo(QList)), Qt::UniqueConnection);
videoSource->loadVideos(1, 1);
+
+ connect(this, SIGNAL(activated()), SLOT(activate()));
}
void VideoSourceWidget::activate() {
@@ -63,7 +81,8 @@ QPixmap VideoSourceWidget::playPixmap() {
return playIcon;
}
-void VideoSourceWidget::paintEvent(QPaintEvent *) {
+void VideoSourceWidget::paintEvent(QPaintEvent *event) {
+ GridWidget::paintEvent(event);
if (pixmap.isNull()) return;
QPainter p(this);
@@ -134,39 +153,3 @@ void VideoSourceWidget::paintEvent(QPaintEvent *) {
p.restore();
}
}
-
-void VideoSourceWidget::mouseMoveEvent (QMouseEvent *event) {
- QWidget::mouseMoveEvent(event);
- hovered = rect().contains(event->pos());
-}
-
-void VideoSourceWidget::mousePressEvent(QMouseEvent *event) {
- QWidget::mousePressEvent(event);
- if (event->button() != Qt::LeftButton) return;
- pressed = true;
- update();
-}
-
-void VideoSourceWidget::mouseReleaseEvent(QMouseEvent *event) {
- QWidget::mouseReleaseEvent(event);
- if (event->button() != Qt::LeftButton) return;
- pressed = false;
- if (hovered) emit activated(videoSource);
-}
-
-void VideoSourceWidget::leaveEvent(QEvent *event) {
- QWidget::leaveEvent(event);
- hovered = false;
- update();
-}
-
-void VideoSourceWidget::enterEvent(QEvent *event) {
- QWidget::enterEvent(event);
- hovered = true;
- update();
-}
-
-void VideoSourceWidget::keyReleaseEvent(QKeyEvent *event) {
- if (event->key() == Qt::Key_Return)
- emit activated(videoSource);
-}
diff --git a/src/videosourcewidget.h b/src/videosourcewidget.h
index b2d9236..22c7740 100644
--- a/src/videosourcewidget.h
+++ b/src/videosourcewidget.h
@@ -1,12 +1,33 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIDEOSOURCEWIDGET_H
#define VIDEOSOURCEWIDGET_H
#include
+#include "gridwidget.h"
class Video;
class VideoSource;
-class VideoSourceWidget : public QWidget {
+class VideoSourceWidget : public GridWidget {
Q_OBJECT
@@ -17,13 +38,7 @@ signals:
void activated(VideoSource *videoSource);
protected:
- void paintEvent(QPaintEvent *);
- void mouseMoveEvent(QMouseEvent *event);
- void mousePressEvent(QMouseEvent *event);
- void mouseReleaseEvent(QMouseEvent *event);
- void enterEvent(QEvent *event);
- void leaveEvent(QEvent *event);
- void keyReleaseEvent(QKeyEvent *event);
+ void paintEvent(QPaintEvent *event);
private slots:
void activate();
@@ -36,8 +51,6 @@ private:
QPixmap pixmap;
Video *video;
- bool hovered;
- bool pressed;
};
#endif // VIDEOSOURCEWIDGET_H
diff --git a/src/view.h b/src/view.h
index 0609c38..e847f6e 100644
--- a/src/view.h
+++ b/src/view.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef VIEW_H
#define VIEW_H
@@ -7,6 +27,7 @@ public:
virtual QHash metadata() { return QHash(); }
virtual void appear() {}
virtual void disappear() {}
+ QList getViewActions() { return QList(); }
};
diff --git a/src/ytcategories.cpp b/src/ytcategories.cpp
index 92e2dbc..8921742 100644
--- a/src/ytcategories.cpp
+++ b/src/ytcategories.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytcategories.h"
#include "networkaccess.h"
#include
diff --git a/src/ytcategories.h b/src/ytcategories.h
index 7513f2d..5689158 100644
--- a/src/ytcategories.h
+++ b/src/ytcategories.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTCATEGORIES_H
#define YTCATEGORIES_H
diff --git a/src/ytfeedreader.cpp b/src/ytfeedreader.cpp
index 117f92b..9aaacf0 100644
--- a/src/ytfeedreader.cpp
+++ b/src/ytfeedreader.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytfeedreader.h"
#include "video.h"
@@ -42,11 +62,9 @@ void YTFeedReader::readEntry() {
if (name() == QLatin1String("name")) {
QString author = readElementText();
video->setAuthor(author);
- } else if (name() == QLatin1String("uri")) {
- QString uri = readElementText();
- int i = uri.lastIndexOf('/');
- if (i != -1) uri = uri.mid(i+1);
- video->setAuthorUri(uri);
+ } else if (name() == QLatin1String("userId")) {
+ QString userId = readElementText();
+ video->setUserId(userId);
} else skipCurrentElement();
} else if (name() == QLatin1String("published")) {
video->setPublished(QDateTime::fromString(readElementText(), Qt::ISODate));
@@ -88,6 +106,12 @@ void YTFeedReader::readEntry() {
// qDebug() << "Duration: " << duration;
video->setDuration(duration.toInt());
}
+ else if (name() == QLatin1String("license")) {
+ QString license = readElementText();
+ // qDebug() << "License: " << license;
+ if (license == QLatin1String("cc"))
+ video->setLicense(Video::LicenseCC);
+ }
}
}
}
diff --git a/src/ytfeedreader.h b/src/ytfeedreader.h
index 3ee6142..195c2a5 100644
--- a/src/ytfeedreader.h
+++ b/src/ytfeedreader.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTFEEDREADER_H
#define YTFEEDREADER_H
diff --git a/src/ytregions.cpp b/src/ytregions.cpp
index 63f8f14..b05cf6c 100644
--- a/src/ytregions.cpp
+++ b/src/ytregions.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytregions.h"
YTRegions::YTRegions() : QObject() { }
diff --git a/src/ytregions.h b/src/ytregions.h
index 029c0b9..bae0286 100644
--- a/src/ytregions.h
+++ b/src/ytregions.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTREGIONS_H
#define YTREGIONS_H
@@ -13,6 +33,8 @@ struct YTRegion {
class YTRegions : public QObject {
+ Q_OBJECT
+
public:
static const QList & list();
static const YTRegion & localRegion();
diff --git a/src/ytsearch.cpp b/src/ytsearch.cpp
index 9f3fd34..010cbd5 100644
--- a/src/ytsearch.cpp
+++ b/src/ytsearch.cpp
@@ -1,12 +1,35 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytsearch.h"
#include "ytfeedreader.h"
#include "constants.h"
#include "networkaccess.h"
#include "searchparams.h"
#include "video.h"
+#include "utils.h"
+#include "ytuser.h"
namespace The {
- NetworkAccess* http();
+NetworkAccess* http();
+QHash* globalActions();
}
YTSearch::YTSearch(SearchParams *searchParams, QObject *parent) :
@@ -104,7 +127,11 @@ void YTSearch::parseResults(QByteArray data) {
if (name.isEmpty() && !searchParams->author().isEmpty()) {
if (videos.isEmpty()) name = searchParams->author();
- else name = videos.first()->author();
+ else {
+ name = videos.first()->author();
+ // also grab the userId
+ userId = videos.first()->userId();
+ }
emit nameChanged(name);
}
@@ -123,3 +150,11 @@ QString YTSearch::videoIdFromUrl(QString url) {
if (re.exactMatch(url)) return re.cap(1);
return QString();
}
+
+QList YTSearch::getActions() {
+ QList channelActions;
+ if (searchParams->author().isEmpty())
+ return channelActions;
+ channelActions << The::globalActions()->value("subscribe-channel");
+ return channelActions;
+}
diff --git a/src/ytsearch.h b/src/ytsearch.h
index 983a27b..7ed282c 100644
--- a/src/ytsearch.h
+++ b/src/ytsearch.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTSEARCH_H
#define YTSEARCH_H
@@ -24,6 +44,8 @@ public:
return searchParams == other.getSearchParams();
}
+ QList getActions();
+
private slots:
void parseResults(QByteArray data);
void requestError(QNetworkReply *reply);
@@ -33,6 +55,8 @@ private:
bool aborted;
QStringList suggestions;
QString name;
+
+ QString userId;
};
#endif // YTSEARCH_H
diff --git a/src/ytsinglevideosource.cpp b/src/ytsinglevideosource.cpp
index 6a22de5..b4f4d30 100644
--- a/src/ytsinglevideosource.cpp
+++ b/src/ytsinglevideosource.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytsinglevideosource.h"
#include
#include "networkaccess.h"
diff --git a/src/ytsinglevideosource.h b/src/ytsinglevideosource.h
index 62aeb9a..53dfd52 100644
--- a/src/ytsinglevideosource.h
+++ b/src/ytsinglevideosource.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTSINGLEVIDEOSOURCE_H
#define YTSINGLEVIDEOSOURCE_H
diff --git a/src/ytstandardfeed.cpp b/src/ytstandardfeed.cpp
index 111ec29..50e0674 100644
--- a/src/ytstandardfeed.cpp
+++ b/src/ytstandardfeed.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytstandardfeed.h"
#include
#include "networkaccess.h"
@@ -23,8 +43,11 @@ void YTStandardFeed::loadVideos(int max, int skip) {
QUrl url(s);
url.addQueryItem("v", "2");
- if (feedId != "most_shared")
- url.addQueryItem("time", "today");
+ if (feedId != "most_shared" && feedId != "on_the_web") {
+ QString t = time;
+ if (t.isEmpty()) t = "today";
+ url.addQueryItem("time", t);
+ }
url.addQueryItem("max-results", QString::number(max));
url.addQueryItem("start-index", QString::number(skip));
diff --git a/src/ytstandardfeed.h b/src/ytstandardfeed.h
index 45cdfac..13979a8 100644
--- a/src/ytstandardfeed.h
+++ b/src/ytstandardfeed.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTSTANDARDFEED_H
#define YTSTANDARDFEED_H
@@ -23,6 +43,9 @@ public:
QString getLabel() { return label; }
void setLabel(QString label) { this->label = label; }
+ QString getTime() { return time; }
+ void setTime(QString time) { this->time = time; }
+
void loadVideos(int max, int skip);
void abort();
const QStringList & getSuggestions();
@@ -37,6 +60,7 @@ private:
QString regionId;
QString category;
QString label;
+ QString time;
bool aborted;
};
diff --git a/src/ytsuggester.cpp b/src/ytsuggester.cpp
index a1cfe98..c526b30 100644
--- a/src/ytsuggester.cpp
+++ b/src/ytsuggester.cpp
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#include "ytsuggester.h"
#include
#include "networkaccess.h"
diff --git a/src/ytsuggester.h b/src/ytsuggester.h
index c42440b..0599ff8 100644
--- a/src/ytsuggester.h
+++ b/src/ytsuggester.h
@@ -1,3 +1,23 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
#ifndef YTSUGGESTER_H
#define YTSUGGESTER_H
diff --git a/src/ytuser.cpp b/src/ytuser.cpp
new file mode 100644
index 0000000..9dc633a
--- /dev/null
+++ b/src/ytuser.cpp
@@ -0,0 +1,307 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#include "ytuser.h"
+#include "networkaccess.h"
+#include "database.h"
+#include
+
+namespace The {
+NetworkAccess* http();
+}
+
+YTUser::YTUser(QString userId, QObject *parent) : QObject(parent),
+ id(0),
+ userId(userId),
+ loadingThumbnail(false),
+ notifyCount(0),
+ checked(0),
+ watched(0),
+ loaded(0),
+ loading(false) { }
+
+QHash YTUser::cache;
+
+YTUser* YTUser::forId(QString userId) {
+ if (userId.isEmpty()) return 0;
+
+ if (cache.contains(userId))
+ return cache.value(userId);
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("select id,name,description,thumb_url,notify_count,watched,checked,loaded "
+ "from subscriptions where user_id=?");
+ query.bindValue(0, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ YTUser* user = 0;
+ if (query.next()) {
+ user = new YTUser(userId);
+ user->id = query.value(0).toInt();
+ user->displayName = query.value(1).toString();
+ user->description = query.value(2).toString();
+ user->thumbnailUrl = query.value(3).toString();
+ user->notifyCount = query.value(4).toInt();
+ user->watched = query.value(5).toUInt();
+ user->checked = query.value(6).toUInt();
+ user->loaded = query.value(7).toUInt();
+ user->thumbnail = QPixmap(user->getThumbnailLocation());
+ user->maybeLoadfromAPI();
+ cache.insert(userId, user);
+ }
+
+ return user;
+}
+
+void YTUser::maybeLoadfromAPI() {
+ if (loading) return;
+ if (userId.isEmpty()) return;
+
+ uint now = QDateTime::currentDateTime().toTime_t();
+ static const int refreshInterval = 60 * 60 * 24 * 10;
+ if (loaded > now - refreshInterval) return;
+
+ loading = true;
+
+ QUrl url("http://gdata.youtube.com/feeds/api/users/" + userId);
+ url.addQueryItem("v", "2");
+ QObject *reply = The::http()->get(url);
+ connect(reply, SIGNAL(data(QByteArray)), SLOT(parseResponse(QByteArray)));
+ connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(requestError(QNetworkReply*)));
+}
+
+void YTUser::parseResponse(QByteArray bytes) {
+ QXmlStreamReader xml(bytes);
+ xml.readNextStartElement();
+ if (xml.name() == QLatin1String("entry"))
+ while(xml.readNextStartElement()) {
+ const QStringRef n = xml.name();
+ if (n == QLatin1String("summary"))
+ description = xml.readElementText().simplified();
+ else if (n == QLatin1String("title"))
+ displayName = xml.readElementText();
+ else if (n == QLatin1String("thumbnail")) {
+ thumbnailUrl = xml.attributes().value("url").toString();
+ xml.skipCurrentElement();
+ } else if (n == QLatin1String("username"))
+ userName = xml.readElementText();
+ else xml.skipCurrentElement();
+ }
+
+ if (xml.hasError()) {
+ emit error(xml.errorString());
+ qWarning() << xml.errorString();
+ }
+
+ emit infoLoaded();
+ storeInfo();
+ loading = false;
+}
+
+void YTUser::loadThumbnail() {
+ if (loadingThumbnail) return;
+ if (thumbnailUrl.isEmpty()) return;
+ loadingThumbnail = true;
+
+#ifdef Q_WS_WIN
+ thumbnailUrl.replace(QLatin1String("https://"), QLatin1String("http://"));
+#endif
+
+ QUrl url(thumbnailUrl);
+ QObject *reply = The::http()->get(url);
+ connect(reply, SIGNAL(data(QByteArray)), SLOT(storeThumbnail(QByteArray)));
+ connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(requestError(QNetworkReply*)));
+}
+
+const QString & YTUser::getThumbnailDir() {
+ static const QString thumbDir = QDesktopServices::storageLocation(
+ QDesktopServices::DataLocation) + "/channels/";
+ return thumbDir;
+}
+
+QString YTUser::getThumbnailLocation() {
+ return getThumbnailDir() + userId;
+}
+
+void YTUser::storeThumbnail(QByteArray bytes) {
+ thumbnail.loadFromData(bytes);
+ static const int maxWidth = 88;
+
+ QDir dir;
+ dir.mkpath(getThumbnailDir());
+
+ if (thumbnail.width() > maxWidth) {
+ thumbnail = thumbnail.scaledToWidth(maxWidth, Qt::SmoothTransformation);
+ thumbnail.save(getThumbnailLocation(), "JPG");
+ } else {
+ QFile file(getThumbnailLocation());
+ if (!file.open(QIODevice::WriteOnly))
+ qWarning() << "Error opening file for writing" << file.fileName();
+ QDataStream stream(&file);
+ stream.writeRawData(bytes.constData(), bytes.size());
+ }
+
+ emit thumbnailLoaded();
+ loadingThumbnail = false;
+}
+
+void YTUser::requestError(QNetworkReply *reply) {
+ emit error(reply->errorString());
+ qWarning() << reply->errorString();
+ loading = false;
+ loadingThumbnail = false;
+}
+
+void YTUser::storeInfo() {
+ if (userId.isEmpty()) return;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions set "
+ "user_name=?, name=?, description=?, thumb_url=?, loaded=? "
+ "where user_id=?");
+ qDebug() << userName;
+ query.bindValue(0, userName);
+ query.bindValue(1, displayName);
+ query.bindValue(2, description);
+ query.bindValue(3, thumbnailUrl);
+ query.bindValue(4, QDateTime::currentDateTime().toTime_t());
+ query.bindValue(5, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ loadThumbnail();
+}
+
+void YTUser::subscribe(QString userId) {
+ if (userId.isEmpty()) return;
+
+ uint now = QDateTime::currentDateTime().toTime_t();
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("insert into subscriptions "
+ "(user_id,added,watched,checked,views,notify_count)"
+ " values (?,?,?,0,0,0)");
+ query.bindValue(0, userId);
+ query.bindValue(1, now);
+ query.bindValue(2, now);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ // This will call maybeLoadFromApi
+ YTUser::forId(userId);
+}
+
+void YTUser::unsubscribe(QString userId) {
+ if (userId.isEmpty()) return;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("delete from subscriptions where user_id=?");
+ query.bindValue(0, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ query = QSqlQuery(db);
+ query.prepare("delete from subscriptions_videos where user_id=?");
+ query.bindValue(0, userId);
+ success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+
+ YTUser *user = cache.take(userId);
+ if (user) user->deleteLater();
+}
+
+bool YTUser::isSubscribed(QString userId) {
+ if (!Database::exists()) return false;
+ if (userId.isEmpty()) return false;
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("select count(*) from subscriptions where user_id=?");
+ query.bindValue(0, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (query.next())
+ return query.value(0).toInt() > 0;
+ return false;
+}
+
+void YTUser::updateChecked() {
+ if (userId.isEmpty()) return;
+
+ uint now = QDateTime::currentDateTime().toTime_t();
+ checked = now;
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions set checked=? where user_id=?");
+ query.bindValue(0, QDateTime::currentDateTime().toTime_t());
+ query.bindValue(1, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+}
+
+void YTUser::updateWatched() {
+ if (userId.isEmpty()) return;
+
+ uint now = QDateTime::currentDateTime().toTime_t();
+ watched = now;
+ notifyCount = 0;
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions set watched=?, notify_count=0, views=views+1 where user_id=?");
+ query.bindValue(0, now);
+ query.bindValue(1, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+}
+
+void YTUser::storeNotifyCount(int count) {
+ notifyCount = count;
+
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("update subscriptions set notify_count=? where user_id=?");
+ query.bindValue(0, count);
+ query.bindValue(1, userId);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+}
+
+bool YTUser::updateNotifyCount() {
+ QSqlDatabase db = Database::instance().getConnection();
+ QSqlQuery query(db);
+ query.prepare("select count(*) from subscriptions_videos "
+ "where channel_id=? and added>? and published>? and watched=0");
+ query.bindValue(0, id);
+ query.bindValue(1, watched);
+ query.bindValue(2, watched);
+ bool success = query.exec();
+ if (!success) qWarning() << query.lastQuery() << query.lastError().text();
+ if (!query.next()) {
+ qWarning() << __PRETTY_FUNCTION__ << "Count failed";
+ return false;
+ }
+ int count = query.value(0).toInt();
+ storeNotifyCount(count);
+ return count != notifyCount;
+}
diff --git a/src/ytuser.h b/src/ytuser.h
new file mode 100644
index 0000000..d7131cd
--- /dev/null
+++ b/src/ytuser.h
@@ -0,0 +1,104 @@
+/* $BEGIN_LICENSE
+
+This file is part of Minitube.
+Copyright 2009, Flavio Tordini
+
+Minitube is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Minitube is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Minitube. If not, see .
+
+$END_LICENSE */
+
+#ifndef YTUSER_H
+#define YTUSER_H
+
+#include
+#include
+
+class YTUser : public QObject {
+
+ Q_OBJECT
+
+public:
+ static YTUser* forId(QString userId);
+ static void subscribe(QString userId);
+ static void unsubscribe(QString userId);
+ static bool isSubscribed(QString userId);
+
+ int getId() { return id; }
+ void setId(int id) { this->id = id; }
+
+ uint getChecked() { return checked; }
+ void updateChecked();
+
+ uint getWatched() const { return watched; }
+ void setWatched(uint watched) { this->watched = watched; }
+ void updateWatched();
+
+ int getNotifyCount() const { return notifyCount; }
+ void setNotifyCount(int count) { notifyCount = count; }
+ void storeNotifyCount(int count);
+ bool updateNotifyCount();
+
+ QString getUserId() const { return userId; }
+ QString getUserName() const { return userName; }
+ QString getDisplayName() const { return displayName; }
+ QString getDescription() const { return description; }
+ QString getCountryCode() const { return countryCode; }
+
+ void loadThumbnail();
+ const QString & getThumbnailDir();
+ QString getThumbnailLocation();
+ const QPixmap & getThumbnail() { return thumbnail; }
+
+ static QList getCachedUsers() { return cache.values(); }
+
+signals:
+ void infoLoaded();
+ void thumbnailLoaded();
+ void error(QString message);
+
+private slots:
+ void parseResponse(QByteArray bytes);
+ void requestError(QNetworkReply *reply);
+ void storeThumbnail(QByteArray bytes);
+
+private:
+ YTUser(QString userId, QObject *parent = 0);
+ void maybeLoadfromAPI();
+ void storeInfo();
+
+ static QHash cache;
+
+ int id;
+ QString userId;
+ QString userName;
+ QString displayName;
+ QString description;
+ QString countryCode;
+
+ QString thumbnailUrl;
+ QPixmap thumbnail;
+ bool loadingThumbnail;
+
+ int notifyCount;
+ uint checked;
+ uint watched;
+ uint loaded;
+ bool loading;
+};
+
+// This is required in order to use QPointer as a QVariant
+typedef QPointer YTUserPointer;
+Q_DECLARE_METATYPE(YTUserPointer)
+
+#endif // YTUSER_H
diff --git a/style.css b/style.css
index 9b980e9..9fdf263 100644
--- a/style.css
+++ b/style.css
@@ -75,75 +75,3 @@ SidebarHeader QComboBox::drop-down {
width: 0;
border-style: none;
}
-
-/* Ambiance */
-
-MainWindow[style="Ambiance"] > QToolBar {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #3c3b37, stop: 1 #474641);
-}
-
-MainWindow[style="Ambiance"] > QToolBar QToolButton,
-MainWindow[style="Ambiance"] > QToolBar QLabel {
- color: #dfdbd2;
-}
-
-MainWindow[style="Ambiance"] > QToolBar QToolButton:disabled {
- color: #8f8c86;
-}
-
-MainWindow[style="Ambiance"] > QToolBar QToolButton:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #474641, stop: 1 #3c3b37);
- border-radius: 5px;
- border: 1px outset #3c3b37;
-}
-
-MainWindow[style="Ambiance"] > QToolBar QToolButton:pressed,
-MainWindow[style="Ambiance"] > QToolBar QToolButton:checked {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #3b3a36, stop: 1 #363531);
- border-radius: 5px;
- border: 1px inset #292825;
-}
-
-
-MainWindow[style="Ambiance"] QSlider::groove:horizontal {
- border: 1px solid #808080;
- height: 8px;
- background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #ccc);
- border-radius: 5px;
-}
-
-MainWindow[style="Ambiance"] QSlider::sub-page:horizontal {
- border: 1px solid #808080;
- height: 8px;
- background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #6c6c6c, stop:1 #B1B1B1);
- border-radius: 5px;
-}
-
-MainWindow[style="Ambiance"] QSlider::handle:horizontal {
- border: 1px solid #5c5c5c;
- width: 14px;
- height: 16px;
- margin: -4px 0;
- border-radius: 8px;
- background: qradialgradient(
- cx: .5, cy: .5,
- fx: .33, fy: .33,
- radius: .5,
- stop: 0 #fff, stop: 1 #ccc);
-}
-
-MainWindow[style="Ambiance"] QSlider::handle:pressed {
- background: qradialgradient(
- cx: .5, cy: .5,
- fx: .33, fy: .33,
- radius: .5,
- stop: 0 #ccc, stop: 1 #9c9c9c);
-}
-
-MainWindow[style="Ambiance"] Phonon--SeekSlider QSlider::sub-page:horizontal {
- border: 1px solid #808080;
- background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #6c6c6c);
-}