From e911bb9726db1c3e46ba365e52f7541b8f4a47d4 Mon Sep 17 00:00:00 2001 From: Jakob Haufe Date: Fri, 5 Sep 2014 23:01:35 +0200 Subject: [PATCH] Imported Upstream version 2.2 --- CHANGES | 9 + locale/ast.ts | 2 +- locale/be.ts | 28 +- locale/bg_BG.ts | 96 +- locale/cs_CZ.ts | 2 +- locale/de_DE.ts | 4 +- locale/el.ts | 280 +++--- locale/fr.ts | 2 +- locale/ky.ts | 46 +- locale/locale.pri | 2 +- locale/nn.ts | 1595 ++++++++++++++++++++++++++++++++++ locale/pl.ts | 14 +- locale/ro.ts | 4 +- locale/sv_SE.ts | 4 +- locale/uk.ts | 18 +- locale/uk_UA.ts | 144 +-- minitube.desktop | 6 +- minitube.pro | 2 +- src/channelaggregator.h | 2 +- src/channelmodel.cpp | 18 + src/channelmodel.h | 1 + src/channelview.cpp | 71 +- src/channelview.h | 4 +- src/mainwindow.cpp | 6 + src/playlistitemdelegate.cpp | 6 +- src/playlistview.cpp | 19 +- src/searchview.cpp | 2 +- src/spacer.cpp | 5 +- src/video.cpp | 26 + src/video.h | 6 +- src/ytuser.cpp | 7 + src/ytuser.h | 6 +- 32 files changed, 2075 insertions(+), 362 deletions(-) create mode 100644 locale/nn.ts diff --git a/CHANGES b/CHANGES index c47fc87..cf769c5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,12 @@ +2.2 +- Subscriptions context menu: Unsubscribe, Mark as Watched +- Added --stop-after-this command line switch +- Added Stop After This Video Unity & Gnome 3 action +- Fixed painting errors when scrolling playlist on Linux +- Fixed bug with dragging playlist items from the thumbnail +- Fixed some videos not playing +- Updated translations + 2.1.6 - Fix some videos not playing - Remove obsolete categories in the Browse tab diff --git a/locale/ast.ts b/locale/ast.ts index e8a0faa..89d0084 100644 --- a/locale/ast.ts +++ b/locale/ast.ts @@ -175,7 +175,7 @@ Name - + Nome diff --git a/locale/be.ts b/locale/be.ts index 29cb015..7e3af67 100644 --- a/locale/be.ts +++ b/locale/be.ts @@ -45,7 +45,7 @@ Translate %1 to your native language using %2 - Перакладайце %1 на родную мову цераз %2 + Перакладайце %1 на родную мову праз %2 @@ -387,17 +387,17 @@ Stop playing after current track - Спыніцца пасля бягучай дарожкі + Спыніцца пасля бягучага трэка Next track - Наступная дарожка + Наступны трэк Previous track - Папярэдняя дарожка + Папярэдні трэк @@ -481,7 +481,7 @@ Stop playback and go back to the search view - Спыніць гранне і вярнуцца да пошуку + Спыніць прайграванне і вярнуцца да пошуку @@ -528,12 +528,12 @@ Copy the current video YouTube link to the clipboard - Скапіраваць YouTube-спасылку бягучага відэа ў буфер + Скапіяваць YouTube-спасылку бягучага відэа ў буфер Copy the current video stream URL to the clipboard - Скапіраваць спасылку на бягучы відаэпаток у буфер + Скапіяваць спасылку на бягучы відаэпаток у буфер @@ -608,7 +608,7 @@ Info about %1 - Інфармацыя пра %1 + Звесткі пра %1 @@ -649,7 +649,7 @@ Share the current video using %1 - Распаўсюдзіць відэа цераз %1 + Распаўсюдзіць відэа праз %1 @@ -679,7 +679,7 @@ &Report an Issue... - &Паведаміць пра памылку... + &Паведаміць пра хібу... @@ -810,7 +810,7 @@ Go back to the previous track - Вярнуцца на папярэднюю дарожку + Вярнуцца да папярэдняга трэка @@ -825,12 +825,12 @@ Copy the YouTube &Link - Скапіраваць &спасылку на YouTube + Скапіяваць YouTube-&спасылку Copy the Video Stream &URL - Скапіраваць спасылку на відэа&паток + Скапіяваць спасылку на відэа&паток @@ -913,7 +913,7 @@ You can now paste the YouTube link into another application - Цяпер можна ўстаўляць спасылкі на YouTube у іншых праграмах + Цяпер можна ўставіць YouTube-спасылку ў іншую праграму diff --git a/locale/bg_BG.ts b/locale/bg_BG.ts index 92b2e4a..f6f2fda 100644 --- a/locale/bg_BG.ts +++ b/locale/bg_BG.ts @@ -30,22 +30,22 @@ 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 @@ -78,7 +78,7 @@ Enter your License Details - + Въведете вашите лицензионни данни @@ -101,22 +101,22 @@ 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. @@ -126,7 +126,7 @@ Enter License - + Въведи лиценз @@ -139,7 +139,7 @@ By %1 - + От %1 @@ -152,12 +152,12 @@ All Videos - + Всички видео клипове Unwatched Videos - + Неизгледани видео клипове @@ -289,7 +289,7 @@ It can only download videos shorter than %1 minutes so you can test the download functionality. - + Може да изтегляте видео клипове по-къси от &1 минута, за да изпробвате функцията за изтегляне. @@ -322,22 +322,22 @@ Change location... - + Промени мястото... Choose the download location - + Избери мястo за изтегляне Download location changed. - + Мястото за запис на изтеглянията е сменено. Current downloads will still go in the previous location. - + Текущите изтегляния ще продължат да се запазват на предишното място. @@ -359,7 +359,7 @@ Downloading update... - + Изтегляне на обновяване... @@ -440,12 +440,12 @@ Browse - + Търси Browse videos by category - + Търси видеа по категория @@ -629,22 +629,22 @@ Show details about video downloads - + Покажи подробности относно видео изтеглянията &Download - + &Изтегляния Download the current video - + Изтегли текущото видео &Subscribe to Channel - + &Абонирай се за Канала @@ -679,12 +679,12 @@ &Report an Issue... - + &Докладвай проблем... &Refine Search... - + &Стесняване на търсенето... @@ -694,17 +694,17 @@ &Related Videos - + &Сродни Видео клипове Watch videos related to the current one - + Гледай видео клиповете свързани с това Open in &Browser... - + Отвори в &Браузъра... @@ -760,17 +760,17 @@ 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 - + Затвори и прекъсни изтеглянето @@ -835,12 +835,12 @@ Find Video &Parts - + Намери Видео &Части &Clear Recent Searches - + &Изчисти Последните Търсения @@ -905,7 +905,7 @@ Downloads complete - + Изтеглянето е завършено @@ -933,7 +933,7 @@ It allows you to test the application and see if it works for you. - + Позволява ви да изпробвате програмата, за да проверите дали работи добре при вас. @@ -966,12 +966,12 @@ Unsubscribe from %1 - + Отписване от %1 Subscribe to %1 - + Абонирай се за %1 @@ -999,12 +999,12 @@ Would you like to download it now? - + Бихте ли искали да го изтеглите сега? Skip This Version - + Пропусни тази версия @@ -1022,7 +1022,7 @@ Paste - + Постави @@ -1070,7 +1070,7 @@ Open parent folder - + Отвори родителската папка @@ -1111,7 +1111,7 @@ Relevance - + Уместност @@ -1132,7 +1132,7 @@ Anytime - + По всяко време @@ -1208,7 +1208,7 @@ Done - + Готово @@ -1216,7 +1216,7 @@ Done - + Завършено @@ -1300,7 +1300,7 @@ Refine Search - + Стесни търсенето diff --git a/locale/cs_CZ.ts b/locale/cs_CZ.ts index 4c76524..38a9d64 100644 --- a/locale/cs_CZ.ts +++ b/locale/cs_CZ.ts @@ -704,7 +704,7 @@ Open in &Browser... - + Otevřít v prohlížeči ... diff --git a/locale/de_DE.ts b/locale/de_DE.ts index 84973f5..3df5d1d 100644 --- a/locale/de_DE.ts +++ b/locale/de_DE.ts @@ -60,7 +60,7 @@ &Close - S&chließen + &Schließen @@ -476,7 +476,7 @@ &Stop - &Halt + &Stop diff --git a/locale/el.ts b/locale/el.ts index c3c8e02..855c207 100644 --- a/locale/el.ts +++ b/locale/el.ts @@ -25,12 +25,12 @@ Please <a href='%1'>donate</a> to support the continued development of %2. - Παρακαλούμε <a href='%1%'>δωρίστε</a> για να υποστηρίξετε την συνεχόμενη ανάπτυξη του %2. + Παρακαλούμε <a href='%1%'>κάνετε δωρεά</a> για να υποστηρίξετε την συνεχόμενη ανάπτυξη του %2. You may want to try my other apps as well: - Μπορεί να θέλετε να δοκιμάσετε και τις άλλες μου εφαρμογές: + Μπορείτε να θέλετε να δοκιμάσετε και τις άλλες μου εφαρμογές: @@ -45,7 +45,7 @@ Translate %1 to your native language using %2 - Μεταφράστε το %1 στη γλώσσα σας χρησιμοποιώντας το %2 + Μεταφράστε το %1 στη γλώσσα σας με χρήση του %2 @@ -78,7 +78,7 @@ Enter your License Details - Εισάγετε τις λεπτομέρειες της άδειας χρήσης + Εισάγετε τις Λεπτομέρειες της Άδειας Χρήσης @@ -111,7 +111,7 @@ Without a license, the application will expire in %1 days. - Χωρίς την άδεια χρήσης, η εφαρμογή θα λήξη σε %1 μέρες + Χωρίς την άδεια χρήσης, η εφαρμογή θα λήξη σε %1 ημέρες. @@ -121,17 +121,17 @@ Use Demo - Χρήση της δοκιμαστικής έκδοσης + Χρήση της Δοκιμαστικής Έκδοσης Enter License - Εισαγωγή άδειας χρήσης + Εισαγωγή Άδειας Χρήσης Buy License - Αγορά άδειας χρήσης + Αγορά Άδειας Χρήσης @@ -152,12 +152,12 @@ All Videos - Όλα τα βίντεο + Όλα τα Βίντεο Unwatched Videos - Σχετικά βίντεο + Μη Παρακολουθημένα Βίντεο @@ -170,57 +170,57 @@ 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. - Δεν έχετε εγγραφές. Χρησιμοποιήστε το αστέρι για να εγγραφείτε συνδρομητής σε κανάλια. + Δεν έχετε συνδρομές. Χρησιμοποιήστε το αστέρι για να κάνετε συνδρομή σε κανάλια. @@ -228,7 +228,7 @@ Clear - Καθαρισμός + Εκκαθάριση @@ -299,7 +299,7 @@ Get the full version - Αποκτήστε την πλήρη έκδοση + Αποκτήστε τη πλήρη έκδοση @@ -359,7 +359,7 @@ Downloading update... - Μεταφόρτωση ενημερώσεων... + Λήψη ενημερώσεων... @@ -435,17 +435,17 @@ Find videos and channels by keyword - Ευρεση βίντεο και κανάλιων μεσω λέξεις-κλειδία + Εύρεση βίντεο και καναλιών μέσω λέξεις-κλειδιά Browse - Περιηγηση + Περίηγηση Browse videos by category - Περιηγηση βιντεο ανα κατηγορια + Περιήγηση βίντεο ανά κατηγορία @@ -455,7 +455,7 @@ Channel subscriptions - Συνδρομές καναλιού + Συνδρομές σε κανάλια @@ -481,7 +481,7 @@ Stop playback and go back to the search view - Διακοπή αναπαραγωγής και επιστροφή στην προβολή αναζήτησης + Διακοπή αναπαραγωγής και επιστροφή στη προβολή αναζήτησης @@ -508,7 +508,7 @@ &Full Screen - &Πλήρης οθόνη + &Πλήρης Οθόνη @@ -528,12 +528,12 @@ Copy the current video YouTube link to the clipboard - Αντιγραφή του δεσμού του τρέχοντος YouTube βίντεο στη μνήμη + Αντιγραφή του συνδεσμού του τρέχοντος βίντεο YouTube στο πρόχειρο Copy the current video stream URL to the clipboard - Αντιγραφή του URL της τρέχουσας ροής βίντεο στη μνήμη + Αντιγραφή του συνδέσμου της τρέχουσας ροής βίντεο στη μνήμη @@ -553,7 +553,7 @@ Move &Up - Μετακίνηση προς τα &πάνω + Μετακίνηση προς τα &Πάνω @@ -563,7 +563,7 @@ Move &Down - Μετακίνηση προς τα &κάτω + Μετακίνηση προς τα &Κάτω @@ -573,7 +573,7 @@ Clear the search history. Cannot be undone. - Καθαρισμός του ιστορικού αναζήτησης. Δεν μπορεί να γίνει επαναφορά. + Εκκαθάριση του ιστορικού αναζήτησης. Αυτή η ενέργεια δε μπορεί να αναιρεθεί. @@ -583,7 +583,7 @@ Bye - Γεια + Αντίο @@ -608,7 +608,7 @@ Info about %1 - Πληροφορίες για %1 + Πληροφορίες για το %1 @@ -618,7 +618,7 @@ Mute volume - Σίγαση + Σίγαση ήχου @@ -644,22 +644,22 @@ &Subscribe to Channel - Εγγραφή στο κανάλι + &Συδρομή στο Κανάλι Share the current video using %1 - Κοινή χρήση του τρέχοντος βίντεο με το %1 + Κοινοποίηση του τρέχοντος βίντεο μέσω %1 &Email - &Ηλ. αλληλογραφία + &Email Email - Ηλ. αλληλογραφία + Email @@ -669,32 +669,32 @@ &Float on Top - &Διατήρηση στην κορυφή + &Διατήρηση στην Κορυφή &Stop After This Video - &Διακοπή μετά από αυτό το βίντεο + &Διακοπή Μετά Από Αυτό το Βίντεο &Report an Issue... - &Αναφέρετε κάποιο σφάλμα... + &Αναφέρετε Σφάλμα... &Refine Search... - &Σύνθετη αναζήτηση... + &Σύνθετη Αναζήτηση... More... - Περισσοτερα... + Περισσότερα... &Related Videos - Σχετικα βιντεο + &Σχετικά βίντεο @@ -704,7 +704,7 @@ Open in &Browser... - + Άνοιγμα σε &Περιηγητή... @@ -739,7 +739,7 @@ &Share - &Κοινή χρήση + &Κοινοποίηση @@ -780,12 +780,12 @@ Leave &Full Screen - Έξοδος από &πλήρη οθόνη + Έξοδος από &Πλήρη Οθόνη %1 version %2 is now available. - Η έκδοση %2 του %1 είναι διαθέσιμη. + Η έκδοση %2 του %1 έχει γίνει διαθέσιμη. @@ -820,37 +820,37 @@ Open the &YouTube Page - Άνοιγμα στην ιστοσελίδα του &YouTube + Άνοιγμα στην Ιστοσελίδα του &YouTube Copy the YouTube &Link - Αντιγραφή του &δεσμού YouTube + Αντιγραφή του &Συνδεσμού YouTube Copy the Video Stream &URL - Αντιγραφή του &URL της ροής βίντεο + Αντιγραφή του &Συνδέσμου της Ροής Βίντεο Find Video &Parts - Αναζήτηση των &επισοδείων του βίντεο + Αναζήτηση των &Επεισοδίων του Βίντεο &Clear Recent Searches - &Καθαρισμός πρόσφατων αναζητήσεων + &Εκκαθάριση Πρόσφατων Αναζητήσεων Make a &Donation - Κάντε μια &δωρεά + Κάντε μια &Δωρεά &Manually Start Playing - Εκκίνηση της αναπαραγωγής &χειροκίνητα + Εκκίνηση της Αναπαραγωγής &Χειροκίνητα @@ -860,7 +860,7 @@ Choose your content location - Επιλογή της τοποθεσίας του περιεχομένου σας + Επιλέξτε την τοποθεσία για το περιεχόμενό σας @@ -913,17 +913,17 @@ You can now paste the YouTube link into another application - Τώρα μπορείτε να επικολλήσετε το δεσμό του YouTube σε κάποια άλλη εφαρμογή + Τώρα μπορείτε να επικολλήσετε τον συνδεσμό του YouTube σε κάποια άλλη εφαρμογή You can now paste the video stream URL into another application - Τώρα μπορείτε να επικολλήσετε το URL της ροής βίντεο σε κάποια άλλη εφαρμογή + Τώρα μπορείτε να επικολλήσετε τον σύνδεσμο της ροής βίντεο σε κάποια άλλη εφαρμογή The link will be valid only for a limited time. - Ο σύνδεμος θα είναι έγκυρος μόνο για περιορισμένο χρονικό διάστημα. + Ο σύνδεσμος θα είναι έγκυρος για περιορισμένο χρονικό διάστημα. @@ -956,7 +956,7 @@ episode This is for video parts, as in 'Cool series - episode 1' - επισόδειο + επεισόδιο @@ -966,17 +966,17 @@ Unsubscribe from %1 - Διαγραφή από το %1 + Κατάργηση συνδρομής στο %1 Subscribe to %1 - Εγγραφή στο %1 + Συνδρομή στο %1 Get the full version - Αποκτήστε την πλήρη έκδοση + Αποκτήστε τη πλήρη έκδοση @@ -994,7 +994,7 @@ %1 %2 is now available. You have %3. - Η %1 %2 είναι διαθέσιμη. Έχετε την %3 + Η %1 %2 είναι διαθέσιμη. Έχετε την %3. @@ -1004,17 +1004,17 @@ Skip This Version - Παράλειψη αυτής της έκδοσης + Παράλειψη Αυτής της Έκδοσης Remind Me Later - Υπενθύμισε το μου αργότερα + Υπενθύμισε το μου Αργότερα Install Update - Εγκατάσταση Ενημερώσεων + Εγκατάσταση Ενημέρωσης @@ -1030,7 +1030,7 @@ %1 views - Προβολές %1 + %1 προβολές @@ -1122,7 +1122,7 @@ View Count - Αριθμό προβολών + Αριθμό Προβολών @@ -1163,32 +1163,32 @@ Short - Μικρό + Μικρή Medium - Μέτριο + Μέτρια Long - Μεγάλο + Μεγάλη Less than 4 minutes - Λιγότερο από 4 λεπτά + Λιγότερη από 4 λεπτά Between 4 and 20 minutes - Μεταξύ 4 και 20 λεπτών + Μεταξύ 4 και 20 λεπτά Longer than 20 minutes - Μεγαλύτερο από 20 λεπτά + Μεγαλύτερη από 20 λεπτά @@ -1198,12 +1198,12 @@ High Definition - Υψηλή ανάλυση + Υψηλή Ανάλυση 720p or higher - 720p είτε ψηλότερα + 720p και μεγαλύτερη @@ -1237,13 +1237,13 @@ Get the full version - Αποκτήστε την πλήρη έκδοση + Αποκτήστε τη πλήρη έκδοση Enter "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos" - Πληκτρολογήστε + Εισάγετε @@ -1263,7 +1263,7 @@ Watch - Δείτε + Παρακολουθήστε @@ -1282,7 +1282,7 @@ &Back - &Πίσω + &Επιστροφή @@ -1292,7 +1292,7 @@ Back to %1 - Πισω στο %1 + Επιστροφή στο %1 @@ -1300,7 +1300,7 @@ Refine Search - Σύνθετη αναζήτηση + Σύνθετη Αναζήτηση @@ -1313,27 +1313,27 @@ Most Popular - Τα πιο δημοφιλή + Πιο Δημοφιλή Most Shared - Πιο πρόσφατα + Πιο Πρόσφατα Most Discussed - Πιο συζυτημενα + Πιο Συζυτημένα Top Rated - Καλυτερα βαθμολογημενα + Καλύτερα Βαθμολογημένα All Time Popular - Σε όλα τα χρονικά δημοφιλή + Σε Όλα τα Χρονικά Δημοφιλή @@ -1341,7 +1341,7 @@ Cannot get video stream for %1 - Αδυναμία λήψης της ροής βίντεο για %1 + Αδυναμία λήψης της ροής βίντεο για το %1 @@ -1354,72 +1354,72 @@ Algeria - Αλγερια + Αλγερία Argentina - Αργεντινη + Αργεντινή Australia - Αυστραλια + Αυστραλία Belgium - Βελγιο + Βέλγιο Brazil - Βραζιλια + Βραζιλία Canada - Καναδας + Καναδάς Chile - Χιλη + Χιλή Colombia - Κολομβια + Κολομβία Czech Republic - Τσεχια + Τσεχία Egypt - Αιγυπτος + Αίγυπτος France - Γαλλια + Γαλλία Germany - Γερμανια + Γερμανία Ghana - Γκανα + Γκάνα Greece - Ελλαδα + Ελλάδα @@ -1429,167 +1429,167 @@ 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/fr.ts b/locale/fr.ts index 88396ed..389e87f 100644 --- a/locale/fr.ts +++ b/locale/fr.ts @@ -885,7 +885,7 @@ Volume is muted - volume actif + Volume actif diff --git a/locale/ky.ts b/locale/ky.ts index beed1f3..d0e2eac 100644 --- a/locale/ky.ts +++ b/locale/ky.ts @@ -10,7 +10,7 @@ Version %1 - Версия %1 + Жоромол %1 @@ -35,7 +35,7 @@ %1, a YouTube music player - %1, YouTube музыка ойноткучу + %1, YouTube'дун музыка ойноткучу @@ -70,7 +70,7 @@ What you always wanted to know about %1 and never dared to ask - Дайыма билгиниңиз келген жана эч качан сурабай жүргөн %1 жөнүндөгү маалыматтар + %1 тууралуу дайыма билгиңиз келген маалымат @@ -83,12 +83,12 @@ &Email: - &E-mail: + &Эл. почта: &Code: - &Коду: + &Код: @@ -139,7 +139,7 @@ By %1 - + %1 тарабынан @@ -220,7 +220,7 @@ You have no subscriptions. Use the star symbol to subscribe to channels. - + Сизде жазылуулар жок. Каналдарга жазылуу үчүн жылдызча символун колдонуңуз. @@ -299,7 +299,7 @@ Get the full version - Толук версиясын алуу + Толук жоромолун алуу @@ -402,17 +402,17 @@ Increase volume - Катуураак + Көлөмүн чоңойтуу Decrease volume - Акырыныраак + Көлөмүн азайтуу Mute - Басаңдатуу + Үнүн өчүрүү @@ -654,12 +654,12 @@ &Email - &E-mail + &Эл. почта Email - E-mail + Эл. почта @@ -905,7 +905,7 @@ Downloads complete - Жүктөп алуу аякталды + Жүктөлөр аякталды @@ -966,7 +966,7 @@ Unsubscribe from %1 - + %1 каналындагы жазылуудан чыгуу @@ -1009,12 +1009,12 @@ Remind Me Later - Кечирээк эске салуу + Кечирээк эске салдыруу Install Update - Жаңылоолорду орнотуу + Жаңылоону орнотуу @@ -1040,7 +1040,7 @@ Preparing - Даярдоо + Даярдалууда @@ -1083,7 +1083,7 @@ Searching... - Издөө... + Изделүүдө... @@ -1188,7 +1188,7 @@ Longer than 20 minutes - 20 минутадан көбүрөөк + 20 минутадан узагыраак @@ -1203,7 +1203,7 @@ 720p or higher - 720p же чоңураак + 720p же жогорураак @@ -1305,7 +1305,7 @@ Did you mean: %1 - Муну болжогон жоксузбу: %1 + Бул эмеспи: %1 @@ -1333,7 +1333,7 @@ All Time Popular - + Ар дайым популярдуу diff --git a/locale/locale.pri b/locale/locale.pri index 925d63a..a9ff4b4 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 ast.ts be.ts bg_BG.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 es_MX.ts fi.ts fi_FI.ts fr.ts gl.ts he_IL.ts hr.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.ts pt_BR.ts ro.ts ru.ts sk.ts sl.ts sq.ts sv_SE.ts tr.ts uk.ts uk_UA.ts vi.ts zh_CN.ts zh_TW.ts +TRANSLATIONS += ar.ts ast.ts be.ts bg_BG.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 es_MX.ts fi.ts fi_FI.ts fr.ts gl.ts he_IL.ts hr.ts hu.ts ia.ts it.ts ja_JP.ts ky.ts ms_MY.ts nb.ts nl.ts nn.ts pl.ts pl_PL.ts pt.ts pt_BR.ts ro.ts ru.ts sk.ts sl.ts sq.ts sv_SE.ts tr.ts uk.ts uk_UA.ts vi.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/nn.ts b/locale/nn.ts new file mode 100644 index 0000000..46b0c67 --- /dev/null +++ b/locale/nn.ts @@ -0,0 +1,1595 @@ + +UTF-8 + + AboutView + + + There's life outside the browser! + Det finst eit liv utanfor nettlesaren! + + + + 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 utviklinga tek dyrebar tid. + + + + Please <a href='%1'>donate</a> to support the continued development of %2. + Ver venleg og <a href='%1'>doner</a> for å støtta vidare utvikling av %2. + + + + You may want to try my other apps as well: + Du er kanskje interessert i å prøva dei andre programma mine: + + + + %1, a YouTube music player + %1, ein musikkspelar for YouTube + + + + %1, a music player + %1, ein musikkspelar + + + + Translate %1 to your native language using %2 + Omset %1 til morsmålet ditt med %2 + + + + Icon designed by %1. + Ikonet er utforma av %1. + + + + Released under the <a href='%1'>GNU General Public License</a> + Utgjeve under <a href='%1'>GNU General Public License</a> + + + + &Close + &Lukk + + + + About + Om + + + + What you always wanted to know about %1 and never dared to ask + Alt du alltid har ynskt å vita om %1, men aldri tort spørja om + + + + ActivationDialog + + + Enter your License Details + Skriv inn lisensinformasjonen din + + + + &Email: + &E-post: + + + + &Code: + &Kode: + + + + ActivationView + + + Please license %1 + Ver venleg og lisensier %1 + + + + This demo has expired. + Demoen har laupt ut. + + + + The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions. + Fullversjonen lar deg lasta ned videoar lenger enn %1 minutt og lar deg sjå videoar utan avbrot. + + + + Without a license, the application will expire in %1 days. + Utan ein lisens vil programmet gå ut på dato om %1 dagar. + + + + By purchasing the full version, you will also support the hard work I put into creating %1. + Ved å kjøpa den fullstendige utgåva, støttar du arbeidet lagt inn i å skapa %1. + + + + Use Demo + Bruk demoen + + + + Enter License + Skriv inn lisens + + + + Buy License + Kjøp lisens + + + + ChannelAggregator + + + By %1 + Etter %1 + + + + You have %n new video(s) + + + + + ChannelItemDelegate + + + All Videos + Alle videoar + + + + Unwatched Videos + Usette videoar + + + + ChannelView + + + Mark all as watched + Merk alle som sett + + + + Show Updated + Vis oppdaterte + + + + Name + Namn + + + + Last Updated + Sist oppdatert + + + + Last Added + Sist lagt til + + + + Last Watched + Sist sett + + + + Most Watched + Mest sett + + + + Sort by + Sorter etter + + + + All Videos + Alle videoar + + + + Unwatched Videos + Usette videoar + + + + There are no updated subscriptions at this time. + Ingen oppdaterte tingingar enno. + + + + You have no subscriptions. Use the star symbol to subscribe to channels. + Du har ingen tingingar. Bruk stjernesymbolet for å tinga kanalar. + + + + ClearButton + + + Clear + Nullstill + + + + DownloadItem + + + bytes + byte + + + + KB + KB + + + + MB + MB + + + + bytes/sec + byte/sek + + + + KB/sec + KB/sek + + + + MB/sec + MB/sek + + + + seconds + sekund + + + + minutes + minutt + + + + %4 %5 remaining + %4 %5 gjenstår + + + + DownloadManager + + + This is just the demo version of %1. + Dette er berre demoutgåva av %1. + + + + It can only download videos shorter than %1 minutes so you can test the download functionality. + Han kan berre lasta ned videoar på under %1 minutt, for at du skal kunna prøva ut nedlastingsfunksjonen. + + + + Continue + Hald fram + + + + Get the full version + Kjøp fullversjonen + + + + %1 downloaded in %2 + %1 lasta ned på %2 + + + + Download finished + Nedlasting ferdig + + + + %n Download(s) + %n nedlasting%n nedlastingar + + + + DownloadSettings + + + Change location... + Endra stad … + + + + Choose the download location + Vel nedlastingsmappe + + + + Download location changed. + Nedlastingsmappe endra. + + + + Current downloads will still go in the previous location. + Nedlastingar som er i gong vil likevel lagrast i den førre mappa. + + + + Downloading to: %1 + Lastar ned til: %1 + + + + DownloadView + + + + Downloads + Nedlastingar + + + + DownloadWidget + + + Downloading update... + Lastar ned oppdatering … + + + + GlobalShortcuts + + + Play + Spel av + + + + Pause + Pause + + + + Play/Pause + Spel av/pause + + + + Stop + Stopp + + + + Stop playing after current track + Stopp avspelinga etter denne videoen + + + + Next track + Neste video + + + + Previous track + Førre video + + + + Increase volume + Auk lydvolumet + + + + Decrease volume + Senk lydvolumet + + + + Mute + Lydlaus + + + + Seek forward + Søk framover + + + + Seek backward + Søk bakover + + + + HomeView + + + Search + Søk + + + + Find videos and channels by keyword + Finn videoar og kanalar med nøkkelord + + + + Browse + Bla gjennom + + + + Browse videos by category + Bla gjennom videoar etter kategory + + + + Subscriptions + Tingingar + + + + Channel subscriptions + Kanaltingingar + + + + Make yourself comfortable + Gjer deg sjølv komfortabel + + + + LoadingWidget + + + Error + Feil + + + + MainWindow + + + &Stop + &Stopp + + + + Stop playback and go back to the search view + Stoppar avspeling og går tilbake til søkjevisinga + + + + S&kip + &Hopp over + + + + Skip to the next video + Hopp til neste video + + + + + &Pause + &Pause + + + + + Pause playback + Set avspeling på pause + + + + &Full Screen + &Fullskjerm + + + + Go full screen + Fullskjermvising + + + + Hide the playlist and the toolbar + Gøym spelelista og verktøylinja + + + + Go to the YouTube video page and pause playback + Gå til video-sida på YouTube og set avspelinga på pause + + + + Copy the current video YouTube link to the clipboard + Kopier denne YouTube video-lenkja til utklippstavla + + + + Copy the current video stream URL to the clipboard + Kopier denne videostraumlenkja til utklippstavla + + + + Find other video parts hopefully in the right order + Finn andre deler av videoen, vonleg i rett følgje + + + + &Remove + &Fjern + + + + Remove the selected videos from the playlist + Fjern valde videoar frå spelelista + + + + Move &Up + Flytt &opp + + + + Move up the selected videos in the playlist + Flytt opp valde videoar i spelelista + + + + Move &Down + Flytt &ned + + + + Move down the selected videos in the playlist + Flytt ned valde videoar i spelelista + + + + Clear the search history. Cannot be undone. + Fjern all søkjehistorie. Kan ikkje angrast. + + + + &Quit + &Avslutt + + + + Bye + Farvel + + + + &Website + &Nettstad + + + + %1 on the Web + %1 på internett + + + + Please support the continued development of %1 + Vi håpar du kan bidra til vidare utvikling av %1 + + + + &About + &Om + + + + Info about %1 + Informasjon om %1 + + + + Search + Søk + + + + Mute volume + Lydlaus + + + + + &Downloads + &Nedlastingar + + + + Show details about video downloads + Vis detaljar om videonedlasting + + + + &Download + &Nedlasting + + + + Download the current video + Last ned denne videoen + + + + &Subscribe to Channel + &Ting kanal + + + + 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... + &Meld frå om feil … + + + + &Refine Search... + &Raffiner søk … + + + + More... + Meir … + + + + &Related Videos + &Liknande videoar + + + + Watch videos related to the current one + Sjå videoar som liknar på denne + + + + Open in &Browser... + Opna i &nettlesaren … + + + + &Application + &Program + + + + Buy %1... + Kjøp %1 … + + + + &Playback + &Avspeling + + + + &Playlist + &Speleliste + + + + &Video + &Video + + + + &View + &Vising + + + + &Share + &Del + + + + &Help + &Hjelp + + + + Press %1 to raise the volume, %2 to lower it + Trykk på %1 for å auka lydvolumet, %2 for å senka + + + + + Opening %1 + Opnar %1 + + + + Do you want to exit %1 with a download in progress? + Vil du avslutta %1 medan ei nedlasting er i gang? + + + + If you close %1 now, this download will be cancelled. + Vis du stenger %1 no, vil nedlastinga avbrytast + + + + Close and cancel download + Steng og avbryt nedlastinga + + + + Wait for download to finish + Vent medan nedlastinga vert fullførd + + + + Leave &Full Screen + Forlat &fullskjerm + + + + %1 version %2 is now available. + Versjon %2 av %1 er no tilgjengeleg. + + + + Remind me later + Minn meg på det seinare + + + + Update + Oppdater + + + + Error: %1 + Feil: %1 + + + + P&revious + &Førre + + + + Go back to the previous track + Gå til førre spor + + + + &Compact Mode + &Kompakt modus + + + + Open the &YouTube Page + Opna &YouTube-sida + + + + Copy the YouTube &Link + Kopier YouTube-&lenkja + + + + Copy the Video Stream &URL + Kopier &URL-en til videostraumen + + + + Find Video &Parts + Finn &delane av videoen + + + + &Clear Recent Searches + &Tøm siste søk + + + + Make a &Donation + &Doner + + + + &Manually Start Playing + Start avspelinga &manuelt + + + + Manually start playing videos + Spel av videoar manuelt + + + + Choose your content location + Vel stad for innhald + + + + &Play + &Spel av + + + + Resume playback + Gjenoppta avspeling + + + + Remaining time: %1 + Tid igjen: %1 + + + + Volume at %1% + Volum %1% + + + + Volume is muted + Lydlaust er på + + + + Volume is unmuted + Lydlaust er av + + + + Maximum video definition set to %1 + Maksimum videodefinisjon sett til %1 + + + + Your privacy is now safe + Privatlivet ditt er no sikkert + + + + Downloads complete + Nedlastingar fullførde + + + + MediaView + + + You can now paste the YouTube link into another application + Du kan no lima inn YouTube-lenkja i eit anna program + + + + You can now paste the video stream URL into another application + Du kan no lima inn videostraumlenkja i eit anna program + + + + The link will be valid only for a limited time. + Denne lenkja vil berre vera gyldig i ei avgrensa tid. + + + + This is just the demo version of %1. + Dette er berre demoutgåva av %1. + + + + It allows you to test the application and see if it works for you. + Dette lèt prøva ut programmet og sjå om det er noko for deg. + + + + Continue + Hald fram + + + + 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 + Send frå %1 + + + + Unsubscribe from %1 + Slutt å tinga %1 + + + + Subscribe to %1 + Ting %1 + + + + Get the full version + Kjøp fullversjonen + + + + Downloading %1 + Lastar ned %1 + + + + MessageWidget + + + A new version of %1 is available! + Ny utgåve av %1 tilgjengeleg! + + + + %1 %2 is now available. You have %3. + %1 %2 er no tilgjengeleg. Du har %3. + + + + Would you like to download it now? + Vil du lasta ned no? + + + + Skip This Version + Hopp over denne utgåva + + + + Remind Me Later + Minn på meg seinare + + + + Install Update + Installer oppdatering + + + + PasteLineEdit + + + Paste + Lim inn + + + + PlaylistItemDelegate + + + %1 views + %1 visingar + + + + %1 of %2 (%3) — %4 + %1 av %2 (%3) — %4 + + + + Preparing + Gjer klar + + + + Failed + Feil + + + + Completed + Ferdig + + + + Stopped + Stoppa + + + + Stop downloading + Avbryt nedlasting + + + + Show in %1 + Vis i %1 + + + + Open parent folder + Opna foreldermappe + + + + Restart downloading + Start nedlasting på nytt + + + + PlaylistModel + + + Searching... + Søkjer … + + + + Show %1 More + Vis %1 til + + + + No videos + Ingen videoar + + + + No more videos + Ingen fleire videoar + + + + RefineSearchWidget + + + Sort by + Sorter etter + + + + Relevance + Relevans + + + + + Date + Dato + + + + View Count + Vis kor mange + + + + Rating + Rangering + + + + Anytime + Når som helst + + + + Today + I dag + + + + 7 Days + 7 dagar + + + + 30 Days + 30 dagar + + + + Duration + Varigskap + + + + + All + Alle + + + + Short + Kort + + + + Medium + Middels + + + + Long + Lang + + + + Less than 4 minutes + Mindre enn 4 minutt + + + + Between 4 and 20 minutes + Mellom 4 og 20 minutt + + + + Longer than 20 minutes + Meir enn 20 minutt + + + + Quality + Kvalitet + + + + High Definition + Høy oppløysing + + + + 720p or higher + 720p eller høgare + + + + Done + Ferdig + + + + RegionsView + + + Done + Ferdig + + + + SearchLineEdit + + + Search + Søk + + + + SearchView + + + Welcome to <a href='%1'>%2</a>, + Velkomen til <a href='%1'>%2</a>, + + + + Get the full version + Kjøpfullversjonen + + + + Enter + "Enter", as in "type". The whole phrase says: "Enter a keyword to start watching videos" + Skriv + + + + a keyword + eit nøkkelord + + + + a channel + ein kanal + + + + to start watching videos. + for å å sjå videoar. + + + + Watch + Snurr film + + + + Recent keywords + Siste søkjeord + + + + Recent channels + Siste kanalar + + + + SidebarHeader + + + + &Back + &Tilbake + + + + Forward to %1 + Fram til %1 + + + + Back to %1 + Tilbake til %1 + + + + SidebarWidget + + + Refine Search + Forbetra søket + + + + Did you mean: %1 + Meinte du: %1 + + + + StandardFeedsView + + + Most Popular + Mest populære + + + + Most Shared + Mest delte + + + + Most Discussed + Mest diskuterte + + + + Top Rated + Høgast rangerte + + + + All Time Popular + Tidenes mest populære + + + + Video + + + Cannot get video stream for %1 + Kan ikkje henta videostraumen til %1 + + + + Network error: %1 for %2 + Feil på nettverket: %1 for %2 + + + + YTRegions + + + Algeria + Algerie + + + + Argentina + Argentina + + + + Australia + Australia + + + + Belgium + Belgia + + + + Brazil + Brasil + + + + Canada + Kanada + + + + Chile + Chile + + + + Colombia + Kolombia + + + + Czech Republic + Tsjekkia + + + + Egypt + Egypt + + + + France + Frankrike + + + + Germany + Tyskland + + + + Ghana + Ghana + + + + Greece + Hellas + + + + Hong Kong + Hong Kong + + + + Hungary + Ungarn + + + + India + India + + + + Indonesia + Indonesia + + + + Ireland + Irland + + + + Israel + Israel + + + + Italy + Italia + + + + Japan + Japan + + + + Jordan + Jordan + + + + Kenya + Kenya + + + + Malaysia + Malaysia + + + + Mexico + Mexico + + + + Morocco + Marocco + + + + Netherlands + Nederland + + + + New Zealand + Ny-Zealand + + + + Nigeria + Nigeria + + + + Peru + Peru + + + + Philippines + Filippinane + + + + Poland + Polen + + + + Russia + Russland + + + + Saudi Arabia + Saudi-Arabia + + + + Singapore + Singapore + + + + South Africa + Sør-Afrika + + + + South Korea + Sør-Korea + + + + Spain + Spania + + + + Sweden + Sverige + + + + Taiwan + Taiwan + + + + Tunisia + Tunisia + + + + Turkey + Tyrkia + + + + Uganda + Uganda + + + + United Arab Emirates + Sameinte Arabiske Emiratar + + + + United Kingdom + Storbritannia + + + + Yemen + Jemen + + + + Worldwide + Heile verda + + + \ No newline at end of file diff --git a/locale/pl.ts b/locale/pl.ts index 3ec5056..f46ca70 100644 --- a/locale/pl.ts +++ b/locale/pl.ts @@ -139,7 +139,7 @@ By %1 - + Przez %1 @@ -165,12 +165,12 @@ Mark all as watched - + Oznacz wszystkie jako obejrzane Show Updated - + Pokaż nowości @@ -180,7 +180,7 @@ Last Updated - + Ostatnio Dodane @@ -699,7 +699,7 @@ Watch videos related to the current one - + Oglądaj filmy podobne do tego @@ -835,7 +835,7 @@ Find Video &Parts - + Znajdź film &Parts @@ -1111,7 +1111,7 @@ Relevance - + Związane diff --git a/locale/ro.ts b/locale/ro.ts index d031261..8289600 100644 --- a/locale/ro.ts +++ b/locale/ro.ts @@ -106,7 +106,7 @@ The full version allows you to download videos longer than %1 minutes and to watch videos without interruptions. - + Versiunea integrală permite descărcarea videoclipurilor mai lungi de %1 minute și vizualizarea neîntreruptă a acestora. @@ -435,7 +435,7 @@ Find videos and channels by keyword - + Videoclipuri complete şi canale după cuvinte cheie diff --git a/locale/sv_SE.ts b/locale/sv_SE.ts index e721753..55fa3ff 100644 --- a/locale/sv_SE.ts +++ b/locale/sv_SE.ts @@ -644,7 +644,7 @@ &Subscribe to Channel - %Prenumerera på Kanalen + &Prenumerera på Kanalen @@ -1198,7 +1198,7 @@ High Definition - High Definition + Hög Upplösning diff --git a/locale/uk.ts b/locale/uk.ts index 405c5f7..68ea434 100644 --- a/locale/uk.ts +++ b/locale/uk.ts @@ -153,12 +153,12 @@ All Videos - Усі видивами + Усі видива Unwatched Videos - Непереглянуті видива + Не переглянуті видива @@ -206,12 +206,12 @@ All Videos - Усіма видивами + Усі видива Unwatched Videos - Не переглянутими видивами + Не переглянуті видива @@ -436,7 +436,7 @@ Find videos and channels by keyword - Знайти видва та канали за ключовими словами + Знайти видива та канали за ключовими словами @@ -524,12 +524,12 @@ Go to the YouTube video page and pause playback - Відкрити сторінку YouTube та призупинити відтворення відео + Відкрити сторінку YouTube та призупинити відтворення видива Copy the current video YouTube link to the clipboard - Скопіювати YouTube посилання поточного відео до буферу + Скопіювати YouTube посилання поточного видива до буферу @@ -630,7 +630,7 @@ Show details about video downloads - Показати деталі про завантажувані видива + Показати деталі про видива, що завантажуються @@ -650,7 +650,7 @@ Share the current video using %1 - Поділитися поточним відео за допомогою %1 + Поділитися поточним видивом за допомогою %1 diff --git a/locale/uk_UA.ts b/locale/uk_UA.ts index 257a289..eb5c0d2 100644 --- a/locale/uk_UA.ts +++ b/locale/uk_UA.ts @@ -5,7 +5,7 @@ There's life outside the browser! - За межами веб-переглядача також є життя! + За межами оглядача тенет також є життя! @@ -25,7 +25,7 @@ Please <a href='%1'>donate</a> to support the continued development of %2. - Будь ласка, <a href='%1'>внесіть пожертву,</a> щоб підтримати подальший розвиток %2. + Будь ласка, <a href='%1'>внесіть пожертву,</a> аби підтримати подальший розвиток %2. @@ -45,7 +45,7 @@ Translate %1 to your native language using %2 - Перекласти %1 вашою рідною мовою за допомогою %2 + Перекласти %1 Вашою рідною мовою за допомогою %2 @@ -78,7 +78,7 @@ Enter your License Details - Уведіть дані вашої ліцензії + Уведіть дані Вашої ліцензії @@ -107,17 +107,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. @@ -153,12 +153,12 @@ All Videos - Усі відео + Усі видива Unwatched Videos - Непереглянуті відео + Не переглянуті видива @@ -206,22 +206,22 @@ All Videos - Усіма відео + Усі видива Unwatched Videos - Не переглянутими відео + Не переглянуті видива There are no updated subscriptions at this time. - Наразі оновлень підписок немає. + Наразі оновлень підписок немає. You have no subscriptions. Use the star symbol to subscribe to channels. - У вас немає підписок. Використовуйте символ зірочки, щоб підписуватися на канали. + У Вас немає підписок. Використовуйте символ зірочки, аби підписуватися на канали. @@ -242,27 +242,27 @@ KB - Кбайт + КБ MB - Мбайт + МБ bytes/sec - байт/сек + байтів/сек KB/sec - Кбайт/сек + КБ/сек MB/sec - Мбайт/сек + МБ/сек @@ -277,7 +277,7 @@ %4 %5 remaining - до завершення %4 %5 + залишилося %4 %5 @@ -290,7 +290,7 @@ It can only download videos shorter than %1 minutes so you can test the download functionality. - З метою тестування ви можете завантажити відео тривалістю до %1 хв. + Із метою тестування, Ви можете завантажити видиво тривалістю до %1 хв. @@ -305,7 +305,7 @@ %1 downloaded in %2 - %1 завантажений у %2 + %1 завантажений до %2 @@ -338,12 +338,12 @@ Current downloads will still go in the previous location. - Поточні завантаження буде як і раніше збережено у попередньому місці. + Поточні завантаження буде, як і раніше, збережено у попередньому місці. Downloading to: %1 - Завантажується у %1 + Завантажується до %1 @@ -431,22 +431,22 @@ Search - Пошук + Шукати Find videos and channels by keyword - Знайти відео та канали за ключовими словами + Знайти видива та канали за ключовими словами Browse - Переглядач + Переглянути Browse videos by category - Огляд відео за катеґоріями + Оглянути видива за катеґоріями @@ -492,7 +492,7 @@ Skip to the next video - Перейти до наступного відео + Перейти до наступного видива @@ -509,12 +509,12 @@ &Full Screen - &На увесь екран + &Повноекранний режим Go full screen - Перейти у повноекранний режим + Перейти до повноекранного режиму @@ -524,22 +524,22 @@ Go to the YouTube video page and pause playback - Відкрити сторінку YouTube та призупинити відтворення відео + Відкрити сторінку YouTube та призупинити відтворення видива Copy the current video YouTube link to the clipboard - Скопіювати YouTube посилання поточного відео у буфер + Скопіювати YouTube посилання поточного видива до буферу Copy the current video stream URL to the clipboard - Скопіювати посилання поточного відео у буфер + Скопіювати посилання поточного видива до буферу Find other video parts hopefully in the right order - Знайти інші частини відео, сподіваюся, у правильному порядку + Знайти інші частини видива, сподіваюся, у правильному порядку @@ -549,7 +549,7 @@ Remove the selected videos from the playlist - Вилучити обрані відео з переліку + Вилучити обрані видива з переліку @@ -559,7 +559,7 @@ Move up the selected videos in the playlist - Перемістити обране відео вгору по переліку + Перемістити обране видиво догори у переліку @@ -569,7 +569,7 @@ Move down the selected videos in the playlist - Перемістити обране відео вниз по переліку + Перемістити обране видиво донизу в переліку @@ -579,17 +579,17 @@ &Quit - &Ви&йти + &Вийти Bye - На все добре + Бувайте &Website - &Сайт + &Веб-сайт @@ -614,7 +614,7 @@ Search - Пошук + Шукати @@ -625,22 +625,22 @@ &Downloads - Завантаження + &Завантаження Show details about video downloads - Показати деталі про завантажувані відео + Показати деталі про видива, що завантажуються &Download - Завантажити + &Завантажити Download the current video - Завантажити це відео + Завантажити це видиво @@ -650,7 +650,7 @@ Share the current video using %1 - Поділитися поточним відео за допомогою %1 + Поділитися поточним видивом за допомогою %1 @@ -670,12 +670,12 @@ &Float on Top - &Згори усіх вікон + &Згори всіх вікон &Stop After This Video - Зу&пинити після цього відео + Зу&пинити після цього видиво @@ -695,22 +695,22 @@ &Related Videos - Схо&же відео + Схо&жі видива Watch videos related to the current one - Дивитися відео, пов’язані з поточним + Дивитися видива, пов’язані з поточним Open in &Browser... - Відкрити у &браузері... + Відкрити в &оглядачі тенет... &Application - Пр&оґрама + &Застосунок @@ -730,7 +730,7 @@ &Video - &Відео + &Видиво @@ -745,7 +745,7 @@ &Help - До&відка + &Довідка @@ -831,12 +831,12 @@ Copy the Video Stream &URL - Копіювати посилання на в&ідео потік + Копіювати посилання на ви&диво потік Find Video &Parts - Знайти &фраґменти відео + Знайти &фраґменти видива @@ -846,17 +846,17 @@ Make a &Donation - Поже&ртвувати + Підтрима&йте проєкт &Manually Start Playing - &Почати відтворення вручну + &Почати відтворення самотужки Manually start playing videos - Почати відтворення відео вручну + Почати відтворення видива самотужки @@ -866,7 +866,7 @@ &Play - Гр&ати + &Грати @@ -896,7 +896,7 @@ Maximum video definition set to %1 - Режим чіткості відео %1 + Режим чіткості видива %1 @@ -914,12 +914,12 @@ You can now paste the YouTube link into another application - Ви можете використовувати YouTube посилання на відео у зовнішній програмі + Тепер Ви можете використовувати YouTube посилання на видиво у зовнішній проґрамі You can now paste the video stream URL into another application - Ви можете використовувати посилання на відео у зовнішній проґрамі + Тепер Ви можете використовувати посилання на видиво у зовнішній проґрамі @@ -934,7 +934,7 @@ It allows you to test the application and see if it works for you. - Ви маєте змогу протестувати програму та перевірити працездатність. + Ви маєте змогу протестувати проґраму та перевірити працездатність. @@ -967,7 +967,7 @@ Unsubscribe from %1 - Відмовитися від підписки %1 + Відписатися %1 @@ -1071,7 +1071,7 @@ Open parent folder - Перейти до теки з відео + Перейти до теки з видивами @@ -1189,7 +1189,7 @@ Longer than 20 minutes - Довше ніж 20 хвилин + Довші, аніж 20 хвилин @@ -1306,7 +1306,7 @@ Did you mean: %1 - Можливо, ви мали на увазі: %1 + Можливо, Ви мали на увазі: %1 @@ -1342,7 +1342,7 @@ Cannot get video stream for %1 - Не вдалося отримати відео потік для %1 + Не вдалося отримати видивопотік для %1 @@ -1370,7 +1370,7 @@ Belgium - Бельгія + Бельґія @@ -1420,7 +1420,7 @@ Greece - Греція + Ґреція @@ -1520,7 +1520,7 @@ Russia - Росія + Російська Федерація diff --git a/minitube.desktop b/minitube.desktop index a3fe782..e453066 100644 --- a/minitube.desktop +++ b/minitube.desktop @@ -18,7 +18,7 @@ Type=Application Icon=minitube Categories=AudioVideo;Player;Qt; StartupNotify=false -Actions=TogglePlaying;Next;Previous; +Actions=TogglePlaying;Next;Previous;StopAfterThis [Desktop Action TogglePlaying] Name=Play/Pause @@ -31,3 +31,7 @@ Exec=minitube --next [Desktop Action Previous] Name=Previous Exec=minitube --previous + +[Desktop Action StopAfterThis] +Name=Stop After This Video +Exec=minitube --stop-after-this diff --git a/minitube.pro b/minitube.pro index 942926e..0786842 100644 --- a/minitube.pro +++ b/minitube.pro @@ -1,6 +1,6 @@ CONFIG += release TEMPLATE = app -VERSION = 2.1.6 +VERSION = 2.2 DEFINES += APP_VERSION="$$VERSION" APP_NAME = Minitube diff --git a/src/channelaggregator.h b/src/channelaggregator.h index 966fa70..1ef224f 100644 --- a/src/channelaggregator.h +++ b/src/channelaggregator.h @@ -41,6 +41,7 @@ public slots: void start(); void stop(); void run(); + void updateUnwatchedCount(); signals: void channelChanged(YTUser*); @@ -54,7 +55,6 @@ private: YTUser* getChannelToCheck(); void processNextChannel(); void addVideo(Video* video); - void updateUnwatchedCount(); void finish(); uint checkInterval; diff --git a/src/channelmodel.cpp b/src/channelmodel.cpp index 2aa6c43..fb8cbdb 100644 --- a/src/channelmodel.cpp +++ b/src/channelmodel.cpp @@ -56,6 +56,8 @@ QVariant ChannelModel::data(const QModelIndex &index, int role) const { } YTUser* ChannelModel::userForIndex(const QModelIndex &index) const { + const int row = index.row(); + if (row < channelOffset) return 0; return channels.at(index.row() - channelOffset); } @@ -84,6 +86,8 @@ void ChannelModel::setQuery(const QString &query, const QSqlDatabase &db) { while (q.next()) { YTUser *user = YTUser::forId(q.value(0).toString()); connect(user, SIGNAL(thumbnailLoaded()), SLOT(updateSender()), Qt::UniqueConnection); + connect(user, SIGNAL(notifyCountChanged()), SLOT(updateSender()), Qt::UniqueConnection); + connect(user, SIGNAL(destroyed(QObject *)), SLOT(removeChannel(QObject *)), Qt::UniqueConnection); channels << user; } @@ -116,6 +120,20 @@ void ChannelModel::updateUnwatched() { emit dataChanged(i, i); } +void ChannelModel::removeChannel(QObject *obj) { + YTUser *user = static_cast(obj); + qWarning() << "user is" << user << obj << obj->metaObject()->className(); + if (!user) return; + + int row = channels.indexOf(user); + if (row == -1) return; + + int position = row + channelOffset; + beginRemoveRows(QModelIndex(), position, position+1); + channels.removeAt(row); + endRemoveRows(); +} + void ChannelModel::setHoveredRow(int row) { int oldRow = hoveredRow; hoveredRow = row; diff --git a/src/channelmodel.h b/src/channelmodel.h index 3d89d4d..6ec5cf1 100644 --- a/src/channelmodel.h +++ b/src/channelmodel.h @@ -59,6 +59,7 @@ public slots: void updateSender(); void updateChannel(YTUser *user); void updateUnwatched(); + void removeChannel(QObject *obj); private: QList channels; diff --git a/src/channelview.cpp b/src/channelview.cpp index eba0591..f5cb3ac 100644 --- a/src/channelview.cpp +++ b/src/channelview.cpp @@ -95,22 +95,6 @@ ChannelView::ChannelView(QWidget *parent) : QListView(parent), 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); @@ -163,6 +147,22 @@ void ChannelView::setupActions() { widgetAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_O)); statusActions << widgetAction; + 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; + foreach (QAction *action, statusActions) { window()->addAction(action); Utils::setupAction(action); @@ -182,6 +182,13 @@ void ChannelView::disappear() { MainWindow::instance()->showActionInStatusBar(action, false); } +void ChannelView::mousePressEvent(QMouseEvent *event) { + if (event->button() == Qt::RightButton) + showContextMenu(event->pos()); + else + QListView::mousePressEvent(event); +} + void ChannelView::mouseMoveEvent(QMouseEvent *event) { QListView::mouseMoveEvent(event); const QModelIndex index = indexAt(event->pos()); @@ -221,6 +228,38 @@ void ChannelView::itemActivated(const QModelIndex &index) { } } +void ChannelView::showContextMenu(const QPoint &point) { + const QModelIndex index = indexAt(point); + if (!index.isValid()) return; + + YTUser *user = channelsModel->userForIndex(index); + if (!user) return; + + unsetCursor(); + + QMenu menu; + + if (user->getNotifyCount() > 0) { + QAction *markAsWatchedAction = menu.addAction(tr("Mark as Watched"), user, SLOT(updateWatched())); + connect(markAsWatchedAction, SIGNAL(triggered()), + ChannelAggregator::instance(), SLOT(updateUnwatchedCount())); + menu.addSeparator(); + } + + /* + // TODO + QAction *notificationsAction = menu.addAction(tr("Receive Notifications"), user, SLOT(unsubscribe())); + notificationsAction->setCheckable(true); + notificationsAction->setChecked(true); + */ + + QAction *unsubscribeAction = menu.addAction(tr("Unsubscribe"), user, SLOT(unsubscribe())); + connect(unsubscribeAction, SIGNAL(triggered()), + ChannelAggregator::instance(), SLOT(updateUnwatchedCount())); + + menu.exec(mapToGlobal(point)); +} + void ChannelView::paintEvent(QPaintEvent *event) { if (model()->rowCount() < 3) { QString msg; diff --git a/src/channelview.h b/src/channelview.h index a5013c9..f8fa206 100644 --- a/src/channelview.h +++ b/src/channelview.h @@ -42,6 +42,7 @@ public slots: void disappear(); protected: + void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void leaveEvent(QEvent *event); void paintEvent(QPaintEvent *event); @@ -58,6 +59,7 @@ private: private slots: void itemEntered(const QModelIndex &index); void itemActivated(const QModelIndex &index); + void showContextMenu(const QPoint &point); void toggleShowUpdated(bool enable); void setSortBy(SortBy sortBy); void setSortByName() { setSortBy(SortByName); } @@ -67,9 +69,9 @@ private slots: void setSortByMostWatched() { setSortBy(SortByMostWatched); } void markAllAsWatched(); void unwatchedCountChanged(int count); + void updateQuery(bool transition = false); private: - void updateQuery(bool transition = false); void setupActions(); ChannelModel *channelsModel; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 3392ff2..df64261 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1484,6 +1484,8 @@ void MainWindow::dragEnterEvent(QDragEnterEvent *event) { } void MainWindow::dropEvent(QDropEvent *event) { + if (!toolbarSearch->isEnabled()) return; + QList urls = event->mimeData()->urls(); if (urls.isEmpty()) return; @@ -1582,6 +1584,8 @@ void MainWindow::messageReceived(const QString &message) { if (skipAct->isEnabled()) skipAct->trigger(); } else if (message == QLatin1String("--previous")) { if (skipBackwardAct->isEnabled()) skipBackwardAct->trigger(); + } else if (message == QLatin1String("--stop-after-this")) { + The::globalActions()->value("stopafterthis")->toggle(); } else if (message.startsWith("--")) { MainWindow::printHelp(); } else if (!message.isEmpty()) { @@ -1609,6 +1613,8 @@ void MainWindow::printHelp() { msg += "Skip to the next video.\n"; msg += " --previous\t\t"; msg += "Go back to the previous video.\n"; + msg += " --stop-after-this\t"; + msg += "Stop playback at the end of the video.\n"; std::cout << msg.toLocal8Bit().data(); } diff --git a/src/playlistitemdelegate.cpp b/src/playlistitemdelegate.cpp index 295eba8..f0de4b4 100644 --- a/src/playlistitemdelegate.cpp +++ b/src/playlistitemdelegate.cpp @@ -146,9 +146,9 @@ void PlaylistItemDelegate::paintBody( QPainter* painter, // text color if (isSelected) - painter->setPen(QPen(option.palette.brush(QPalette::HighlightedText), 0)); + painter->setPen(QPen(option.palette.highlightedText(), 0)); else - painter->setPen(QPen(option.palette.brush(QPalette::Text), 0)); + painter->setPen(QPen(option.palette.text(), 0)); // title QString videoTitle = video->title(); @@ -190,7 +190,7 @@ void PlaylistItemDelegate::paintBody( QPainter* painter, if (authorHovered) painter->setPen(QPen(option.palette.brush(QPalette::Highlight), 0)); else - painter->setPen(QPen(option.palette.brush(QPalette::Mid), 0)); + painter->setOpacity(.5); } QString authorString = video->author(); textLoc.setX(textLoc.x() + stringSize.width() + PADDING); diff --git a/src/playlistview.cpp b/src/playlistview.cpp index 41b54d3..83c812e 100644 --- a/src/playlistview.cpp +++ b/src/playlistview.cpp @@ -60,8 +60,6 @@ void PlaylistView::leaveEvent(QEvent * /* event */) { } void PlaylistView::mouseMoveEvent(QMouseEvent *event) { - QListView::mouseMoveEvent(event); - if (isHoveringThumbnail(event)) { setCursor(Qt::PointingHandCursor); } else if (isShowMoreItem(indexAt(event->pos()))) { @@ -73,17 +71,16 @@ void PlaylistView::mouseMoveEvent(QMouseEvent *event) { QMetaObject::invokeMethod(model(), "exitAuthorHover"); unsetCursor(); } + QListView::mouseMoveEvent(event); } void PlaylistView::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { - if (isHoveringThumbnail(event)) { - event->accept(); - } else if (isHoveringAuthor(event)) { + if (isHoveringAuthor(event)) { QMetaObject::invokeMethod(model(), "enterAuthorPressed"); - event->ignore(); - } else QListView::mousePressEvent(event); - } else QListView::mousePressEvent(event); + } + } + QListView::mousePressEvent(event); } void PlaylistView::mouseReleaseEvent(QMouseEvent *event) { @@ -100,10 +97,8 @@ void PlaylistView::mouseReleaseEvent(QMouseEvent *event) { listModel->searchMore(); unsetCursor(); } - - } else { - QListView::mousePressEvent(event); } + QListView::mouseReleaseEvent(event); } bool PlaylistView::isHoveringAuthor(QMouseEvent *event) { @@ -141,5 +136,7 @@ bool PlaylistView::isShowMoreItem(const QModelIndex &index) { void PlaylistView::paintEvent(QPaintEvent *event) { QListView::paintEvent(event); +#ifndef Q_WS_X11 PainterUtils::topShadow(viewport()); +#endif } diff --git a/src/searchview.cpp b/src/searchview.cpp index 6cbaa1d..77aa0df 100644 --- a/src/searchview.cpp +++ b/src/searchview.cpp @@ -386,7 +386,7 @@ void SearchView::paintEvent(QPaintEvent *event) { QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &o, &p, this); #endif - // PainterUtils::topShadow(this); + PainterUtils::topShadow(this); } void SearchView::searchTypeChanged(int index) { diff --git a/src/spacer.cpp b/src/spacer.cpp index 07a9c55..297ec93 100644 --- a/src/spacer.cpp +++ b/src/spacer.cpp @@ -20,7 +20,10 @@ $END_LICENSE */ #include "spacer.h" -Spacer::Spacer(QWidget *parent) : QWidget(parent) { } +Spacer::Spacer(QWidget *parent) : QWidget(parent) { + setAttribute(Qt::WA_TransparentForMouseEvents); + setEnabled(false); +} QSize Spacer::sizeHint() const { return QSize(10, 1); diff --git a/src/video.cpp b/src/video.cpp index 7a37c08..ce35110 100644 --- a/src/video.cpp +++ b/src/video.cpp @@ -424,11 +424,37 @@ void Video::captureFunction(const QString &name, const QString &js) { captureFunction(funcName, js); pos += invokedFuncRe.matchedLength(); } + + // capture referenced objects + QRegExp objRe("[\\s=;\\(]([" + jsNameChars + "]+)\\.[" + jsNameChars + "]+"); + pos = name.length() + 9; + while ((pos = objRe.indexIn(func, pos)) != -1) { + QString objName = objRe.cap(1); + if (!sigObjects.contains(objName)) + captureObject(objName, js); + pos += objRe.matchedLength(); + } +} + +void Video::captureObject(const QString &name, const QString &js) { + QRegExp re("var\\s+" + QRegExp::escape(name) + "\\s*=\\s*\\{.+\\}\\s*;"); + re.setMinimal(true); + if (re.indexIn(js) == -1) { + qWarning() << "Cannot capture object" << name; + return; + } + QString obj = re.cap(0); + sigObjects.insert(name, obj); } QString Video::decryptSignature(const QString &s) { if (sigFuncName.isEmpty()) return QString(); QScriptEngine engine; + foreach (QString f, sigObjects.values()) { + QScriptValue value = engine.evaluate(f); + if (value.isError()) + qWarning() << "Error in" << f << value.toString(); + } foreach (QString f, sigFunctions.values()) { QScriptValue value = engine.evaluate(f); if (value.isError()) diff --git a/src/video.h b/src/video.h index 7220a4d..dc7dd60 100644 --- a/src/video.h +++ b/src/video.h @@ -103,6 +103,7 @@ private: void foundVideoUrl(QString videoToken, int definitionCode); void parseFmtUrlMap(const QString &fmtUrlMap, bool fromWebPage = false); void captureFunction(const QString &name, const QString &js); + void captureObject(const QString &name, const QString &js); QString decryptSignature(const QString &s); QString m_title; @@ -130,9 +131,10 @@ private: bool loadingStreamUrl; bool loadingThumbnail; - QHash sigFunctions; - QString sigFuncName; QString fmtUrlMap; + QString sigFuncName; + QHash sigFunctions; + QHash sigObjects; }; // This is required in order to use QPointer