diff --git a/AUTHORS b/AUTHORS index 58ad73d..5d77baa 100644 --- a/AUTHORS +++ b/AUTHORS @@ -6,6 +6,7 @@ Authors ordered by first contribution: Translations: Chinese (simplified): archblue +Chinese (traditional): hugoalh Dutch: Heimen Stoffels French: Le Sharkoïste, https://hosted.weblate.org/projects/tartube/language-names/fr/ diff --git a/CHANGES b/CHANGES index 1741315..e5ca424 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,49 @@ +v2.5.040 (31 Jul 2024) +------------------------------------------------------------------------------- + +MAJOR FIXES +- Fixed rare crashes caused by the system tray icon (Git #577) +- Fixed failure to add videos/channels/playlists to the Progress List (the + top half of the Progress tab) in certain circumstances (Git #651) +- In the Classic Mode tab, livestreams would not download when the 'is a + livestream' button was selected, but they downloaded just fine when it + wasn't selected. Fixed (Git #643) + +MINOR FIXES +- Fixed incorrect sorting of videos whose names begin/end with whitespace + characters or quotes (Git #611) +- In the preferences window, Downloaders > Forks tab, fixed the broken button + 'When using other downloaders, filter out youtube-dl options' (Git #614) +- Fixed inability to re-download videos when the youtube-dl archive file is + enabled (Git #613, #623) +- In the Classic Mode tab, the 'Clear downloaded' button didn't work for any + videos which were not downloaded because of the youtube-dl archive file, + when use of that file was enabled. Fixed (Git #621) +- In the Custom Download Settings window, the spinbutton to set the maximum + delay did not work. Fixed it (Reddit) +- When using the 'strict' installers, it was not possible to set the path to + the youtube-dl executable due to more broken buttons. Fixed (Git #633) +- Fixed various python errors and warnings generated only by the most recent + versions of Python +- In the setup wizard, removed the FFmpeg installation page for users who + should not have been able to see it +- While downloading Odysee videos, "Pre-processing" is seen in the Progress tab + both before AND after the actual video download. Fixed it +- When DEBUG_FUNC flags are enabled (by editing the source code), tweaked the + code so that text is not constantly sent to STDOUT while Tartube is idle +- When changing Tartube's locale in the preferences window, the message + 'The new setting will be applied when Tartube restarts" appears in the + wrong place, messing up the formatting. Fixed + +MINOR NEW FEATURES +- Added (traditional) Chinese translation. Thanks to hugoalh +- In the Video Index (the left-hand column in the Videos tab), you can now + disable dialogue windows when moving videos/channels/playlists/folders. + Click Edit > System preferences > Windows > Dialogues, and deselect the + 'Prompt the user..." buttons (Git #624) +- Linux users can now use both pip3 or pipx to install or update youtube-dl + and other components + v2.5.0 (3 Jan 2024) ------------------------------------------------------------------------------- diff --git a/README.rst b/README.rst index 8aaa7c3..8b5fa61 100644 --- a/README.rst +++ b/README.rst @@ -44,16 +44,16 @@ Problems can be reported at `our GitHub page `__): -- `MS Windows (64-bit) installer `__, `MS Windows (64-bit) and FFmpeg installer `__ and `portable edition `__ from Sourceforge +- `MS Windows (64-bit) installer `__, `MS Windows (64-bit) and FFmpeg installer `__ and `portable edition `__ from Sourceforge - Tartube is no longer supported on older versions of MS Windows - see `7.24 Doesn't work on 32-bit Windows / Windows 7 / Windows 8`_ -- `DEB package (for Debian-based distros, e.g. Ubuntu, Linux Mint) `__ from Sourceforge -- `RPM package (for RHEL-based distros, e.g. Fedora) `__ from Sourceforge +- `DEB package (for Debian-based distros, e.g. Ubuntu, Linux Mint) `__ from Sourceforge +- `RPM package (for RHEL-based distros, e.g. Fedora) `__ from Sourceforge Official 'Strict' packages: @@ -70,7 +70,7 @@ Semi-official packages (Linux): Source code: -- `Source code `__ from Sourceforge +- `Source code `__ from Sourceforge - `Source code `__ and `support `__ from GitHub - In case this Github repository is taken down, there is an official backup `here `__ diff --git a/VERSION b/VERSION index fd0b64f..de77f00 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.5.028 +2.5.040 diff --git a/icons/locale/flag_zh_Hant.png b/icons/locale/flag_zh_Hant.png new file mode 100644 index 0000000..59cc2a0 Binary files /dev/null and b/icons/locale/flag_zh_Hant.png differ diff --git a/locale/zh_Hant/LC_MESSAGES/base.mo b/locale/zh_Hant/LC_MESSAGES/base.mo new file mode 100644 index 0000000..5d5ca12 Binary files /dev/null and b/locale/zh_Hant/LC_MESSAGES/base.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/base.po b/locale/zh_Hant/LC_MESSAGES/base.po new file mode 100644 index 0000000..ae1928a --- /dev/null +++ b/locale/zh_Hant/LC_MESSAGES/base.po @@ -0,0 +1,11486 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-31 14:10+0100\n" +"PO-Revision-Date: 2024-07-25 06:09+0000\n" +"Last-Translator: hugoalh \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: .././mainapp.py:317 +msgid "Tiny" +msgstr "微小" + +#: .././mainapp.py:318 +msgid "Small" +msgstr "小" + +#: .././mainapp.py:319 .././config.py:7201 +msgid "Medium" +msgstr "中" + +#: .././mainapp.py:320 +msgid "Large" +msgstr "大" + +#: .././mainapp.py:321 +msgid "Enormous" +msgstr "巨大" + +#: .././mainapp.py:1116 +msgid "" +"Failed to convert a thumbnail from .webp to .jpg. No more conversions will " +"be attempted until you install FFmpeg on your system, or (if FFmpeg is " +"already installed) you set the correct FFmpeg path. To attempt more " +"conversions, restart Tartube. To stop these messages, disable thumbnail " +"conversions" +msgstr "" +"無法將縮圖從 .webp 轉換為 .jpg。在你的系統上安裝 FFmpeg 或(如果已安裝 " +"FFmpeg)在你設定正確的 FFmpeg 路徑之前,不會再嘗試進行任何轉換。若要嘗試更多" +"轉換,重新啟動 Tartube。若要停止這些訊息,停用縮圖轉換" + +#: .././mainapp.py:2413 +msgid "" +"TRANSLATOR'S NOTE: Videos in the Videos tab can be displayed in one of " +"several formats" +msgstr "" + +#: .././mainapp.py:2420 +msgid "_Basic list" +msgstr "" + +#: .././mainapp.py:2425 +msgid "Basic list with _container names" +msgstr "" + +#: .././mainapp.py:2430 +msgid "_Thumbnails" +msgstr "" + +#: .././mainapp.py:2435 +msgid "Thumbnails and _extra labels" +msgstr "" + +#: .././mainapp.py:2440 +msgid "T_humbnails and container names" +msgstr "" + +#: .././mainapp.py:2445 +msgid "Th_umbnails, container names and extra labels" +msgstr "" + +#: .././mainapp.py:2450 +msgid "_Grid" +msgstr "" + +#: .././mainapp.py:2455 +msgid "G_rid with extra labels" +msgstr "" + +#: .././mainapp.py:3695 +msgid "" +"Tartube can't create the folder in which its configuration file is saved" +msgstr "" + +#. Load/save has been disabled. Show the error message in a dialogue +#. window, then shut down +#: .././mainapp.py:3742 +msgid "Tartube failed to start because:" +msgstr "" + +#: .././mainapp.py:3750 +msgid "If you don't know how to resolve this error, please contact the authors" +msgstr "" + +#: .././mainapp.py:3983 +msgid "Because of an error, file load/save has been disabled" +msgstr "" + +#: .././mainapp.py:3992 +msgid "Because of the error, file load/save has been disabled" +msgstr "" + +#: .././mainapp.py:4097 +msgid "" +"TRANSLATOR'S NOTE: In Tartube, there is a small set of'operations', each " +"with a unique name. Most operations use a separate Python file. Two or more " +"operations never happen simultaneously. You can choose any name you like for " +"each type of operation; for example, you don't need to translate the Process " +"Operation literally" +msgstr "" + +#: .././mainapp.py:4105 +msgid "" +"TRANSLATOR'S NOTE: Download operations can download videos or fetch a list " +"of downloadable videos (usually called 'checking' the videos)" +msgstr "" + +#: .././mainapp.py:4110 +msgid "TRANSLATOR'S NOTE: Update operations update youtube-dl, FFmpeg, etc" +msgstr "" + +#: .././mainapp.py:4114 +msgid "" +"TRANSLATOR'S NOTE: Refresh operations examine the files in Tartube's data " +"folder, and update the database accordingly" +msgstr "" + +#: .././mainapp.py:4119 +msgid "" +"TRANSLATOR'S NOTE: Info operations fetch a list of available formats/" +"subtitles for a video" +msgstr "" + +#: .././mainapp.py:4123 +msgid "" +"TRANSLATOR'S NOTE: Tidy operations remove or convert files in Tartube's data " +"folder" +msgstr "" + +#: .././mainapp.py:4127 +msgid "" +"TRANSLATOR'S NOTE: Process operations convert videos using FFmpeg or AVConv" +msgstr "" + +#: .././mainapp.py:4132 +msgid "There is a download operation in progress." +msgstr "" + +#: .././mainapp.py:4134 +msgid "There is an update operation in progress." +msgstr "" + +#: .././mainapp.py:4136 +msgid "There is a refresh operation in progress." +msgstr "" + +#: .././mainapp.py:4138 +msgid "There is an info operation in progress." +msgstr "" + +#: .././mainapp.py:4140 +msgid "There is a tidy operation in progress." +msgstr "" + +#: .././mainapp.py:4142 +msgid "There is a process operation in progress." +msgstr "" + +#: .././mainapp.py:4147 +msgid "Are you sure you want to quit Tartube?" +msgstr "" + +#: .././mainapp.py:4430 +msgid "Failed to load the Tartube config file (failed sanity check)" +msgstr "" + +#: .././mainapp.py:4453 +msgid "Failed to load the Tartube config file (file is locked)" +msgstr "" + +#: .././mainapp.py:4483 +msgid "Failed to load the Tartube config file (JSON load failure)" +msgstr "" + +#: .././mainapp.py:4501 +msgid "Failed to load the Tartube config file (file is invalid)" +msgstr "" + +#: .././mainapp.py:4519 +msgid "" +"Failed to load the Tartube config file (file cannot be read by this version " +"of Tartube; please install the most recent version)" +msgstr "" + +#: .././mainapp.py:4535 +msgid "Failed to load the Tartube config file (missing file type)" +msgstr "" + +#: .././mainapp.py:5874 +msgid "Failed to save the Tartube config file (failed sanity check)" +msgstr "" + +#: .././mainapp.py:6346 +msgid "Failed to save the Tartube config file (file is locked)" +msgstr "" + +#: .././mainapp.py:6348 .././mainapp.py:8482 .././mainapp.py:8545 +#: .././mainapp.py:8551 +msgid "File load/save has been disabled" +msgstr "" + +#: .././mainapp.py:6367 +msgid "Failed to save the Tartube config file (file already in use)" +msgstr "" + +#: .././mainapp.py:6386 +msgid "Failed to save the Tartube config file" +msgstr "" + +#: .././mainapp.py:6502 .././mainapp.py:6517 .././mainapp.py:6550 +msgid "Failed to load the Tartube database file" +msgstr "" + +#: .././mainapp.py:6553 +msgid "" +"If this message is unexpected, the database file may be corrupt. Try " +"replacing it with one of the files in the '.backups' folder" +msgstr "" + +#: .././mainapp.py:6571 +msgid "The Tartube database file is invalid" +msgstr "" + +#: .././mainapp.py:6589 +msgid "" +"Database file can't be read by this version of Tartube (please install the " +"most recent version)" +msgstr "" + +#: .././mainapp.py:7001 +msgid "Tartube is applying an essential database update" +msgstr "" + +#: .././mainapp.py:7003 +msgid "This might take a few minutes, so please be patient" +msgstr "" + +#: .././mainapp.py:8055 +msgid "General (default) download options" +msgstr "" + +#: .././mainapp.py:8061 +msgid "Download options for the Classic Mode tab" +msgstr "" + +#: .././mainapp.py:8476 .././mainapp.py:8541 .././mainapp.py:8550 +msgid "Failed to save the Tartube database file" +msgstr "" + +#: .././mainapp.py:8479 +msgid "(Could not make a backup copy of the existing file)" +msgstr "" + +#: .././mainapp.py:8521 +msgid "Failed to save the Tartube database file (file already in use)" +msgstr "" + +#: .././mainapp.py:8543 +msgid "A backup of the previous file can be found at:" +msgstr "" + +#: .././mainapp.py:8727 .././mainapp.py:8737 +msgid "Database file created" +msgstr "" + +#: .././mainapp.py:9144 +msgid "Tartube's database can't be checked while an operation is in progress" +msgstr "" + +#: .././mainapp.py:9398 +msgid "Database check complete, no inconsistencies found" +msgstr "" + +#: .././mainapp.py:9433 +msgid "Database check complete, problems found:" +msgstr "" + +#: .././mainapp.py:9437 +msgid "" +"Do you want to repair these problems? (The database will be fixed, but no " +"files will be deleted)" +msgstr "" + +#: .././mainapp.py:9653 +msgid "Database inconsistencies repaired" +msgstr "" + +#: .././mainapp.py:11124 .././config.py:29944 +msgid "Please select Tartube's data folder" +msgstr "" + +#: .././mainapp.py:11599 +msgid "" +"A download operation cannot start if one or more configuration windows are " +"still open" +msgstr "" + +#: .././mainapp.py:11623 .././mainapp.py:11648 +#, python-brace-format +msgid "You only have {0} / {1} Gb remaining on your device" +msgstr "" + +#: .././mainapp.py:11651 .././mainapp.py:18421 .././mainapp.py:18545 +#: .././mainapp.py:18735 .././mainwin.py:24143 +msgid "Are you sure you want to continue?" +msgstr "" + +#: .././mainapp.py:11746 +msgid "" +"1. Copy URLs into the box at the top\n" +"2. Select a destination and a format\n" +"3. Click 'Add URLs'\n" +"4. Click 'Download all'" +msgstr "" + +#: .././mainapp.py:11754 +msgid "There is nothing to check!" +msgstr "" + +#: .././mainapp.py:11758 +msgid "There is nothing to download!" +msgstr "" + +#: .././mainapp.py:12062 +msgid "Download operation complete" +msgstr "" + +#: .././mainapp.py:12064 +msgid "Download operation halted" +msgstr "" + +#: .././mainapp.py:12068 +msgid "Videos downloaded:" +msgstr "已下載影片:" + +#: .././mainapp.py:12069 .././config.py:31251 .././config.py:31313 +msgid "Videos checked:" +msgstr "" + +#: .././mainapp.py:12076 +msgid "Clips downloaded:" +msgstr "" + +#: .././mainapp.py:12079 +msgid "Video slices removed:" +msgstr "" + +#: .././mainapp.py:12084 +msgid "Total download:" +msgstr "" + +#: .././mainapp.py:12089 .././mainapp.py:12809 .././mainapp.py:13342 +#: .././mainapp.py:13754 +msgid "Time taken:" +msgstr "" + +#: .././mainapp.py:12288 +msgid "" +"An update operation cannot start if one or more configuration windows are " +"still open" +msgstr "" + +#: .././mainapp.py:12500 +msgid "Installation failed" +msgstr "" + +#: .././mainapp.py:12502 +msgid "Installation complete" +msgstr "" + +#: .././mainapp.py:12506 +msgid "Update operation failed" +msgstr "" + +#: .././mainapp.py:12508 +msgid "Update operation halted" +msgstr "" + +#: .././mainapp.py:12510 +msgid "Update operation complete" +msgstr "" + +#: .././mainapp.py:12512 +msgid "version:" +msgstr "版本:" + +#: .././mainapp.py:12516 +msgid "(unknown)" +msgstr "(未知)" + +#: .././mainapp.py:12621 +msgid "" +"A refresh operation cannot start if one or more configuration windows are " +"still open" +msgstr "" + +#: .././mainapp.py:12634 +msgid "" +"During a refresh operation, Tartube analyses its data folder, looking for " +"videos that haven't yet been added to its database" +msgstr "" + +#: .././mainapp.py:12638 +msgid "" +"You only need to perform a refresh operation if you have manually copied " +"videos into Tartube's data folder" +msgstr "" + +#: .././mainapp.py:12645 +msgid "" +"Before starting a refresh operation, you should click the 'Check all' button " +"in the main window" +msgstr "" + +#: .././mainapp.py:12652 +msgid "" +"Before starting a refresh operation, you should right-click the channel and " +"select 'Check channel'" +msgstr "" + +#: .././mainapp.py:12659 +msgid "" +"Before starting a refresh operation, you should right-click the playlist and " +"select 'Check playlist'" +msgstr "" + +#: .././mainapp.py:12666 +msgid "" +"Before starting a refresh operation, you should right-click the folder and " +"select 'Check folder'" +msgstr "" + +#: .././mainapp.py:12671 +msgid "Are you sure you want to proceed with the refresh operation?" +msgstr "" + +#: .././mainapp.py:12804 +msgid "Refresh operation complete" +msgstr "" + +#: .././mainapp.py:12806 +msgid "Refresh operation halted" +msgstr "" + +#: .././mainapp.py:12923 +msgid "" +"An info operation cannot start if one or more configuration windows are " +"still open" +msgstr "" + +#: .././mainapp.py:13054 +msgid "Operation failed" +msgstr "" + +#: .././mainapp.py:13056 .././mainwin.py:34908 .././downloads.py:547 +msgid "Operation complete" +msgstr "" + +#: .././mainapp.py:13058 +msgid "Click the Output tab to see the results" +msgstr "" + +#: .././mainapp.py:13071 +msgid "A new release is available!" +msgstr "" + +#: .././mainapp.py:13073 +msgid "Your installation is up to date!" +msgstr "" + +#: .././mainapp.py:13075 +msgid "Installed version:" +msgstr "" + +#: .././mainapp.py:13080 +msgid "Stable release:" +msgstr "" + +#: .././mainapp.py:13085 +msgid "Stable release: not found" +msgstr "" + +#: .././mainapp.py:13088 +msgid "Development release:" +msgstr "" + +#: .././mainapp.py:13090 +msgid "Development release: not found" +msgstr "" + +#: .././mainapp.py:13229 +msgid "" +"A tidy operation cannot start if one or more configuration windows are still " +"open" +msgstr "" + +#: .././mainapp.py:13337 +msgid "Tidy operation complete" +msgstr "" + +#: .././mainapp.py:13339 +msgid "Tidy operation halted" +msgstr "" + +#: .././mainapp.py:13485 .././mainwin.py:24887 .././config.py:14948 +msgid "Livestream has started" +msgstr "" + +#: .././mainapp.py:13743 +msgid "Process operation complete" +msgstr "" + +#: .././mainapp.py:13745 +msgid "Process operation halted" +msgstr "" + +#: .././mainapp.py:13749 +msgid "Files processed:" +msgstr "" + +#: .././mainapp.py:13750 +msgid "Errors:" +msgstr "錯誤:" + +#: .././mainapp.py:15152 .././mainapp.py:15380 +msgid "" +"Cannot move the channel/playlist/folder because a container with the same " +"name already exists" +msgstr "" + +#: .././mainapp.py:15174 .././mainapp.py:15401 +msgid "Cannot move anything to:" +msgstr "" + +#: .././mainapp.py:15176 .././mainapp.py:15403 +msgid "" +"because a file or folder with the same name already exists (although " +"Tartube's database doesn't know anything about it)" +msgstr "" + +#: .././mainapp.py:15180 +msgid "" +"You probably created that file/folder accidentally, in which case you should " +"delete it manually before trying again" +msgstr "" + +#: .././mainapp.py:15256 .././mainapp.py:15486 +#, python-brace-format +msgid "Could not move '{0}' (filesystem error)" +msgstr "" + +#: .././mainapp.py:15328 +msgid "Channels, playlists and folders can only be dragged into a folder" +msgstr "" + +#: .././mainapp.py:15341 +#, python-brace-format +msgid "The fixed folder '{0}' cannot be moved (but it can still be hidden)" +msgstr "" + +#: .././mainapp.py:15354 +#, python-brace-format +msgid "The folder '{0}' can only contain videos" +msgstr "" + +#: .././mainapp.py:15366 +#, python-brace-format +msgid "The folder '{0}' can only contain other folders and videos" +msgstr "" + +#: .././mainapp.py:15408 +msgid "" +"You probably created that file/folder accidentally, in which case, you " +"should delete it manually before trying again" +msgstr "" + +#: .././mainapp.py:15558 +msgid "Videos cannot be dragged into this folder" +msgstr "" + +#: .././mainapp.py:15784 +msgid "Videos moved" +msgstr "" + +#: .././mainapp.py:15785 +msgid "Videos not moved" +msgstr "" + +#: .././mainapp.py:16195 +msgid "" +"Are you SURE you want to delete files? This procedure cannot be reversed!" +msgstr "" + +#: .././mainapp.py:16212 +msgid "" +"Are you SURE you want to remove these items from your database? This " +"procedure cannot be reversed!" +msgstr "" + +#: .././mainapp.py:18405 .././mainapp.py:18529 .././mainapp.py:18719 +#, python-brace-format +msgid "The channel contains {0} item(s), so this action may take a while" +msgstr "" + +#: .././mainapp.py:18411 .././mainapp.py:18535 .././mainapp.py:18725 +#, python-brace-format +msgid "The playlist contains {0} item(s), so this action may take a while" +msgstr "" + +#: .././mainapp.py:18417 .././mainapp.py:18541 .././mainapp.py:18731 +#, python-brace-format +msgid "The folder contains {0} item(s), so this action may take a while" +msgstr "" + +#: .././mainapp.py:18800 +msgid "You did not give the folder a new name" +msgstr "" + +#: .././mainapp.py:18811 .././mainapp.py:25078 .././mainapp.py:25224 +#: .././mainapp.py:25363 .././mainwin.py:19375 .././config.py:29229 +#, python-brace-format +msgid "The name '{0}' is not allowed" +msgstr "" + +#: .././mainapp.py:18828 .././mainapp.py:25107 .././mainapp.py:25240 +#: .././mainapp.py:25392 +msgid "That name is not permitted on your system" +msgstr "" + +#: .././mainapp.py:18859 +#, python-brace-format +msgid "Failed to rename '{0}'" +msgstr "" + +#. Confirm the result +#: .././mainapp.py:19073 +msgid "Search/replace complete" +msgstr "" + +#: .././mainapp.py:19074 +#, python-brace-format +msgid "Updated URLs: {0}" +msgstr "" + +#: .././mainapp.py:19075 +#, python-brace-format +msgid "Errors: {0}" +msgstr "" + +#: .././mainapp.py:19368 +msgid "Select where to save the database export" +msgstr "" + +#: .././mainapp.py:19498 +msgid "There is nothing to export!" +msgstr "" + +#: .././mainapp.py:19540 .././mainapp.py:19587 .././mainapp.py:19642 +#: .././config.py:31089 +msgid "Failed to save the database export file:" +msgstr "" + +#: .././mainapp.py:19652 .././config.py:31079 +msgid "Database export file saved to:" +msgstr "" + +#: .././mainapp.py:19926 +msgid "Select the database export" +msgstr "" + +#: .././mainapp.py:19944 .././mainapp.py:19957 .././mainapp.py:19995 +msgid "Failed to load the database export file" +msgstr "" + +#: .././mainapp.py:19976 +msgid "The database export file is invalid" +msgstr "" + +#: .././mainapp.py:20011 +msgid "The database export file is invalid (or empty)" +msgstr "" + +#: .././mainapp.py:20058 +msgid "Nothing was imported from the database export file" +msgstr "" + +#. Show a confirmation +#: .././mainapp.py:20072 +msgid "Imported into database" +msgstr "" + +#: .././mainapp.py:20073 .././mainwin.py:1929 .././config.py:740 +#: .././config.py:1108 .././config.py:18252 .././config.py:22248 +msgid "Videos" +msgstr "影片" + +#: .././mainapp.py:20074 .././config.py:743 .././config.py:18285 +#: .././config.py:22281 +msgid "Channels" +msgstr "頻道" + +#: .././mainapp.py:20075 .././config.py:746 .././config.py:18296 +#: .././config.py:22292 +msgid "Playlists" +msgstr "播放清單" + +#: .././mainapp.py:20076 .././config.py:749 +msgid "Folders" +msgstr "資料夾" + +#: .././mainapp.py:20866 +msgid "" +"The video file is missing from Tartube's data folder (try downloading the " +"video again!)" +msgstr "" + +#: .././mainapp.py:21250 +msgid "Select where to save the custom download export" +msgstr "" + +#: .././mainapp.py:21307 +msgid "Failed to save the custom download export file:" +msgstr "" + +#: .././mainapp.py:21317 +msgid "Custom download exported to:" +msgstr "" + +#: .././mainapp.py:21348 +msgid "Select the custom download export file" +msgstr "" + +#: .././mainapp.py:21367 +msgid "Failed to load the custom download export file" +msgstr "" + +#: .././mainapp.py:21386 +msgid "The custom download export file is invalid" +msgstr "" + +#: .././mainapp.py:21399 +msgid "The custom download export file is invalid (or empty)" +msgstr "" + +#: .././mainapp.py:22088 .././mainapp.py:22478 +msgid "Select where to save the options export" +msgstr "" + +#: .././mainapp.py:22136 .././mainapp.py:22526 +msgid "Failed to save the options export file:" +msgstr "" + +#: .././mainapp.py:22146 +msgid "Download options exported to to:" +msgstr "" + +#: .././mainapp.py:22177 .././mainapp.py:22567 +msgid "Select the options export file" +msgstr "" + +#: .././mainapp.py:22196 .././mainapp.py:22586 +msgid "Failed to load the options export file" +msgstr "" + +#: .././mainapp.py:22215 .././mainapp.py:22605 +msgid "The options export file is invalid" +msgstr "" + +#: .././mainapp.py:22228 .././mainapp.py:22618 +msgid "The options export file is invalid (or empty)" +msgstr "" + +#: .././mainapp.py:22536 +msgid "FFmpeg options exported to to:" +msgstr "" + +#: .././mainapp.py:23657 +msgid "Please select a destination folder" +msgstr "" + +#. Prompt for confirmation +#: .././mainapp.py:23729 +msgid "Are you sure you want to clear this list?" +msgstr "" + +#. Prompt for confirmation +#: .././mainapp.py:23776 +msgid "Are you sure you want to clear downloaded videos?" +msgstr "" + +#: .././mainapp.py:23829 +msgid "Only downloaded videos can be used to create video clips" +msgstr "" + +#: .././mainapp.py:23837 +msgid "You can create video clips from only one video at a time!" +msgstr "" + +#: .././mainapp.py:23908 .././mainwin.py:19936 +msgid "Only checked/downloaded videos can be processed by FFmpeg" +msgstr "" + +#: .././mainapp.py:24027 +msgid "No destination(s) to show" +msgstr "" + +#: .././mainapp.py:24077 +msgid "No video(s) have been downloaded" +msgstr "" + +#. Prompt for confirmation +#: .././mainapp.py:24210 +msgid "Are you sure you want to remove the selected item(s)?" +msgstr "" + +#: .././mainapp.py:25068 +msgid "You must give the channel a name" +msgstr "" + +#: .././mainapp.py:25088 .././mainapp.py:25373 +msgid "You must enter a valid URL" +msgstr "" + +#: .././mainapp.py:25214 +msgid "You must give the folder a name" +msgstr "" + +#: .././mainapp.py:25353 +msgid "You must give the playlist a name" +msgstr "" + +#: .././mainapp.py:25570 .././mainapp.py:25921 +msgid "No channels, playlists or folders are marked for download" +msgstr "" + +#: .././mainapp.py:25584 .././mainapp.py:25935 +#, python-brace-format +msgid "The maximum number of profiles permitted is {0}" +msgstr "" + +#: .././mainapp.py:25609 .././mainapp.py:25960 +#, python-brace-format +msgid "A profile called '{0}' already exists" +msgstr "" + +#: .././mainapp.py:25627 .././mainapp.py:25978 +#, python-brace-format +msgid "Created the profile '{0}'" +msgstr "" + +#: .././mainapp.py:25690 +msgid "There were no livestream alerts to cancel" +msgstr "" + +#: .././mainapp.py:25692 +msgid "Livestream alerts for 1 video were cancelled" +msgstr "" + +#: .././mainapp.py:25695 +#, python-brace-format +msgid "Livestream alerts for {0} videos were cancelled" +msgstr "" + +#: .././mainapp.py:25757 +msgid "Restart Tartube to see the new theme!" +msgstr "" + +#: .././mainapp.py:25758 +msgid "Tartube failed to set the new theme" +msgstr "" + +#: .././mainapp.py:26351 +msgid "" +"Before trying to reset channel/playlist names, you must check or download at " +"one least one video from each!" +msgstr "" + +#: .././mainapp.py:26431 +msgid "All Tartube data has been saved" +msgstr "" + +#: .././mainapp.py:26461 +msgid "Database saved" +msgstr "" + +#: .././mainapp.py:26791 .././mainwin.py:18168 +msgid "" +"Files cannot be recovered, after being deleted. Are you sure you want to " +"continue?" +msgstr "" + +#. Because livestream operations run silently in the background, when +#. the user goes to the trouble of clicking a menu item in the +#. main window's menu, tell them why nothing is happening +#: .././mainapp.py:26871 +msgid "Cannot update existing livestreams because" +msgstr "" + +#: .././mainapp.py:26873 +msgid "there is another operation running" +msgstr "" + +#: .././mainapp.py:26875 +msgid "they are currently being updated" +msgstr "" + +#: .././mainapp.py:26877 +msgid "one or more configuration windows are open" +msgstr "" + +#: .././mainapp.py:26879 +msgid "there are no livestreams to update" +msgstr "" + +#: .././mainapp.py:26960 +msgid "There is already a channel with that name" +msgstr "" + +#: .././mainapp.py:26962 +msgid "There is already a playlist with that name" +msgstr "" + +#: .././mainapp.py:26964 +msgid "There is already a folder with that name" +msgstr "" + +#: .././mainapp.py:26969 +msgid "The folder already contains a channel with that name" +msgstr "" + +#: .././mainapp.py:26973 +msgid "The folder already contains a playlist with that name" +msgstr "" + +#: .././mainapp.py:26978 +msgid "The folder already contains another folder with that name" +msgstr "" + +#: .././mainapp.py:26982 +msgid "(so please choose a different name)" +msgstr "" + +#: .././mainwin.py:1079 +msgid "Tartube cannot start because it cannot find its icons folder" +msgstr "" + +#: .././mainwin.py:1372 +msgid "TRANSLATOR'S NOTE: Main window menu starts here" +msgstr "" + +#. File column +#: .././mainwin.py:1379 .././config.py:11044 +msgid "_File" +msgstr "檔案 (&F)" + +#: .././mainwin.py:1386 +msgid "_Database preferences..." +msgstr "" + +#: .././mainwin.py:1392 +msgid "_Check database integrity" +msgstr "" + +#: .././mainwin.py:1401 +msgid "_Save database" +msgstr "" + +#: .././mainwin.py:1407 +msgid "Save _all" +msgstr "" + +#: .././mainwin.py:1416 +msgid "Close to _tray" +msgstr "" + +#. Quit +#: .././mainwin.py:1421 .././mainwin.py:30201 +msgid "_Quit" +msgstr "退出 (&Q)" + +#. Edit column +#: .././mainwin.py:1426 +msgid "_Edit" +msgstr "編輯 (&E)" + +#: .././mainwin.py:1433 +msgid "_System preferences..." +msgstr "" + +#: .././mainwin.py:1439 +msgid "_General download options..." +msgstr "" + +#: .././mainwin.py:1447 +msgid "_System" +msgstr "系統 (&S)" + +#: .././mainwin.py:1454 +msgid "Open _MSYS2 terminal..." +msgstr "" + +#: .././mainwin.py:1463 +msgid "Show Tartube _install folder" +msgstr "" + +#: .././mainwin.py:1471 +msgid "Show Tartube _script folder" +msgstr "" + +#: .././mainwin.py:1480 +msgid "_Change theme..." +msgstr "" + +#. Media column +#: .././mainwin.py:1488 .././config.py:19391 +msgid "_Media" +msgstr "媒體 (&M)" + +#: .././mainwin.py:1495 +msgid "Add _videos..." +msgstr "" + +#: .././mainwin.py:1501 +msgid "Add _channel..." +msgstr "" + +#: .././mainwin.py:1507 +msgid "Add _playlist..." +msgstr "" + +#: .././mainwin.py:1513 +msgid "Add _folder..." +msgstr "" + +#: .././mainwin.py:1522 +msgid "_Add many channels/playlists..." +msgstr "" + +#: .././mainwin.py:1528 +msgid "_Reset channel/playlist names..." +msgstr "" + +#: .././mainwin.py:1541 +msgid "_Export from database..." +msgstr "" + +#: .././mainwin.py:1547 +msgid "_Import into database..." +msgstr "" + +#: .././mainwin.py:1556 +msgid "Import _YouTube subscriptions..." +msgstr "" + +#: .././mainwin.py:1564 +msgid "_Export/import" +msgstr "匯出/匯入 (&E)" + +#: .././mainwin.py:1597 +msgid "_Switch between views" +msgstr "" + +#: .././mainwin.py:1607 +msgid "_Hide (most) system folders" +msgstr "" + +#: .././mainwin.py:1616 +msgid "_Show hidden folders" +msgstr "" + +#: .././mainwin.py:1622 +msgid "S_how/hide" +msgstr "顯示/隱藏 (&H)" + +#: .././mainwin.py:1629 +msgid "_Switch profile" +msgstr "" + +#: .././mainwin.py:1637 +msgid "_Remember last profile" +msgstr "" + +#: .././mainwin.py:1651 +msgid "_Create profile" +msgstr "" + +#: .././mainwin.py:1659 +msgid "_Delete profile" +msgstr "" + +#: .././mainwin.py:1671 +msgid "_Mark all for download" +msgstr "" + +#: .././mainwin.py:1680 +msgid "_Unmark all for download" +msgstr "" + +#: .././mainwin.py:1688 +msgid "Pr_ofiles" +msgstr "設定檔 (&O)" + +#: .././mainwin.py:1701 +msgid "Ad_d test media" +msgstr "" + +#: .././mainwin.py:1709 +msgid "Run _test code" +msgstr "" + +#. Operations column +#. Add this tab... +#: .././mainwin.py:1715 .././config.py:24026 +msgid "_Operations" +msgstr "" + +#. Check all +#: .././mainwin.py:1722 .././mainwin.py:30172 +msgid "_Check all" +msgstr "" + +#. Download all +#: .././mainwin.py:1728 .././mainwin.py:30179 +msgid "_Download all" +msgstr "" + +#: .././mainwin.py:1733 +msgid "C_ustom download all" +msgstr "" + +#: .././mainwin.py:1743 +msgid "_Refresh database..." +msgstr "" + +#: .././mainwin.py:1753 +msgid "U_pdate" +msgstr "更新 (&P)" + +#: .././mainwin.py:1759 .././mainwin.py:5943 +msgid "_Test" +msgstr "測試 (&T)" + +#: .././mainwin.py:1770 +msgid "Install _FFmpeg..." +msgstr "" + +#: .././mainwin.py:1778 +msgid "Install _matplotlib..." +msgstr "" + +#: .././mainwin.py:1786 +msgid "Install _streamlink..." +msgstr "" + +#: .././mainwin.py:1797 +msgid "Tidy up _files..." +msgstr "" + +#: .././mainwin.py:1808 .././mainwin.py:30190 +msgid "_Stop current operation" +msgstr "" + +#: .././mainwin.py:1816 +msgid "Stop _after current videos" +msgstr "" + +#. Livestreams column +#: .././mainwin.py:1824 +msgid "_Livestreams" +msgstr "" + +#: .././mainwin.py:1831 +msgid "_Livestream preferences..." +msgstr "" + +#: .././mainwin.py:1840 +msgid "_Update existing livestreams" +msgstr "" + +#: .././mainwin.py:1845 +msgid "_Cancel all livestream alerts" +msgstr "" + +#. Help column +#: .././mainwin.py:1850 +msgid "_Help" +msgstr "說明" + +#: .././mainwin.py:1856 +msgid "_About..." +msgstr "關於…" + +#: .././mainwin.py:1864 +msgid "Show _tutorial..." +msgstr "" + +#: .././mainwin.py:1873 +msgid "Check for _updates" +msgstr "檢查更新" + +#: .././mainwin.py:1879 +msgid "Go to _website" +msgstr "前往網站" + +#: .././mainwin.py:1888 +msgid "Send _feedback" +msgstr "提供回饋意見" + +#: .././mainwin.py:1907 +msgid "TRANSLATOR'S NOTE: Main window toolbar starts here" +msgstr "" + +#: .././mainwin.py:1939 +msgid "Add new videos" +msgstr "" + +#: .././mainwin.py:1948 .././mainwin.py:28398 .././media.py:110 +msgid "Channel" +msgstr "頻道" + +#: .././mainwin.py:1958 +msgid "Add a new channel" +msgstr "新增頻道" + +#: .././mainwin.py:1969 .././mainwin.py:28400 .././media.py:112 +msgid "Playlist" +msgstr "" + +#: .././mainwin.py:1979 +msgid "Add a new playlist" +msgstr "" + +#: .././mainwin.py:1990 .././mainwin.py:28402 .././media.py:114 +msgid "Folder" +msgstr "資料夾" + +#: .././mainwin.py:2000 +msgid "Add a new folder" +msgstr "新增資料夾" + +#: .././mainwin.py:2014 .././mainwin.py:13113 .././config.py:23820 +msgid "Check" +msgstr "" + +#: .././mainwin.py:2025 .././mainwin.py:2324 .././mainwin.py:4705 +#: .././mainwin.py:5038 .././mainwin.py:6106 +msgid "Check all videos, channels, playlists and folders" +msgstr "" + +#. Link not clickable +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#. Link not clickable +#: .././mainwin.py:2035 .././mainwin.py:26155 .././mainwin.py:26167 +#: .././mainwin.py:26172 .././mainwin.py:26180 .././mainwin.py:26475 +#: .././mainwin.py:26487 .././mainwin.py:27222 .././mainwin.py:28587 +#: .././mainwin.py:28599 .././mainwin.py:28625 .././config.py:23696 +#: .././config.py:23822 +msgid "Download" +msgstr "下載" + +#: .././mainwin.py:2046 .././mainwin.py:2332 .././mainwin.py:4719 +#: .././mainwin.py:5054 +msgid "Download all videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:2061 .././mainwin.py:37226 .././mainwin.py:38337 +#: .././config.py:11735 .././config.py:11920 .././config.py:12383 +#: .././config.py:12594 .././config.py:15151 .././config.py:15336 +msgid "Stop" +msgstr "" + +#: .././mainwin.py:2073 +msgid "Stop the current operation" +msgstr "" + +#: .././mainwin.py:2097 .././config.py:20234 +msgid "System preferences" +msgstr "系統設定" + +#: .././mainwin.py:2111 .././config.py:4927 .././config.py:4936 +msgid "General download options" +msgstr "" + +#: .././mainwin.py:2123 +msgid "Switch" +msgstr "" + +#: .././mainwin.py:2134 +msgid "Switch between simple and complex views" +msgstr "" + +#: .././mainwin.py:2147 .././mainwin.py:5989 +msgid "Hide" +msgstr "" + +#: .././mainwin.py:2149 .././mainwin.py:5996 +msgid "Show" +msgstr "" + +#: .././mainwin.py:2161 .././mainwin.py:5991 +msgid "Hide (most) system folders" +msgstr "" + +#: .././mainwin.py:2165 .././mainwin.py:5998 +msgid "Show all system folders" +msgstr "" + +#: .././mainwin.py:2180 +msgid "Quit" +msgstr "" + +#: .././mainwin.py:2190 +msgid "Close Tartube" +msgstr "關閉 Tartube" + +#: .././mainwin.py:2206 +msgid "TRANSLATOR'S NOTE: Main window tabs are defined here" +msgstr "" + +#: .././mainwin.py:2216 .././config.py:4988 .././config.py:12812 +#: .././config.py:21476 .././config.py:22720 +msgid "_Videos" +msgstr "" + +#: .././mainwin.py:2224 +msgid "_Progress" +msgstr "" + +#: .././mainwin.py:2232 +msgid "_Classic Mode" +msgstr "" + +#: .././mainwin.py:2241 +msgid "_Drag and Drop" +msgstr "" + +#: .././mainwin.py:2250 +msgid "_Output" +msgstr "" + +#: .././mainwin.py:2259 .././config.py:16123 .././config.py:17484 +msgid "_Errors / Warnings" +msgstr "" + +#: .././mainwin.py:2278 .././mainwin.py:4668 .././mainwin.py:4946 +#: .././mainwin.py:5454 .././mainwin.py:5681 .././mainwin.py:5802 +#: .././mainwin.py:6095 +msgid "TRANSLATOR'S NOTE: Main window's Videos tab" +msgstr "" + +#: .././mainwin.py:2322 .././mainwin.py:4703 .././mainwin.py:5036 +#: .././mainwin.py:6104 +msgid "Check all" +msgstr "" + +#: .././mainwin.py:2330 .././mainwin.py:3985 .././mainwin.py:4717 +#: .././mainwin.py:22257 +msgid "Download all" +msgstr "" + +#: .././mainwin.py:2345 .././mainwin.py:3989 .././mainwin.py:4738 +#: .././mainwin.py:22248 +msgid "Custom download all" +msgstr "" + +#: .././mainwin.py:2348 .././mainwin.py:4741 .././mainwin.py:5079 +msgid "" +"Perform a custom download of all videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:2407 +msgid "Page" +msgstr "" + +#: .././mainwin.py:2418 +msgid "Set visible page" +msgstr "" + +#: .././mainwin.py:2448 .././mainwin.py:2996 .././mainwin.py:3096 +#: .././mainwin.py:3729 .././mainwin.py:13122 +msgid "Size" +msgstr "大小" + +#: .././mainwin.py:2458 +msgid "Set page size" +msgstr "設定頁面大小" + +#: .././mainwin.py:2481 +msgid "Go to first page" +msgstr "" + +#: .././mainwin.py:2496 +msgid "Go to previous page" +msgstr "往上一頁" + +#: .././mainwin.py:2513 +msgid "Go to next page" +msgstr "" + +#: .././mainwin.py:2528 +msgid "Go to last page" +msgstr "" + +#: .././mainwin.py:2543 +msgid "Scroll to top" +msgstr "" + +#: .././mainwin.py:2559 +msgid "Scroll to bottom" +msgstr "" + +#: .././mainwin.py:2579 .././mainwin.py:5699 +msgid "Show more settings" +msgstr "" + +#: .././mainwin.py:2592 +msgid "Sort" +msgstr "" + +#: .././mainwin.py:2598 .././config.py:14866 +msgid "Upload time" +msgstr "" + +#: .././mainwin.py:2599 .././mainwin.py:30614 .././mainwin.py:33712 +#: .././mainwin.py:35200 .././config.py:3117 .././config.py:12836 +#: .././config.py:21974 .././config.py:23696 .././config.py:24804 +#: .././config.py:27132 .././config.py:27415 +msgid "Name" +msgstr "名稱" + +#: .././mainwin.py:2600 +msgid "Download time" +msgstr "" + +#: .././mainwin.py:2601 +msgid "Database ID" +msgstr "" + +#: .././mainwin.py:2629 .././mainwin.py:5819 +msgid "Reverse sort" +msgstr "" + +#: .././mainwin.py:2643 .././mainwin.py:5836 +msgid "Undo reverse sort" +msgstr "" + +#: .././mainwin.py:2662 +msgid "Resort videos" +msgstr "" + +#: .././mainwin.py:2676 +msgid "Find date" +msgstr "" + +#: .././mainwin.py:2689 +msgid "Find videos by date" +msgstr "" + +#: .././mainwin.py:2706 +msgid "Cancel find videos by date" +msgstr "" + +#: .././mainwin.py:2720 +msgid "Thumbnail size" +msgstr "" + +#: .././mainwin.py:2749 .././mainwin.py:4391 .././config.py:15593 +msgid "Filter" +msgstr "" + +#: .././mainwin.py:2757 .././mainwin.py:4397 .././config.py:15603 +msgid "Enter search text" +msgstr "" + +#: .././mainwin.py:2762 .././mainwin.py:4399 .././config.py:15606 +msgid "Regex" +msgstr "" + +#: .././mainwin.py:2770 .././mainwin.py:4402 +msgid "Select if search text is a regex" +msgstr "" + +#: .././mainwin.py:2786 +msgid "Names" +msgstr "" + +#: .././mainwin.py:2800 +msgid "Descriptions" +msgstr "" + +#: .././mainwin.py:2814 .././config.py:15506 +msgid "Comments" +msgstr "" + +#: .././mainwin.py:2834 +msgid "Filter videos" +msgstr "" + +#: .././mainwin.py:2851 .././mainwin.py:4456 +msgid "Cancel filter" +msgstr "" + +#: .././mainwin.py:2867 +msgid "Draw frames" +msgstr "" + +#: .././mainwin.py:2881 +msgid "Draw icons" +msgstr "" + +#: .././mainwin.py:2895 +msgid "Show downloaded" +msgstr "" + +#: .././mainwin.py:2910 +msgid "Show undownloaded" +msgstr "" + +#: .././mainwin.py:2925 +msgid "Show blocked" +msgstr "" + +#: .././mainwin.py:2949 .././mainwin.py:5614 +msgid "TRANSLATOR'S NOTE: Main window's Progress tab" +msgstr "" + +#: .././mainwin.py:2989 +msgid "TRANSLATOR'S NOTE: Ext is short for a file extension, e.g. .EXE" +msgstr "" + +#: .././mainwin.py:2994 .././mainwin.py:3727 .././config.py:11192 +msgid "Source" +msgstr "" + +#: .././mainwin.py:2994 .././mainwin.py:3727 +msgid "Status" +msgstr "" + +#: .././mainwin.py:2995 .././mainwin.py:3728 +msgid "Incoming file" +msgstr "" + +#: .././mainwin.py:2995 .././mainwin.py:3728 +msgid "Ext" +msgstr "" + +#: .././mainwin.py:2995 .././mainwin.py:3728 .././mainwin.py:13124 +msgid "Speed" +msgstr "" + +#: .././mainwin.py:2995 .././mainwin.py:3728 +msgid "ETA" +msgstr "" + +#: .././mainwin.py:3096 .././config.py:17168 +msgid "New videos" +msgstr "" + +#: .././mainwin.py:3096 .././config.py:483 .././config.py:14836 +msgid "Duration" +msgstr "" + +#: .././mainwin.py:3097 +msgid "Date" +msgstr "" + +#: .././mainwin.py:3097 .././config.py:14660 +msgid "File" +msgstr "" + +#: .././mainwin.py:3097 +msgid "Downloaded to" +msgstr "" + +#: .././mainwin.py:3165 +msgid "Max downloads" +msgstr "" + +#: .././mainwin.py:3188 +msgid "D/L speed (KiB/s)" +msgstr "" + +#: .././mainwin.py:3218 .././mainwin.py:5634 +msgid "Alternative limits do not currently apply" +msgstr "" + +#: .././mainwin.py:3229 .././config.py:5485 +msgid "Video resolution" +msgstr "" + +#: .././mainwin.py:3264 +msgid "Hide rows when they are finished" +msgstr "" + +#: .././mainwin.py:3277 +msgid "Add newest videos to the top" +msgstr "" + +#: .././mainwin.py:3303 .././mainwin.py:5877 +msgid "TRANSLATOR'S NOTE: Main window's Classic Mode tab" +msgstr "" + +#: .././mainwin.py:3374 +msgid "Open the Classic Mode menu" +msgstr "" + +#: .././mainwin.py:3383 +msgid "" +"Enter URLs below, choose your settings, click the 'Add URLs' button, then " +"click 'Download all'" +msgstr "" + +#. Third row - widgets to set the download destination and video/audio +#. format. The user clicks the 'Add URLs' button to create dummy +#. media.Video objects for each URL. Each object is associated with +#. the specified destination and format +#. -------------------------------------------------------------------- +#. Destination directory +#: .././mainwin.py:3435 +msgid "Destination:" +msgstr "" + +#: .././mainwin.py:3474 +msgid "Add a new destination folder" +msgstr "" + +#: .././mainwin.py:3493 +msgid "Open the destination folder" +msgstr "" + +#. Fourth row +#. -------------------------------------------------------------------- +#. Video/audio format +#: .././mainwin.py:3501 +msgid "Format:" +msgstr "" + +#. (Dummy items in the combo) +#: .././mainwin.py:3506 .././mainwin.py:22006 .././config.py:24804 +msgid "Default" +msgstr "" + +#: .././mainwin.py:3506 .././mainwin.py:22007 +msgid "Video:" +msgstr "" + +#: .././mainwin.py:3510 .././mainwin.py:22008 +msgid "Audio:" +msgstr "" + +#. Video resolution +#: .././mainwin.py:3540 .././mainwin.py:22643 +msgid "Highest" +msgstr "" + +#. (Update the IV) +#: .././mainwin.py:3571 .././mainwin.py:14097 .././mainwin.py:19771 +#: .././mainwin.py:21943 +msgid "Convert to this format" +msgstr "" + +#: .././mainwin.py:3572 +msgid "Download in this format" +msgstr "" + +#: .././mainwin.py:3620 .././mainwin.py:3626 +msgid "Add video clips" +msgstr "" + +#. Fifth row +#. -------------------------------------------------------------------- +#. Other settings +#: .././mainwin.py:3633 +msgid "Other:" +msgstr "" + +#: .././mainwin.py:3640 .././config.py:5447 +msgid "Is a livestream" +msgstr "" + +#: .././mainwin.py:3651 +msgid "Use SponsorBlock (requires FFmpeg v5.1+)" +msgstr "" + +#: .././mainwin.py:3662 +msgid "Add URLs" +msgstr "" + +#: .././mainwin.py:3668 +msgid "Add these URLs" +msgstr "" + +#: .././mainwin.py:3800 +msgid "Play video" +msgstr "播放影片" + +#: .././mainwin.py:3823 +msgid "Open destination(s)" +msgstr "" + +#: .././mainwin.py:3841 +msgid "Stop download" +msgstr "" + +#: .././mainwin.py:3862 +msgid "Re-download" +msgstr "" + +#: .././mainwin.py:3875 +msgid "" +"Allow downloader to create an archive file (enable this only when " +"downloading channels and playlists)" +msgstr "" + +#: .././mainwin.py:3905 .././mainwin.py:37024 +msgid "Create video clips" +msgstr "" + +#: .././mainwin.py:3923 +msgid "Process with FFmpeg" +msgstr "" + +#. (Signal connect appears below) +#: .././mainwin.py:3944 .././config.py:6852 .././config.py:21249 +#: .././config.py:23761 +msgid "Move up" +msgstr "" + +#. (Signal connect appears below) +#: .././mainwin.py:3960 .././config.py:6856 .././config.py:21258 +#: .././config.py:23770 +msgid "Move down" +msgstr "" + +#: .././mainwin.py:3981 +msgid "Remove from list" +msgstr "" + +#: .././mainwin.py:3997 .././mainwin.py:22260 +msgid "Download the URLs above" +msgstr "" + +#: .././mainwin.py:4001 .././mainwin.py:22251 +msgid "Perform a custom download on the URLs above" +msgstr "" + +#: .././mainwin.py:4005 +msgid "Clear all" +msgstr "" + +#: .././mainwin.py:4017 .././mainwin.py:4028 +msgid "Clear the URLs above" +msgstr "" + +#: .././mainwin.py:4021 +msgid "Clear downloaded" +msgstr "" + +#: .././mainwin.py:4043 +msgid "TRANSLATOR'S NOTE: Main window's Drag and Drop tab" +msgstr "" + +#: .././mainwin.py:4081 +msgid "When you drag a video here, it is added to the Classic Mode tab" +msgstr "" + +#: .././mainwin.py:4090 +msgid "Each zone represents a set of download options" +msgstr "" + +#: .././mainwin.py:4100 +msgid "Warning: Drag and drop does not work well on MS Windows" +msgstr "" + +#: .././mainwin.py:4121 +msgid "Add a new dropzone" +msgstr "" + +#: .././mainwin.py:4151 +msgid "TRANSLATOR'S NOTE: Main window's Output tab" +msgstr "" + +#: .././mainwin.py:4181 +msgid "Maximum page size" +msgstr "" + +#: .././mainwin.py:4221 +msgid "TRANSLATOR'S NOTE: Main window's Errors / Warnings tab" +msgstr "" + +#: .././mainwin.py:4244 .././config.py:23441 +msgid "Show Tartube errors" +msgstr "" + +#: .././mainwin.py:4257 .././config.py:23449 +msgid "Show Tartube warnings" +msgstr "" + +#: .././mainwin.py:4270 .././config.py:23457 +msgid "Show operation errors" +msgstr "" + +#: .././mainwin.py:4288 .././config.py:23468 +msgid "Show operation warnings" +msgstr "" + +#: .././mainwin.py:4311 .././config.py:23479 +msgid "Show dates" +msgstr "" + +#: .././mainwin.py:4329 .././config.py:23490 +msgid "Show channel/playlist/folder names" +msgstr "" + +#: .././mainwin.py:4347 .././config.py:23501 +msgid "Show video names" +msgstr "顯示影片名稱" + +#: .././mainwin.py:4365 .././config.py:23512 +msgid "Show full messages" +msgstr "" + +#: .././mainwin.py:4377 +msgid "Copy selected" +msgstr "" + +#: .././mainwin.py:4379 +msgid "Copy selected errors/warnings to the clipboard" +msgstr "" + +#: .././mainwin.py:4439 +msgid "Filter messages" +msgstr "" + +#: .././mainwin.py:4465 .././mainwin.py:37283 .././mainwin.py:38458 +#: .././config.py:11832 .././config.py:12036 .././config.py:12480 +#: .././config.py:12711 .././config.py:15239 .././config.py:15435 +#: .././config.py:17301 .././config.py:19521 +msgid "Clear list" +msgstr "" + +#: .././mainwin.py:4468 +msgid "Clear all visible errors/warnings" +msgstr "" + +#: .././mainwin.py:4708 .././mainwin.py:5041 .././mainwin.py:6109 +msgid "Check marked items" +msgstr "" + +#: .././mainwin.py:4710 .././mainwin.py:5044 .././mainwin.py:6111 +msgid "Check marked videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:4722 +msgid "Download marked items" +msgstr "" + +#: .././mainwin.py:4724 .././mainwin.py:5060 +msgid "Download marked videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:4747 +msgid "Custom download marked items" +msgstr "" + +#: .././mainwin.py:4751 +msgid "" +"Perform a custom download of marked videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:5007 +msgid "Installing FFmpeg" +msgstr "" + +#: .././mainwin.py:5009 +msgid "Installing matplotlib" +msgstr "" + +#: .././mainwin.py:5011 +msgid "Installing streamlink" +msgstr "" + +#: .././mainwin.py:5013 +msgid "Updating downloader" +msgstr "" + +#: .././mainwin.py:5015 +msgid "Fetching formats" +msgstr "" + +#: .././mainwin.py:5017 +msgid "Fetching subtitles" +msgstr "" + +#: .././mainwin.py:5019 +msgid "Testing downloader" +msgstr "" + +#: .././mainwin.py:5021 +msgid "Contacting website" +msgstr "" + +#: .././mainwin.py:5089 +msgid "" +"Perform a custom download of marked videos, channels, playlists and folders" +msgstr "" + +#: .././mainwin.py:5498 +msgid "Checking..." +msgstr "" + +#: .././mainwin.py:5500 .././mainwin.py:6127 .././formats.py:1211 +msgid "Checking" +msgstr "" + +#: .././mainwin.py:5503 +msgid "Downloading..." +msgstr "" + +#: .././mainwin.py:5505 .././mainwin.py:6129 .././formats.py:1208 +msgid "Downloading" +msgstr "" + +#: .././mainwin.py:5508 +msgid "Refreshing..." +msgstr "" + +#: .././mainwin.py:5511 +msgid "Tidying..." +msgstr "" + +#: .././mainwin.py:5514 +msgid "FFmpeg processing..." +msgstr "" + +#: .././mainwin.py:5624 +msgid "Alternative limits currently apply" +msgstr "" + +#: .././mainwin.py:5729 +msgid "Show fewer settings" +msgstr "" + +#: .././mainwin.py:5888 +msgid "This tab emulates the classic youtube-dl-gui interface" +msgstr "" + +#: .././mainwin.py:5893 +msgid "Videos downloaded here are not added to Tartube's database" +msgstr "" + +#: .././mainwin.py:5905 .././config.py:6786 +msgid "If your preferred formats are not available, the download will fail!" +msgstr "" + +#: .././mainwin.py:5911 +msgid "" +"If you want a specific format, install FFMpeg and select 'Convert to this " +"format'!" +msgstr "" + +#: .././mainwin.py:5931 +msgid "TRANSLATOR'S NOTE: Main window menu" +msgstr "" + +#: .././mainwin.py:5983 +msgid "TRANSLATOR'S NOTE: Main window toolbar" +msgstr "" + +#: .././mainwin.py:6310 +msgid "" +"TRANSLATOR'S NOTE: Video Index popup menu starts here. In the Videos tab, " +"right-click any channel/playlist/folder" +msgstr "" + +#: .././mainwin.py:6330 +msgid "_Check channel" +msgstr "" + +#: .././mainwin.py:6332 +msgid "_Check playlist" +msgstr "" + +#: .././mainwin.py:6334 +msgid "_Check folder" +msgstr "" + +#: .././mainwin.py:6360 +msgid "_Download channel" +msgstr "" + +#: .././mainwin.py:6362 +msgid "_Download playlist" +msgstr "" + +#: .././mainwin.py:6364 +msgid "_Download folder" +msgstr "" + +#: .././mainwin.py:6390 +msgid "C_ustom download channel" +msgstr "" + +#: .././mainwin.py:6392 +msgid "C_ustom download playlist" +msgstr "" + +#: .././mainwin.py:6394 +msgid "C_ustom download folder" +msgstr "" + +#: .././mainwin.py:6451 +msgid "_Empty folder" +msgstr "" + +#: .././mainwin.py:6463 +msgid "_All contents" +msgstr "" + +#: .././mainwin.py:6481 +msgid "_Remove videos" +msgstr "" + +#: .././mainwin.py:6493 +msgid "_Just folder videos" +msgstr "" + +#: .././mainwin.py:6499 +msgid "Channel c_ontents" +msgstr "" + +#: .././mainwin.py:6501 +msgid "Playlist c_ontents" +msgstr "" + +#: .././mainwin.py:6503 +msgid "Folder c_ontents" +msgstr "" + +#: .././mainwin.py:6515 +msgid "_Move to top level" +msgstr "" + +#: .././mainwin.py:6534 +msgid "_Hide folder" +msgstr "" + +#: .././mainwin.py:6544 +msgid "_Rename channel..." +msgstr "" + +#: .././mainwin.py:6546 +msgid "_Rename playlist..." +msgstr "" + +#: .././mainwin.py:6548 +msgid "_Rename folder..." +msgstr "" + +#: .././mainwin.py:6565 +msgid "Set _nickname..." +msgstr "" + +#: .././mainwin.py:6580 +msgid "Set _URL..." +msgstr "" + +#: .././mainwin.py:6597 +msgid "_Insert videos..." +msgstr "" + +#: .././mainwin.py:6612 +msgid "_Export channel..." +msgstr "" + +#: .././mainwin.py:6614 +msgid "_Export playlist..." +msgstr "" + +#: .././mainwin.py:6616 +msgid "_Export folder..." +msgstr "" + +#: .././mainwin.py:6629 +msgid "Re_fresh channel" +msgstr "" + +#: .././mainwin.py:6631 +msgid "Re_fresh playlist" +msgstr "" + +#: .././mainwin.py:6633 +msgid "Re_fresh folder" +msgstr "" + +#: .././mainwin.py:6650 +msgid "_Tidy up channel" +msgstr "" + +#: .././mainwin.py:6652 +msgid "_Tidy up playlist" +msgstr "" + +#: .././mainwin.py:6654 +msgid "_Tidy up folder" +msgstr "" + +#: .././mainwin.py:6675 +msgid "_Convert to playlist" +msgstr "" + +#: .././mainwin.py:6677 +msgid "_Convert to channel" +msgstr "" + +#: .././mainwin.py:6695 .././mainwin.py:7394 .././mainwin.py:8069 +#: .././mainwin.py:8699 +msgid "Add to C_lassic Mode tab" +msgstr "" + +#: .././mainwin.py:6709 +msgid "Channel _actions" +msgstr "" + +#: .././mainwin.py:6711 +msgid "Playlist _actions" +msgstr "" + +#: .././mainwin.py:6713 +msgid "Folder _actions" +msgstr "" + +#: .././mainwin.py:6733 .././mainwin.py:7593 +msgid "_Apply download options..." +msgstr "" + +#: .././mainwin.py:6751 .././mainwin.py:7607 +msgid "_Remove download options" +msgstr "" + +#: .././mainwin.py:6767 .././mainwin.py:7619 +msgid "_Edit download options..." +msgstr "" + +#: .././mainwin.py:6783 +msgid "Add to _scheduled download..." +msgstr "" + +#: .././mainwin.py:6793 +msgid "Set _download destination..." +msgstr "" + +#: .././mainwin.py:6808 +msgid "Show system _command..." +msgstr "" + +#: .././mainwin.py:6827 +msgid "Set _removal time..." +msgstr "" + +#: .././mainwin.py:6840 +msgid "_Mark for checking/downloading" +msgstr "" + +#: .././mainwin.py:6858 +msgid "_Don't add videos to Tartube's database" +msgstr "" + +#: .././mainwin.py:6870 +msgid "D_isable checking/downloading" +msgstr "" + +#: .././mainwin.py:6882 +msgid "_Just disable downloading" +msgstr "" + +#: .././mainwin.py:6903 +msgid "Down_loads" +msgstr "" + +#: .././mainwin.py:6914 +msgid "Channel _properties..." +msgstr "" + +#: .././mainwin.py:6916 +msgid "Playlist _properties..." +msgstr "" + +#: .././mainwin.py:6918 +msgid "Folder _properties..." +msgstr "" + +#: .././mainwin.py:6934 +msgid "_Default location" +msgstr "" + +#: .././mainwin.py:6947 +msgid "_Actual location" +msgstr "" + +#: .././mainwin.py:6961 +msgid "_Show" +msgstr "" + +#: .././mainwin.py:6970 +msgid "D_elete channel" +msgstr "" + +#: .././mainwin.py:6972 +msgid "D_elete playlist" +msgstr "" + +#: .././mainwin.py:6974 +msgid "D_elete folder" +msgstr "" + +#: .././mainwin.py:7015 +msgid "" +"TRANSLATOR'S NOTE: Video Catalogue popup menu starts here. In the Videos " +"tab, right-click any video" +msgstr "" + +#: .././mainwin.py:7079 +msgid "_Check video" +msgstr "" + +#: .././mainwin.py:7103 +msgid "_Download video" +msgstr "" + +#: .././mainwin.py:7126 +msgid "Re-_download this video" +msgstr "" + +#: .././mainwin.py:7142 +msgid "C_ustom download video" +msgstr "" + +#: .././mainwin.py:7171 .././mainwin.py:7555 .././mainwin.py:8142 +#: .././mainwin.py:8768 +msgid "Download and _watch" +msgstr "" + +#: .././mainwin.py:7191 .././mainwin.py:9250 +msgid "Watch in _player" +msgstr "" + +#: .././mainwin.py:7209 .././mainwin.py:7230 .././mainwin.py:9281 +msgid "_Watch on website" +msgstr "" + +#: .././mainwin.py:7219 .././mainwin.py:7243 .././mainwin.py:8541 +#: .././mainwin.py:9294 +#, python-brace-format +msgid "_Watch on {0}" +msgstr "" + +#: .././mainwin.py:7257 .././mainwin.py:9308 +msgid "_YouTube" +msgstr "" + +#: .././mainwin.py:7267 .././mainwin.py:9318 +msgid "_HookTube" +msgstr "" + +#: .././mainwin.py:7277 .././mainwin.py:9328 +msgid "_Invidious" +msgstr "" + +#: .././mainwin.py:7287 .././mainwin.py:9338 +msgid "TRANSLATOR'S NOTE: Watch on YouTube, Watch on HookTube, etc" +msgstr "" + +#: .././mainwin.py:7292 .././mainwin.py:9343 +msgid "W_atch on" +msgstr "" + +#: .././mainwin.py:7304 +msgid "_Create video clips..." +msgstr "" + +#: .././mainwin.py:7319 +msgid "_Remove video slices..." +msgstr "" + +#: .././mainwin.py:7334 .././mainwin.py:8031 .././mainwin.py:8686 +msgid "_Process with FFmpeg..." +msgstr "" + +#: .././mainwin.py:7352 +msgid "Download with _name..." +msgstr "" + +#: .././mainwin.py:7356 +msgid "Re-download with _name..." +msgstr "" + +#: .././mainwin.py:7372 +msgid "Reload _metadata" +msgstr "" + +#: .././mainwin.py:7384 .././mainwin.py:8059 +msgid "_Special" +msgstr "" + +#: .././mainwin.py:7415 +msgid "Auto _notify" +msgstr "" + +#: .././mainwin.py:7431 +msgid "Auto _sound alarm" +msgstr "" + +#: .././mainwin.py:7446 +msgid "Auto _open" +msgstr "" + +#: .././mainwin.py:7459 +msgid "_Download on start" +msgstr "" + +#: .././mainwin.py:7474 +msgid "Download on _stop" +msgstr "" + +#: .././mainwin.py:7492 +msgid "Not a _livestream" +msgstr "" + +#: .././mainwin.py:7502 +msgid "_Finalise livestream" +msgstr "" + +#: .././mainwin.py:7521 .././mainwin.py:8109 .././mainwin.py:8734 +msgid "_Livestream" +msgstr "" + +#: .././mainwin.py:7534 .././mainwin.py:8120 .././mainwin.py:8746 +msgid "_Mark for download" +msgstr "" + +#: .././mainwin.py:7545 .././mainwin.py:8132 .././mainwin.py:8758 +msgid "_Download" +msgstr "" + +#: .././mainwin.py:7565 .././mainwin.py:8153 .././mainwin.py:8779 +#: .././config.py:22168 +msgid "_Temporary" +msgstr "" + +#: .././mainwin.py:7635 +msgid "_Show system command" +msgstr "" + +#: .././mainwin.py:7645 +msgid "_Test system command" +msgstr "" + +#: .././mainwin.py:7660 +msgid "_Disable downloads" +msgstr "" + +#: .././mainwin.py:7678 +msgid "D_ownloads" +msgstr "" + +#: .././mainwin.py:7693 +msgid "Video is _archived" +msgstr "" + +#: .././mainwin.py:7706 +msgid "Video is _bookmarked" +msgstr "" + +#: .././mainwin.py:7717 +msgid "Video is _favourite" +msgstr "" + +#: .././mainwin.py:7728 +msgid "Video is _missing" +msgstr "" + +#: .././mainwin.py:7744 +msgid "Video is _new" +msgstr "" + +#: .././mainwin.py:7757 +msgid "Video is in _waiting list" +msgstr "" + +#: .././mainwin.py:7768 +msgid "_Mark video" +msgstr "" + +#: .././mainwin.py:7779 +msgid "_Location" +msgstr "" + +#: .././mainwin.py:7791 +msgid "_Properties..." +msgstr "" + +#: .././mainwin.py:7803 +msgid "S_how video" +msgstr "" + +#: .././mainwin.py:7812 +msgid "Available _formats" +msgstr "" + +#: .././mainwin.py:7822 +msgid "Available _subtitles" +msgstr "" + +#: .././mainwin.py:7832 +msgid "_Fetch" +msgstr "" + +#. Delete video +#: .././mainwin.py:7843 +msgid "D_elete video" +msgstr "" + +#: .././mainwin.py:7879 +msgid "" +"TRANSLATOR'S NOTE: Video Catalogue popup menu starts here. In the Videos " +"tab, select two or more videos, then righ-click them" +msgstr "" + +#. Check/download videos +#: .././mainwin.py:7958 +msgid "_Check videos" +msgstr "" + +#: .././mainwin.py:7978 +msgid "_Download videos" +msgstr "" + +#: .././mainwin.py:8001 +msgid "C_ustom download videos" +msgstr "" + +#: .././mainwin.py:8047 +msgid "_Reload metadata" +msgstr "" + +#: .././mainwin.py:8089 .././mainwin.py:8714 +msgid "Mark as _not livestreams" +msgstr "" + +#: .././mainwin.py:8099 .././mainwin.py:8724 +msgid "_Finalise livestreams" +msgstr "" + +#: .././mainwin.py:8174 +msgid "_Archived" +msgstr "" + +#: .././mainwin.py:8185 +msgid "Not a_rchived" +msgstr "" + +#: .././mainwin.py:8199 +msgid "_Bookmarked" +msgstr "" + +#: .././mainwin.py:8210 +msgid "Not b_ookmarked" +msgstr "" + +#: .././mainwin.py:8224 +msgid "_Favourite" +msgstr "" + +#: .././mainwin.py:8235 +msgid "Not fa_vourite" +msgstr "" + +#: .././mainwin.py:8249 +msgid "_Missing" +msgstr "" + +#: .././mainwin.py:8262 +msgid "Not m_issing" +msgstr "" + +#: .././mainwin.py:8278 +msgid "_New" +msgstr "" + +#: .././mainwin.py:8289 +msgid "Not n_ew" +msgstr "" + +#: .././mainwin.py:8303 +msgid "In _waiting list" +msgstr "" + +#: .././mainwin.py:8314 +msgid "Not in w_aiting list" +msgstr "" + +#: .././mainwin.py:8325 +msgid "_Mark videos" +msgstr "" + +#: .././mainwin.py:8334 +msgid "Show p_roperties..." +msgstr "" + +#. Delete videos +#: .././mainwin.py:8349 +msgid "D_elete videos" +msgstr "" + +#: .././mainwin.py:8386 +msgid "" +"TRANSLATOR'S NOTE: Progress List popup menu starts here. In the Progress " +"tab, in the list in the top half of the tab, right-click any row" +msgstr "" + +#. Stop check/download +#: .././mainwin.py:8437 +msgid "_Stop now" +msgstr "" + +#: .././mainwin.py:8454 +msgid "Stop checking _videos" +msgstr "" + +#: .././mainwin.py:8456 +msgid "Completely stop after this _video" +msgstr "" + +#: .././mainwin.py:8458 +msgid "Stop after this _video" +msgstr "" + +#: .././mainwin.py:8477 +msgid "Completely stop after these v_ideos" +msgstr "" + +#: .././mainwin.py:8492 +msgid "Download _next" +msgstr "" + +#: .././mainwin.py:8504 +msgid "Download _last" +msgstr "" + +#: .././mainwin.py:8528 +msgid "_Watch on Website" +msgstr "" + +#: .././mainwin.py:8553 +msgid "_Watch on YouTube" +msgstr "" + +#: .././mainwin.py:8563 +msgid "Watch on _HookTube" +msgstr "" + +#: .././mainwin.py:8573 +msgid "Watch on _Invidious" +msgstr "" + +#: .././mainwin.py:8609 +msgid "" +"TRANSLATOR'S NOTE: Results List popup menu starts here. In the Progress tab, " +"in the list in the bottom half of the tab, right-click any row" +msgstr "" + +#: .././mainwin.py:8672 .././mainwin.py:9010 +msgid "_Open destination(s)" +msgstr "" + +#: .././mainwin.py:8797 +msgid "_Delete video(s)" +msgstr "" + +#: .././mainwin.py:8825 +msgid "" +"TRANSLATOR'S NOTE: Classic Mode popup menu starts here. In the Classic Mode " +"tab, click the button in the top-right corner" +msgstr "" + +#: .././mainwin.py:8835 +msgid "_Enable automatic copy/paste" +msgstr "" + +#: .././mainwin.py:8847 +msgid "E_nable one-click downloads" +msgstr "" + +#: .././mainwin.py:8859 +msgid "_Remember un-downloaded URLs" +msgstr "" + +#: .././mainwin.py:8874 +msgid "_Set download options..." +msgstr "" + +#: .././mainwin.py:8885 +msgid "Use _default download options" +msgstr "" + +#: .././mainwin.py:8897 +msgid "Edit download _options..." +msgstr "" + +#: .././mainwin.py:8911 +msgid "Enable _custom downloads" +msgstr "" + +#: .././mainwin.py:8924 +msgid "Custom downloads _preferences..." +msgstr "" + +#: .././mainwin.py:8939 .././config.py:21801 +msgid "_Update" +msgstr "" + +#: .././mainwin.py:8981 +msgid "" +"TRANSLATOR'S NOTE: Classic Progress List popup menu starts here. In the " +"Classic Mode tab, in the list in the bottom half of the tab, right-click any " +"row" +msgstr "" + +#: .././mainwin.py:8998 +msgid "_Play video" +msgstr "" + +#: .././mainwin.py:9025 +msgid "_Re-download" +msgstr "" + +#: .././mainwin.py:9037 +msgid "_Stop download" +msgstr "" + +#: .././mainwin.py:9054 +msgid "Create _video clips..." +msgstr "" + +#: .././mainwin.py:9069 +msgid "Process with _FFmpeg..." +msgstr "" + +#: .././mainwin.py:9088 +msgid "_File path" +msgstr "" + +#. Copy URL +#: .././mainwin.py:9100 +msgid "_URL" +msgstr "" + +#: .././mainwin.py:9112 +msgid "_System command" +msgstr "" + +#: .././mainwin.py:9123 +msgid "_Copy" +msgstr "" + +#: .././mainwin.py:9131 +msgid "_Up" +msgstr "" + +#: .././mainwin.py:9143 +msgid "_Down" +msgstr "" + +#: .././mainwin.py:9153 +msgid "_Move" +msgstr "" + +#: .././mainwin.py:9162 +msgid "Re-_insert URL above" +msgstr "" + +#: .././mainwin.py:9173 +msgid "Re_move from list" +msgstr "" + +#: .././mainwin.py:9222 +msgid "" +"TRANSLATOR'S NOTE: Extra items for the popup menu in the Video Catalogue. In " +"the videos tab, right-click any video" +msgstr "" + +#: .././mainwin.py:9230 +msgid "D_ownload and watch" +msgstr "" + +#: .././mainwin.py:9262 +msgid "Watch on _website" +msgstr "" + +#: .././mainwin.py:9405 +msgid "" +"TRANSLATOR'S NOTE: Popup menu for the 'Custom download all' button in the " +"Videos tab (not always visible)" +msgstr "" + +#: .././mainwin.py:9414 +msgid "Choose a custom download:" +msgstr "" + +#: .././mainwin.py:9493 +msgid "" +"TRANSLATOR'S NOTE: Extra items for the main window menu, can be found in " +"Media > Profiles > Delete profile > ..." +msgstr "" + +#: .././mainwin.py:9502 .././mainwin.py:9549 +msgid "Choose a profile:" +msgstr "" + +#: .././mainwin.py:9599 +msgid "" +"TRANSLATOR'S NOTE: Extra items for the Video Index popup menu. In the Videos " +"tab, right-click any channel/playlist/folder" +msgstr "" + +#: .././mainwin.py:9604 +msgid "Mark as _archived" +msgstr "" + +#: .././mainwin.py:9615 +msgid "Mark as not a_rchived" +msgstr "" + +#: .././mainwin.py:9629 +msgid "Mark as _bookmarked" +msgstr "" + +#: .././mainwin.py:9641 +msgid "Mark as not b_ookmarked" +msgstr "" + +#: .././mainwin.py:9654 +msgid "Mark as _favourite" +msgstr "" + +#: .././mainwin.py:9667 +msgid "Mark as not fa_vourite" +msgstr "" + +#: .././mainwin.py:9681 +msgid "Mark as _missing" +msgstr "" + +#: .././mainwin.py:9694 +msgid "Mark as not m_issing" +msgstr "" + +#: .././mainwin.py:9711 +msgid "Mark as _new" +msgstr "" + +#: .././mainwin.py:9723 +msgid "Mark as not n_ew" +msgstr "" + +#: .././mainwin.py:9737 +msgid "Mark as in _waiting list" +msgstr "" + +#: .././mainwin.py:9749 +msgid "Mark as not in waiting _list" +msgstr "" + +#: .././mainwin.py:10639 +msgid "" +"TRANSLATOR'S NOTE: V = number of videos B = (number of videos) bookmarked D " +"= downloaded F = favourite L = live/livestream M = missing N = new W = in " +"waiting list E = (number of) errors W = warnings. Choose any abbreviation " +"you like." +msgstr "" + +#: .././mainwin.py:10647 +msgid "V:" +msgstr "" + +#: .././mainwin.py:10648 +msgid "B:" +msgstr "" + +#: .././mainwin.py:10649 +msgid "D:" +msgstr "" + +#: .././mainwin.py:10650 +msgid "F:" +msgstr "" + +#: .././mainwin.py:10651 +msgid "L:" +msgstr "" + +#: .././mainwin.py:10652 +msgid "M:" +msgstr "" + +#: .././mainwin.py:10653 +msgid "N:" +msgstr "" + +#: .././mainwin.py:10654 .././mainwin.py:10665 +msgid "W:" +msgstr "" + +#: .././mainwin.py:10664 +msgid "E:" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:12850 .././mainwin.py:13912 .././mainwin.py:26581 +#: .././mainwin.py:26585 .././mainwin.py:27165 .././mainwin.py:28753 +#: .././mainwin.py:28757 .././mainwin.py:28999 +msgid "Waiting" +msgstr "" + +#: .././mainwin.py:13107 +msgid "TRANSLATOR'S NOTE: D/L = download" +msgstr "" + +#: .././mainwin.py:13115 +msgid "D/L" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:13119 .././mainwin.py:26313 .././mainwin.py:27454 +#: .././config.py:18274 .././config.py:22270 +msgid "Other" +msgstr "其他" + +#: .././mainwin.py:15019 +msgid "" +"TRANSLATOR'S NOTE: 'Thread' means a computer processor thread. If you're not " +"sure how to translate it, just use 'Page #', as in Page #1, Page #2, etc" +msgstr "" + +#: .././mainwin.py:15026 +msgid "Thread" +msgstr "" + +#: .././mainwin.py:15029 +msgid "_Summary" +msgstr "" + +#: .././mainwin.py:15453 +msgid "TRANSLATOR'S NOTE: Extra items for the Errors/Warnings tab" +msgstr "" + +#: .././mainwin.py:15512 .././config.py:15722 .././config.py:23696 +msgid "Time" +msgstr "" + +#: .././mainwin.py:15512 +msgid "Container" +msgstr "" + +#: .././mainwin.py:15512 .././config.py:12836 .././downloads.py:8179 +#: .././media.py:116 +msgid "Video" +msgstr "" + +#: .././mainwin.py:15512 .././mainwin.py:15513 +msgid "Message" +msgstr "" + +#: .././mainwin.py:15772 +msgid "Tartube error" +msgstr "" + +#: .././mainwin.py:15776 +msgid "Tartube warning" +msgstr "" + +#: .././mainwin.py:16019 +msgid "_Errors" +msgstr "" + +#: .././mainwin.py:16023 +msgid "Warnings" +msgstr "" + +#: .././mainwin.py:16143 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " +"tab, right-click a channel and select Downloads > Add to scheduled " +"download..." +msgstr "" + +#: .././mainwin.py:16158 +msgid "" +"There are no scheduled downloads that don't already contain the channel/" +"playlist/folder" +msgstr "" + +#: .././mainwin.py:17805 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " +"tab, right-click a channel and select Downloads > Set download destination..." +msgstr "" + +#: .././mainwin.py:17858 +msgid "The external folder is not available" +msgstr "" + +#: .././mainwin.py:17860 +msgid "The external directory is not available" +msgstr "" + +#: .././mainwin.py:17966 +msgid "The URL is not valid" +msgstr "" + +#: .././mainwin.py:19527 .././mainwin.py:19549 .././mainwin.py:19686 +#: .././mainwin.py:19708 .././config.py:13250 .././config.py:16341 +msgid "Invalid timestamp(s)" +msgstr "" + +#: .././mainwin.py:19723 .././mainwin.py:29914 +msgid "Invalid URL" +msgstr "" + +#: .././mainwin.py:19915 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " +"tab, right-click a video and select Special > Process with FFmpeg..." +msgstr "" + +#: .././mainwin.py:20014 .././mainwin.py:20023 .././mainwin.py:38683 +#: .././mainwin.py:38693 .././config.py:13092 .././config.py:13102 +#: .././config.py:16228 .././config.py:16238 +msgid "Invalid start/stop times" +msgstr "" + +#: .././mainwin.py:20147 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " +"tab, right-click a video and select Special > Reload metadata..." +msgstr "" + +#: .././mainwin.py:20193 .././mainwin.py:20262 +#, python-brace-format +msgid "Files reloaded: {0}, not reloaded: {1}" +msgstr "" + +#: .././mainwin.py:21805 .././mainwin.py:21889 .././mainwin.py:24191 +msgid "unknown path" +msgstr "" + +#: .././mainwin.py:21811 .././mainwin.py:21895 .././mainwin.py:24198 +msgid "unknown URL" +msgstr "" + +#: .././mainwin.py:21828 .././mainwin.py:21912 +msgid "unknown message" +msgstr "" + +#: .././mainwin.py:21997 +msgid "" +"TRANSLATOR'S NOTE: Extra items for the 'Format' drop-down box in the Classic " +"Mode tab" +msgstr "" + +#: .././mainwin.py:22234 +msgid "" +"TRANSLATOR'S NOTE: Extra items for the buttons at the bottom of the Classic " +"Mode tab" +msgstr "" + +#: .././mainwin.py:22640 +msgid "TRANSLATOR'S NOTE: Highest video resolution" +msgstr "" + +#: .././mainwin.py:22893 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by main window menu, Media > " +"Profiles > Delete profile" +msgstr "" + +#: .././mainwin.py:22900 +#, python-brace-format +msgid "Are you sure you want to delete the profile '{0}'" +msgstr "" + +#: .././mainwin.py:23877 +msgid "" +"TRANSLATOR'S NOTE: Duplicate URLs dragged into the main window's Videos tab" +msgstr "" + +#: .././mainwin.py:23881 +msgid "The following items are duplicates:" +msgstr "" + +#: .././mainwin.py:24125 +#, python-brace-format +msgid "The channel contains {0} items, so this action may take a while" +msgstr "" + +#: .././mainwin.py:24132 +#, python-brace-format +msgid "The playlist contains {0} items, so this action may take a while" +msgstr "" + +#: .././mainwin.py:24139 +#, python-brace-format +msgid "The folder contains {0} items, so this action may take a while" +msgstr "" + +#: .././mainwin.py:24210 +msgid "no errors/warnings" +msgstr "" + +#. (Existing code won't be able to find the thumbnail, +#. even if the file has been downloaded) +#: .././mainwin.py:24223 .././mainwin.py:24236 +msgid "unknown thumbnail path" +msgstr "" + +#: .././mainwin.py:24395 +msgid "" +"TRANSLATOR'S NOTE: This section specifies text used to display videos in the " +"Videos tab. Videos are displayed in several different formats. To switch " +"format, in the main menu click Media > Switch between views" +msgstr "" + +#: .././mainwin.py:24841 .././mainwin.py:25916 +msgid "Originally from:" +msgstr "" + +#: .././mainwin.py:24854 .././mainwin.py:25930 +msgid "From channel" +msgstr "" + +#: .././mainwin.py:24856 .././mainwin.py:25932 +msgid "From playlist" +msgstr "" + +#: .././mainwin.py:24858 .././mainwin.py:25934 +msgid "From folder" +msgstr "" + +#: .././mainwin.py:24889 +msgid "Livestream has not started yet" +msgstr "" + +#: .././mainwin.py:24896 +msgid "Debut has started" +msgstr "" + +#: .././mainwin.py:24898 +msgid "Debut has not started yet" +msgstr "" + +#: .././mainwin.py:24905 .././mainwin.py:24911 .././mainwin.py:25984 +#: .././mainwin.py:25991 +msgid "Duration:" +msgstr "" + +#: .././mainwin.py:24911 .././mainwin.py:24917 .././mainwin.py:24928 +#: .././mainwin.py:25991 .././mainwin.py:25998 .././mainwin.py:26014 +#: .././mainwin.py:28454 .././mainwin.py:28460 .././mainwin.py:28471 +#: .././media.py:650 .././media.py:660 .././media.py:2260 .././media.py:2266 +#: .././media.py:2276 +msgid "unknown" +msgstr "" + +#: .././mainwin.py:24915 .././mainwin.py:24917 .././mainwin.py:25995 +#: .././mainwin.py:25997 +msgid "Size:" +msgstr "" + +#: .././mainwin.py:24926 .././mainwin.py:24928 .././mainwin.py:26009 +msgid "Date:" +msgstr "" + +#: .././mainwin.py:25276 +msgid "Watch:" +msgstr "" + +#: .././mainwin.py:25345 +msgid "Temporary:" +msgstr "" + +#: .././mainwin.py:25388 +msgid "Marked:" +msgstr "" + +#: .././mainwin.py:25888 .././mainwin.py:25951 +msgid "Show the full description" +msgstr "" + +#: .././mainwin.py:25889 .././mainwin.py:25952 +msgid "More" +msgstr "" + +#: .././mainwin.py:25901 .././mainwin.py:25960 +msgid "Show the short description" +msgstr "" + +#: .././mainwin.py:25902 .././mainwin.py:25961 +msgid "Less" +msgstr "" + +#: .././mainwin.py:26004 +msgid "Received:" +msgstr "" + +#: .././mainwin.py:26033 +msgid "Live now:" +msgstr "" + +#: .././mainwin.py:26035 .././mainwin.py:28607 +msgid "Live soon:" +msgstr "" + +#: .././mainwin.py:26044 +msgid "Debut now:" +msgstr "" + +#: .././mainwin.py:26046 .././mainwin.py:28609 +msgid "Debut soon:" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26053 .././mainwin.py:26055 .././mainwin.py:26059 +#: .././mainwin.py:26361 .././mainwin.py:26363 .././mainwin.py:26367 +#: .././mainwin.py:26869 .././mainwin.py:28485 .././mainwin.py:28487 +#: .././mainwin.py:28491 +msgid "Notify" +msgstr "" + +#: .././mainwin.py:26063 .././mainwin.py:26371 .././mainwin.py:28495 +msgid "When the livestream starts, notify the user" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26074 .././mainwin.py:26076 .././mainwin.py:26377 +#: .././mainwin.py:26379 .././mainwin.py:26382 .././mainwin.py:26751 +#: .././mainwin.py:28506 .././mainwin.py:28508 +msgid "Alarm" +msgstr "" + +#: .././mainwin.py:26080 .././mainwin.py:26386 .././mainwin.py:28512 +msgid "When the livestream starts, sound an alarm" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26085 .././mainwin.py:26087 .././mainwin.py:26392 +#: .././mainwin.py:26394 .././mainwin.py:26397 .././mainwin.py:26909 +#: .././mainwin.py:28517 .././mainwin.py:28519 +msgid "Open" +msgstr "開啟" + +#: .././mainwin.py:26091 .././mainwin.py:26401 .././mainwin.py:28523 +msgid "When the livestream starts, open it" +msgstr "" + +#. (Livestream already broadcasting) +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#. (Livestream already broadcasting) +#: .././mainwin.py:26099 .././mainwin.py:26104 .././mainwin.py:26106 +#: .././mainwin.py:26407 .././mainwin.py:26409 .././mainwin.py:26412 +#: .././mainwin.py:26790 .././mainwin.py:28531 .././mainwin.py:28536 +#: .././mainwin.py:28538 +msgid "D/L on start" +msgstr "" + +#: .././mainwin.py:26110 .././mainwin.py:26416 .././mainwin.py:28542 +msgid "When the livestream starts, download it" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26116 .././mainwin.py:26121 .././mainwin.py:26123 +#: .././mainwin.py:26422 .././mainwin.py:26424 .././mainwin.py:26427 +#: .././mainwin.py:26830 .././mainwin.py:28548 .././mainwin.py:28553 +#: .././mainwin.py:28555 +msgid "D/L on stop" +msgstr "" + +#: .././mainwin.py:26127 .././mainwin.py:26431 .././mainwin.py:28559 +msgid "When the livestream stops, download it" +msgstr "" + +#: .././mainwin.py:26146 .././mainwin.py:28578 +msgid "Watch in your media player" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26147 .././mainwin.py:27559 .././mainwin.py:28579 +msgid "Player" +msgstr "" + +#: .././mainwin.py:26179 .././mainwin.py:28624 +msgid "Download this video" +msgstr "" + +#: .././mainwin.py:26194 .././mainwin.py:28639 +msgid "" +"TRANSLATOR'S NOTE: If you want to use &, use & - if you want to use a " +"different word (e.g. French et), then just use that word" +msgstr "" + +#: .././mainwin.py:26202 .././mainwin.py:28647 +msgid "Download and watch in your media player" +msgstr "" + +#: .././mainwin.py:26203 +msgid "Download & watch" +msgstr "" + +#: .././mainwin.py:26210 +msgid "Not downloaded" +msgstr "" + +#: .././mainwin.py:26237 +msgid "Watch on website" +msgstr "" + +#: .././mainwin.py:26238 .././mainwin.py:27605 +msgid "Website" +msgstr "" + +#: .././mainwin.py:26253 +#, python-brace-format +msgid "Watch on {0}" +msgstr "" + +#: .././mainwin.py:26267 +msgid "Watch on YouTube" +msgstr "" + +#: .././mainwin.py:26268 +msgid "YouTube" +msgstr "" + +#: .././mainwin.py:26280 +msgid "Watch on HookTube" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26281 .././mainwin.py:27365 +msgid "HookTube" +msgstr "" + +#: .././mainwin.py:26293 +msgid "Watch on Invidious" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26294 .././mainwin.py:27409 +msgid "Invidious" +msgstr "" + +#. Links not clickable +#: .././mainwin.py:26331 +msgid "No link" +msgstr "" + +#: .././mainwin.py:26468 +msgid "Download to a temporary folder later" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26469 .././mainwin.py:26486 .././mainwin.py:27321 +msgid "Mark for download" +msgstr "" + +#: .././mainwin.py:26474 +msgid "Download to a temporary folder" +msgstr "" + +#: .././mainwin.py:26480 +msgid "Download to a temporary folder, then watch" +msgstr "" + +#: .././mainwin.py:26481 .././mainwin.py:28648 +msgid "D/L & watch" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26488 .././mainwin.py:27277 +msgid "D/L and watch" +msgstr "" + +#. Archived/not archived +#: .././mainwin.py:26512 .././mainwin.py:28686 +msgid "Prevent automatic deletion of the video" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26516 .././mainwin.py:26520 .././mainwin.py:26947 +#: .././mainwin.py:28690 .././mainwin.py:28694 .././mainwin.py:28909 +msgid "Archived" +msgstr "" + +#. Bookmarked/not bookmarked +#: .././mainwin.py:26525 .././mainwin.py:28699 +msgid "Show video in Bookmarks folder" +msgstr "" + +#. text + _('Bookmarked') + '', +#. text + '' + _('Bookmarked') + '', +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26530 .././mainwin.py:26535 .././mainwin.py:28703 +#: .././mainwin.py:28707 .././mainwin.py:28954 +msgid "B/mark" +msgstr "" + +#. Favourite/not favourite +#: .././mainwin.py:26540 .././mainwin.py:28712 +msgid "Show in Favourite Videos folder" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26544 .././mainwin.py:26548 .././mainwin.py:27037 +#: .././mainwin.py:28716 .././mainwin.py:28720 .././config.py:15723 +msgid "Favourite" +msgstr "" + +#. Missing/not missing +#: .././mainwin.py:26552 .././mainwin.py:28724 +msgid "Mark video as removed by creator" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26556 .././mainwin.py:26560 .././mainwin.py:27082 +#: .././mainwin.py:28728 .././mainwin.py:28732 +msgid "Missing" +msgstr "" + +#. New/not new +#: .././mainwin.py:26565 .././mainwin.py:28737 +msgid "Mark video as never watched" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26569 .././mainwin.py:26573 .././mainwin.py:27120 +#: .././mainwin.py:28741 .././mainwin.py:28745 +msgid "New" +msgstr "" + +#. In waiting list/not in waiting list +#: .././mainwin.py:26578 .././mainwin.py:28750 +msgid "Show in Waiting Videos folder" +msgstr "" + +#. Because of an unexplained Gtk problem, there is usually a crash after +#. this function returns. Workaround is to make the label unclickable, +#. then use a Glib timer to restore it (after some small fraction of a +#. second) +#: .././mainwin.py:26992 +msgid "Bookmarked" +msgstr "" + +#: .././mainwin.py:28425 +msgid "Click to open" +msgstr "" + +#: .././mainwin.py:28619 +msgid "TRANSLATOR'S NOTE: D/L means download" +msgstr "" + +#: .././mainwin.py:28655 +msgid "Can't D/L" +msgstr "" + +#: .././mainwin.py:28679 +msgid "" +"TRANSLATOR'S NOTE: This section contains shortened labels: Archive = " +"Archived, B/Mark = Bookmarked, Waiting: In waiting list" +msgstr "" + +#: .././mainwin.py:29925 +msgid "Duplicate URL" +msgstr "" + +#: .././mainwin.py:29931 +msgid "Failed to add URL" +msgstr "" + +#: .././mainwin.py:30427 +msgid "" +"TRANSLATOR'S NOTE: 'Add many channels/playlists' dialogue starts here. In " +"the main window menu, click Media > Add many channels/playlists..." +msgstr "" + +#: .././mainwin.py:30477 +msgid "Add many channels/playlists" +msgstr "" + +#. Initial widgets +#: .././mainwin.py:30500 +msgid "Enter URLs below" +msgstr "" + +#: .././mainwin.py:30506 .././mainwin.py:31372 .././mainwin.py:32297 +#: .././mainwin.py:32866 .././mainwin.py:35637 +msgid "Enable automatic copy/paste" +msgstr "" + +#. Buttons to add URLs as channels/playlists +#: .././mainwin.py:30561 +msgid "Add channels" +msgstr "" + +#: .././mainwin.py:30565 +msgid "Add playlists" +msgstr "" + +#: .././mainwin.py:30578 +msgid "Double-click the names/URLs to customise them" +msgstr "" + +#: .././mainwin.py:30586 +msgid "" +"HINT: You can also click Media > Reset channel/playlist names..." +msgstr "" + +#: .././mainwin.py:30614 .././mainwin.py:33704 .././mainwin.py:35192 +#: .././mainwin.py:39640 .././config.py:3461 .././config.py:5655 +#: .././config.py:5790 +msgid "Type" +msgstr "" + +#: .././mainwin.py:30614 .././config.py:21974 +msgid "URL" +msgstr "網址" + +#. Add more buttons +#: .././mainwin.py:30656 +msgid "Toggle channel/playlist" +msgstr "" + +#: .././mainwin.py:30660 +msgid "Delete selected lines" +msgstr "" + +#: .././mainwin.py:30700 +msgid "Add to this folder:" +msgstr "" + +#: .././mainwin.py:30709 .././mainwin.py:31322 .././mainwin.py:32018 +#: .././mainwin.py:32247 .././mainwin.py:32808 +msgid "No parent folder" +msgstr "" + +#: .././mainwin.py:31152 +msgid "" +"TRANSLATOR'S NOTE: 'Add channel' dialogue starts here. In the main window " +"toolbar, click the Channel button" +msgstr "" + +#: .././mainwin.py:31190 +msgid "Add channel" +msgstr "" + +#: .././mainwin.py:31209 +msgid "Enter the channel name" +msgstr "" + +#: .././mainwin.py:31214 +msgid "(Use the channel's real name or a customised name)" +msgstr "" + +#: .././mainwin.py:31222 +msgid "Copy and paste a link to the channel" +msgstr "" + +#: .././mainwin.py:31246 +msgid "" +"Before adding the URL for a YouTube channel, first click the Videos tab in " +"your browser!" +msgstr "" + +#: .././mainwin.py:31313 +msgid "(Optional) Add this channel inside a folder" +msgstr "" + +#: .././mainwin.py:31355 +msgid "Enable video downloads for this channel" +msgstr "" + +#: .././mainwin.py:31362 .././mainwin.py:32057 .././mainwin.py:32287 +#: .././mainwin.py:32857 +msgid "Don't download the videos, just check them" +msgstr "" + +#: .././mainwin.py:31563 +msgid "" +"TRANSLATOR'S NOTE: 'Add dropzone dialogue starts here. In the Drag and Drop " +"tab, click the button in the top-right corner" +msgstr "" + +#: .././mainwin.py:31592 +msgid "Add dropzone" +msgstr "" + +#: .././mainwin.py:31614 +msgid "Create new download options called" +msgstr "" + +#: .././mainwin.py:31626 .././mainwin.py:33089 +msgid "Use these download options" +msgstr "" + +#: .././mainwin.py:31663 .././mainwin.py:33123 +msgid "Clone these download options" +msgstr "" + +#: .././mainwin.py:31917 +msgid "" +"TRANSLATOR'S NOTE: 'Add folder' dialogue starts here. In the main window " +"toolbar, click the Folder button" +msgstr "" + +#: .././mainwin.py:31948 +msgid "Add folder" +msgstr "" + +#: .././mainwin.py:31967 +msgid "Enter the folder name" +msgstr "" + +#: .././mainwin.py:32008 +msgid "(Optional) Add this folder inside another folder" +msgstr "" + +#: .././mainwin.py:32051 +msgid "Enable video downloads for this folder" +msgstr "" + +#: .././mainwin.py:32121 +msgid "" +"TRANSLATOR'S NOTE: 'Add playlist' dialogue starts here. In the main window " +"toolbar, click the Playlist button" +msgstr "" + +#: .././mainwin.py:32157 +msgid "Add playlist" +msgstr "" + +#: .././mainwin.py:32176 +msgid "Enter the playlist name" +msgstr "" + +#: .././mainwin.py:32181 +msgid "(Use the playlist's real name or a customised name)" +msgstr "" + +#: .././mainwin.py:32189 +msgid "Copy and paste a link to the playlist" +msgstr "" + +#: .././mainwin.py:32238 +msgid "(Optional) Add this playlist inside a folder" +msgstr "" + +#: .././mainwin.py:32280 +msgid "Enable video downloads for this playlist" +msgstr "" + +#: .././mainwin.py:32450 +msgid "" +"TRANSLATOR'S NOTE: 'Reset timestamps' dialogue starts here. In the Videos " +"tab, right-click a video and select Show Video > Properties... > Timestamps " +"> Reset list using copied text" +msgstr "" + +#: .././mainwin.py:32480 +msgid "Reset timestamps" +msgstr "" + +#: .././mainwin.py:32502 +msgid "Copy timestamps below, e.g." +msgstr "" + +#: .././mainwin.py:32503 +msgid "Introduction" +msgstr "" + +#: .././mainwin.py:32629 +msgid "" +"TRANSLATOR'S NOTE: 'Add video' dialogue starts here. In the main window " +"toolbar, click the Video button" +msgstr "" + +#: .././mainwin.py:32666 +msgid "Add videos" +msgstr "" + +#: .././mainwin.py:32685 .././mainwin.py:35524 +msgid "Copy and paste the links to one or more videos" +msgstr "" + +#: .././mainwin.py:32691 .././mainwin.py:35530 +msgid "Links containing multiple videos will be converted to a channel" +msgstr "" + +#: .././mainwin.py:32698 .././mainwin.py:35537 +msgid "Links containing multiple videos will be converted to a playlist" +msgstr "" + +#: .././mainwin.py:32705 .././mainwin.py:35544 +msgid "Links containing multiple videos will be downloaded separately" +msgstr "" + +#: .././mainwin.py:32712 .././mainwin.py:35551 +msgid "Links containing multiple videos will not be downloaded at all" +msgstr "" + +#: .././mainwin.py:32799 +msgid "Add the videos to this folder" +msgstr "" + +#: .././mainwin.py:32851 +msgid "I want to download these videos" +msgstr "" + +#: .././mainwin.py:33028 +msgid "" +"TRANSLATOR'S NOTE: 'Apply download options' dialogue starts here. In the " +"Videos tab, right-click a channel, playlist or folder and select Downloads > " +"Apply download options..." +msgstr "" + +#: .././mainwin.py:33057 .././config.py:2257 +msgid "Apply download options" +msgstr "" + +#: .././mainwin.py:33079 +msgid "Create new download options" +msgstr "" + +#: .././mainwin.py:33341 +msgid "" +"TRANSLATOR'S NOTE: 'Select a date' dialogue starts here. In the toolbar at " +"the bottom of the Videos tab, click the 'Find date' button" +msgstr "" + +#: .././mainwin.py:33361 +msgid "Select a date" +msgstr "" + +#: .././mainwin.py:33423 +msgid "" +"TRANSLATOR'S NOTE: 'Change window theme' dialogue starts here. In the main " +"window menu, click System > Change theme. Available on MS Windows only" +msgstr "" + +#: .././mainwin.py:33455 +msgid "Change window theme" +msgstr "" + +#: .././mainwin.py:33478 +msgid "Choose a new window theme for Tartube" +msgstr "" + +#: .././mainwin.py:33508 +msgid "Hint: choose 'default' for the normal MS Windows theme" +msgstr "" + +#: .././mainwin.py:33642 +msgid "" +"TRANSLATOR'S NOTE: 'Create profile' dialogue starts here. In the main window " +"menu, click Media > Profiles > Create profile..." +msgstr "" + +#: .././mainwin.py:33664 +msgid "Create profile" +msgstr "" + +#: .././mainwin.py:33685 +msgid "Items currently marked:" +msgstr "" + +#: .././mainwin.py:33735 +msgid "Remember these items with a profile named:" +msgstr "" + +#: .././mainwin.py:33803 +msgid "" +"TRANSLATOR'S NOTE: 'Delete channel' dialogue starts here. In the Videos tab, " +"right-click a channel and select Delete channel" +msgstr "" + +#: .././mainwin.py:33849 +msgid "Delete channel" +msgstr "" + +#: .././mainwin.py:33851 +msgid "Delete playlist" +msgstr "" + +#: .././mainwin.py:33853 +msgid "Delete folder" +msgstr "" + +#: .././mainwin.py:33856 +msgid "Empty channel" +msgstr "" + +#: .././mainwin.py:33858 +msgid "Empty playlist" +msgstr "" + +#: .././mainwin.py:33860 +msgid "Empty folder" +msgstr "" + +#: .././mainwin.py:33894 +msgid "This channel does not contain any videos" +msgstr "" + +#: .././mainwin.py:33896 +msgid "This playlist does not contain any videos" +msgstr "" + +#: .././mainwin.py:33898 +msgid "This folder doesn't contain anything" +msgstr "" + +#: .././mainwin.py:33904 +msgid "(but there might be some files in Tartube's data folder)" +msgstr "" + +#: .././mainwin.py:33917 +msgid "This channel contains:" +msgstr "" + +#: .././mainwin.py:33919 +msgid "This playlist contains:" +msgstr "" + +#: .././mainwin.py:33921 .././config.py:18247 +msgid "This folder contains:" +msgstr "" + +#: .././mainwin.py:33928 +msgid "1 folder" +msgstr "" + +#: .././mainwin.py:33930 +#, python-brace-format +msgid "{0} folders" +msgstr "" + +#: .././mainwin.py:33937 +msgid "1 channel" +msgstr "" + +#: .././mainwin.py:33939 +#, python-brace-format +msgid "{0} channels" +msgstr "" + +#: .././mainwin.py:33946 +msgid "1 playlist" +msgstr "" + +#: .././mainwin.py:33948 +#, python-brace-format +msgid "{0} playlists" +msgstr "" + +#: .././mainwin.py:33955 .././mainwin.py:35265 +msgid "1 video" +msgstr "" + +#: .././mainwin.py:33957 .././mainwin.py:35268 +#, python-brace-format +msgid "{0} videos" +msgstr "" + +#: .././mainwin.py:33970 +msgid "" +"Do you want to remove the channel from your filesystem, or do you just want " +"to remove the channel from this list?" +msgstr "" + +#: .././mainwin.py:33974 +msgid "Just remove the channel from this list" +msgstr "" + +#: .././mainwin.py:33978 +msgid "" +"Do you want to remove the playlist from your filesystem, or do you just " +"want to remove the playlist from this list?" +msgstr "" + +#: .././mainwin.py:33982 +msgid "Just remove the playlist from this list" +msgstr "" + +#: .././mainwin.py:33986 +msgid "" +"Do you want to remove the folder from your filesystem, or do you just want " +"to remove the folder from this list?" +msgstr "" + +#: .././mainwin.py:33990 +msgid "Just remove the folder from this list" +msgstr "" + +#: .././mainwin.py:33996 +msgid "" +"Do you want to empty the channel on your filesystem, or do you just want to " +"empty the channel in this list?" +msgstr "" + +#: .././mainwin.py:34000 +msgid "Just empty the channel in this list" +msgstr "" + +#: .././mainwin.py:34004 +msgid "" +"Do you want to empty the playlist on your filesystem, or do you just want to " +"empty the playlist in this list?" +msgstr "" + +#: .././mainwin.py:34008 +msgid "Just empty the playlist in this list" +msgstr "" + +#: .././mainwin.py:34012 +msgid "" +"Do you want to empty the folder on your filesystem, or do you just want to " +"empty the folder in this list?" +msgstr "" + +#: .././mainwin.py:34016 +msgid "Just empty the folder in this list" +msgstr "" + +#: .././mainwin.py:34032 .././mainwin.py:34338 +msgid "Delete files on your computer" +msgstr "" + +#: .././mainwin.py:34040 .././mainwin.py:34346 .././mainwin.py:36460 +#: .././mainwin.py:36676 +msgid "Always show this window" +msgstr "" + +#: .././mainwin.py:34076 +msgid "" +"TRANSLATOR'S NOTE: 'Delete dropzone' dialogue starts here. In the Drag and " +"Drop tab, click a delete button in the bottom-right corner of any dropzone" +msgstr "" + +#: .././mainwin.py:34104 +msgid "Delete dropzone" +msgstr "" + +#: .././mainwin.py:34122 +msgid "Just delete the dropzone" +msgstr "" + +#: .././mainwin.py:34127 +msgid "Also delete download options" +msgstr "" + +#: .././mainwin.py:34210 +msgid "" +"TRANSLATOR'S NOTE: 'Delete videos' dialogue starts here. In the Videos tab, " +"right-click a video and select Delete video" +msgstr "" + +#: .././mainwin.py:34265 +msgid "Delete videos" +msgstr "" + +#: .././mainwin.py:34290 +msgid "1 selected video" +msgstr "" + +#: .././mainwin.py:34293 +#, python-brace-format +msgid "{0} selected videos" +msgstr "" + +#: .././mainwin.py:34305 +msgid "" +"Do you want to remove the video(s) from your filesystem, or do you just want " +"to remove them from this channel?" +msgstr "" + +#: .././mainwin.py:34308 +msgid "Just remove the video(s) from this channel" +msgstr "" + +#: .././mainwin.py:34312 +msgid "" +"Do you want to remove the video(s) from your filesystem, or do you just want " +"to remove them from this playlist?" +msgstr "" + +#: .././mainwin.py:34315 +msgid "Just remove the video(s) from this playlist" +msgstr "" + +#: .././mainwin.py:34319 +msgid "" +"Do you want to remove the video(s) from your filesystem, or do you just want " +"to remove them from this folder?" +msgstr "" + +#: .././mainwin.py:34322 +msgid "Just remove the video(s) from this folder" +msgstr "" + +#: .././mainwin.py:34381 +msgid "" +"TRANSLATOR'S NOTE: 'Duplicate URLs' dialogue starts here. In the main window " +"toolbar, click the Video button. In the top half of the first dialogue " +"window, add duplicate URLs and then click the OK button" +msgstr "" + +#: .././mainwin.py:34408 +msgid "Duplicate URLs" +msgstr "" + +#: .././mainwin.py:34431 +msgid "The following URLs are duplicates:" +msgstr "" + +#: .././mainwin.py:34482 +msgid "" +"TRANSLATOR'S NOTE: 'Export from database' dialogue starts here. In the main " +"window menu, click Media > Export/Import > Export from database..." +msgstr "" + +#: .././mainwin.py:34515 +msgid "Export from database" +msgstr "" + +#: .././mainwin.py:34541 +msgid "" +"Tartube is ready to export a partial summary of its database, containing a " +"list of videos, channels, playlists and/or folders (but not including the " +"videos themselves)" +msgstr "" + +#: .././mainwin.py:34548 +msgid "" +"Tartube is ready to export a summary of its database, containing a list of " +"videos, channels, playlists and/or folders (but not including the videos " +"themselves)" +msgstr "" + +#: .././mainwin.py:34564 +msgid "Choose what should be included:" +msgstr "" + +#: .././mainwin.py:34572 +msgid "Include lists of videos" +msgstr "" + +#: .././mainwin.py:34577 +msgid "Include channels" +msgstr "" + +#: .././mainwin.py:34582 +msgid "Include playlists" +msgstr "" + +#: .././mainwin.py:34587 +msgid "Preserve folder structure" +msgstr "" + +#: .././mainwin.py:34595 +msgid "Export as JSON" +msgstr "" + +#: .././mainwin.py:34601 +msgid "Export as CSV using separator" +msgstr "" + +#: .././mainwin.py:34628 +msgid "Export as plain text" +msgstr "" + +#: .././mainwin.py:34713 +msgid "" +"TRANSLATOR'S NOTE: 'Type extractor code' dialogue starts here. In the main " +"window menu, click Edit > General download Options... > Formats > Preferred, " +"then click the small button next to the 'Add format' button" +msgstr "" + +#: .././mainwin.py:34740 +msgid "Type extractor code" +msgstr "" + +#: .././mainwin.py:34777 +#, python-brace-format +msgid "Type an extractor code in the range {0}-{1}" +msgstr "" + +#: .././mainwin.py:34780 +msgid "(mp3, mp4 etc are also acceptable)" +msgstr "" + +#: .././mainwin.py:34786 +msgid "e.g. 136 for mp4 720p" +msgstr "" + +#: .././mainwin.py:34877 +msgid "" +"TRANSLATOR'S NOTE: Confirmation dialogue for fetching formats/subtitles. In " +"the Videos tab, right-click a video and select Fetch > Available formats... " +"or Fetch > Available subtitles" +msgstr "" + +#: .././mainwin.py:34927 +msgid "Click the Output tab to see available formats" +msgstr "" + +#: .././mainwin.py:34929 +msgid "Click the Output tab to see available subtitles" +msgstr "" + +#: .././mainwin.py:34938 +msgid "Update general download options" +msgstr "" + +#: .././mainwin.py:34946 +msgid "Apply download options to this video only" +msgstr "" + +#: .././mainwin.py:34954 +msgid "Update this video's download options" +msgstr "" + +#: .././mainwin.py:35109 +msgid "" +"TRANSLATOR'S NOTE: 'Import into database' dialogue starts here. In the main " +"window menu, click Media > Export/Import > Import into database..." +msgstr "" + +#: .././mainwin.py:35139 +msgid "Import into database" +msgstr "" + +#: .././mainwin.py:35163 +msgid "Choose which items to import" +msgstr "" + +#: .././mainwin.py:35184 .././config.py:24854 .././config.py:27184 +#: .././config.py:27465 +msgid "Import" +msgstr "" + +#: .././mainwin.py:35220 +msgid "Import videos" +msgstr "" + +#: .././mainwin.py:35225 +msgid "Merge channels/playlists/folders" +msgstr "" + +#. Strip of widgets at the bottom +#. Bottom strip +#: .././mainwin.py:35228 .././mainwin.py:37296 .././mainwin.py:38471 +#: .././mainwin.py:39706 .././mainwin.py:41279 +msgid "Select all" +msgstr "" + +#: .././mainwin.py:35233 .././mainwin.py:39711 +msgid "Unselect all" +msgstr "" + +#: .././mainwin.py:35471 +msgid "" +"TRANSLATOR'S NOTE: 'Insert videos' dialogue starts here. In the Videos tab, " +"right-click a channel and select Channel actions > Insert videos..." +msgstr "" + +#: .././mainwin.py:35505 +msgid "Insert videos" +msgstr "" + +#: .././mainwin.py:35606 +msgid "Insert the videos into this channel:" +msgstr "" + +#: .././mainwin.py:35609 +msgid "Insert the videos into this playlist:" +msgstr "" + +#: .././mainwin.py:35612 +msgid "Insert the videos into this folder:" +msgstr "" + +#: .././mainwin.py:35784 +msgid "" +"TRANSLATOR'S NOTE: 'Mount drive' dialogue starts here. Visible on startup, " +"if Tartube's data folder does not exist" +msgstr "" + +#: .././mainwin.py:35817 +msgid "Mount drive" +msgstr "" + +#: .././mainwin.py:35842 +msgid "The Tartube data folder is set to:" +msgstr "" + +#: .././mainwin.py:35855 +msgid "...but this folder doesn't exist" +msgstr "" + +#: .././mainwin.py:35858 +msgid "...but Tartube cannot write to this folder" +msgstr "" + +#: .././mainwin.py:35868 +msgid "I have mounted the drive, please try again" +msgstr "" + +#: .././mainwin.py:35874 +msgid "Use this data folder:" +msgstr "" + +#: .././mainwin.py:35901 +msgid "Select a different data folder" +msgstr "" + +#: .././mainwin.py:35907 +msgid "Use the default data folder" +msgstr "" + +#: .././mainwin.py:35913 +msgid "Shut down Tartube" +msgstr "" + +#. 'Cancel' button +#: .././mainwin.py:35920 .././config.py:1264 +msgid "Cancel" +msgstr "取消" + +#. 'OK' button +#: .././mainwin.py:35924 .././config.py:1255 .././config.py:2439 +#: .././config.py:13889 .././config.py:14255 +msgid "OK" +msgstr "" + +#: .././mainwin.py:35958 +msgid "The folder still doesn't exist. Please try a different option" +msgstr "" + +#: .././mainwin.py:36104 +msgid "" +"TRANSLATOR'S NOTE: 'Move container' dialogue starts here. In the Videos tab, " +"drag a channel, playlist or folder onto another folder" +msgstr "" + +#: .././mainwin.py:36131 +msgid "Move container" +msgstr "" + +#: .././mainwin.py:36153 +msgid "Are you sure you want to move this channel:" +msgstr "" + +#: .././mainwin.py:36155 +msgid "Are you sure you want to move this playlist:" +msgstr "" + +#: .././mainwin.py:36157 +msgid "Are you sure you want to move this folder:" +msgstr "" + +#: .././mainwin.py:36163 +msgid "into this folder:" +msgstr "" + +#: .././mainwin.py:36165 +msgid "This procedure will move all downloaded files to the new location" +msgstr "" + +#: .././mainwin.py:36171 +msgid "" +"This procedure will move all downloaded files to the top level of Tartube's " +"data folder" +msgstr "" + +#: .././mainwin.py:36193 .././mainwin.py:36335 +msgid "" +"WARNING: The destination folder is marked as temporary, so everything inside " +"it will be DELETED when Tartube restarts!" +msgstr "" + +#: .././mainwin.py:36207 .././mainwin.py:36349 +msgid "After moving, switch to the destination" +msgstr "" + +#: .././mainwin.py:36215 +msgid "Always show this window before moving containers" +msgstr "" + +#: .././mainwin.py:36255 +msgid "" +"TRANSLATOR'S NOTE: 'Move videos' dialogue starts here. In the Videos tab, " +"drag a video onto a channel, playlist or folder" +msgstr "" + +#: .././mainwin.py:36282 +msgid "Move videos" +msgstr "" + +#: .././mainwin.py:36304 +#, python-brace-format +msgid "Are you sure you want to move the video to '{0}'?" +msgstr "" + +#: .././mainwin.py:36310 +#, python-brace-format +msgid "Are you sure you want to move {0} videos to '{1}'?" +msgstr "" + +#: .././mainwin.py:36357 +msgid "Always show this window before moving videos" +msgstr "" + +#: .././mainwin.py:36391 +msgid "" +"TRANSLATOR'S NOTE: 'MSYS2 terminal' dialogue starts here. In the main window " +"menu, click System > Open MSYS2 terminal (MS Windows only)" +msgstr "" + +#: .././mainwin.py:36417 +msgid "MSYS2 terminal" +msgstr "" + +#: .././mainwin.py:36441 +msgid "On MS Windows, Tartube runs in the MSYS2 environment." +msgstr "" + +#: .././mainwin.py:36449 +msgid "" +"Advanced users can use the MSYS2 terminal to make changes to the\n" +"environment (for example, to tweak youtube-dl or FFmpeg)" +msgstr "" + +#: .././mainwin.py:36519 +msgid "" +"TRANSLATOR'S NOTE: Download failure dialogue starts here. Visible when the " +"user tries to check/download videos, but no videos are checked/downloaded" +msgstr "" + +#: .././mainwin.py:36551 .././config.py:480 +msgid "Downloads" +msgstr "" + +#: .././mainwin.py:36581 +msgid "Nothing happened?" +msgstr "" + +#: .././mainwin.py:36597 +msgid "Check the requested format is actually available" +msgstr "" + +#: .././mainwin.py:36602 +msgid "(Try converting instead of a direct download)" +msgstr "" + +#: .././mainwin.py:36615 +msgid "Check the downloader is installed and updated" +msgstr "" + +#: .././mainwin.py:36620 .././mainwin.py:40831 +msgid "Update" +msgstr "" + +#: .././mainwin.py:36626 +msgid "Tell Tartube where to find the downloader" +msgstr "" + +#: .././mainwin.py:36631 +msgid "Set the downloader's file path" +msgstr "" + +#: .././mainwin.py:36637 +msgid "Try a different downloader" +msgstr "" + +#: .././mainwin.py:36643 +msgid "Find more help" +msgstr "" + +#: .././mainwin.py:36648 +msgid "Read the FAQ" +msgstr "" + +#: .././mainwin.py:36654 +msgid "Ask for help" +msgstr "" + +#: .././mainwin.py:36666 +msgid "" +"Don't forget to check the Output tab and the\n" +"Errors/Warnings tab for error messages!" +msgstr "" + +#: .././mainwin.py:36830 +msgid "" +"TRANSLATOR'S NOTE: 'Download with name' and 'Re-download with name' dialogue " +"starts here. Right-click a video and select Special > Download with name..." +msgstr "" + +#: .././mainwin.py:36859 +msgid "Download with name" +msgstr "" + +#: .././mainwin.py:36861 +msgid "Re-download with name" +msgstr "" + +#: .././mainwin.py:36885 +msgid "Override the output template with this name" +msgstr "" + +#: .././mainwin.py:36947 +msgid "" +"TRANSLATOR'S NOTE: 'Create video clip' dialogue starts here. In the Videos " +"tab, right-click a video and select Special > Create video clips..." +msgstr "" + +#: .././mainwin.py:37055 +msgid "Enter the video's URL:" +msgstr "" + +#: .././mainwin.py:37079 +msgid "Optional video name (will be added to all clips)" +msgstr "" + +#: .././mainwin.py:37092 .././mainwin.py:38221 +msgid "Select a method:" +msgstr "" + +#: .././mainwin.py:37097 +msgid "Download new clips using yt-dlp" +msgstr "" + +#: .././mainwin.py:37108 +msgid "Download new clips using FFmpeg" +msgstr "" + +#: .././mainwin.py:37117 +msgid "Create clips from the downloaded video" +msgstr "" + +#: .././mainwin.py:37130 +msgid "Warning: Downloading new clips is usually MUCH quicker!" +msgstr "" + +#: .././mainwin.py:37150 .././mainwin.py:37994 +msgid "Create one clip" +msgstr "" + +#: .././mainwin.py:37154 .././mainwin.py:37928 .././mainwin.py:37961 +msgid "Download one clip" +msgstr "" + +#: .././mainwin.py:37160 .././config.py:11758 .././config.py:12406 +#: .././config.py:15170 +msgid "Start timestamp (e.g. 15:29)" +msgstr "" + +#: .././mainwin.py:37172 .././config.py:11778 .././config.py:12426 +#: .././config.py:15183 +msgid "Stop timestamp (optional)" +msgstr "" + +#: .././mainwin.py:37181 .././config.py:11793 .././config.py:12441 +#: .././config.py:15196 +msgid "Clip title (optional)" +msgstr "" + +#: .././mainwin.py:37191 .././mainwin.py:37995 +msgid "Create clip" +msgstr "" + +#: .././mainwin.py:37193 .././mainwin.py:37929 .././mainwin.py:37962 +msgid "Download clip" +msgstr "" + +#: .././mainwin.py:37204 .././mainwin.py:37997 +msgid "Create multiple clips" +msgstr "" + +#: .././mainwin.py:37208 .././mainwin.py:37932 .././mainwin.py:37964 +msgid "Download multiple clips" +msgstr "" + +#: .././mainwin.py:37226 .././mainwin.py:38333 +msgid "Marked" +msgstr "" + +#: .././mainwin.py:37226 .././mainwin.py:38336 .././config.py:11735 +#: .././config.py:11920 .././config.py:12383 .././config.py:12594 +#: .././config.py:15151 .././config.py:15336 +msgid "Start" +msgstr "" + +#: .././mainwin.py:37226 .././config.py:11735 .././config.py:12383 +#: .././config.py:15151 +msgid "Clip title" +msgstr "" + +#: .././mainwin.py:37268 +msgid "Add timestamp from above" +msgstr "" + +#: .././mainwin.py:37273 .././config.py:11815 .././config.py:12463 +#: .././config.py:15222 +msgid "Delete timestamp" +msgstr "" + +#: .././mainwin.py:37278 .././config.py:11825 .././config.py:12473 +#: .././config.py:15231 +msgid "Clip preferences" +msgstr "" + +#. (Signal connect appears below) +#: .././mainwin.py:37301 .././mainwin.py:38476 .././mainwin.py:41284 +msgid "Select none" +msgstr "" + +#: .././mainwin.py:37306 .././config.py:15247 +msgid "Reset list using copied text" +msgstr "" + +#: .././mainwin.py:37312 .././config.py:15255 +msgid "Reset list using video description" +msgstr "" + +#: .././mainwin.py:37332 .././mainwin.py:37999 +msgid "Create marked clips" +msgstr "" + +#: .././mainwin.py:37336 .././mainwin.py:37936 .././mainwin.py:37968 +msgid "Download marked clips" +msgstr "" + +#: .././mainwin.py:37344 .././mainwin.py:38000 +msgid "Create all clips" +msgstr "" + +#: .././mainwin.py:37346 .././mainwin.py:37938 .././mainwin.py:37970 +msgid "Download all clips" +msgstr "" + +#. (Signal connect appears below) +#: .././mainwin.py:37352 +msgid "Download all chapters" +msgstr "" + +#: .././mainwin.py:37557 .././mainwin.py:37560 +msgid "INVALID" +msgstr "" + +#: .././mainwin.py:38135 +msgid "" +"TRANSLATOR'S NOTE: 'Remove video slices' dialogue starts here. In the Videos " +"tab, right-click a video and select Special > Remove video slices..." +msgstr "" + +#: .././mainwin.py:38194 +msgid "Remove video slices" +msgstr "" + +#: .././mainwin.py:38226 +msgid "Download new sliced video" +msgstr "" + +#: .././mainwin.py:38234 +msgid "Remove slices from the downloaded video" +msgstr "" + +#: .././mainwin.py:38244 +msgid "Warning: Downloading new sliced videos is usually MUCH quicker!" +msgstr "" + +#: .././mainwin.py:38265 .././mainwin.py:38995 +msgid "Create video with one slice" +msgstr "" + +#: .././mainwin.py:38269 .././mainwin.py:38959 +msgid "Download video with one slice" +msgstr "" + +#: .././mainwin.py:38275 .././mainwin.py:38417 .././config.py:11978 +#: .././config.py:12652 .././config.py:15379 +msgid "Start (timestamp or seconds)" +msgstr "" + +#: .././mainwin.py:38287 .././mainwin.py:38427 .././config.py:11991 +#: .././config.py:12665 .././config.py:15391 +msgid "Stop (optional)" +msgstr "" + +#: .././mainwin.py:38298 .././mainwin.py:38997 +msgid "Create sliced video" +msgstr "" + +#: .././mainwin.py:38300 .././mainwin.py:38961 +msgid "Download sliced video" +msgstr "" + +#: .././mainwin.py:38311 .././mainwin.py:38999 +msgid "Create video with multiple slices" +msgstr "" + +#: .././mainwin.py:38315 .././mainwin.py:38963 +msgid "Download video with multiple slices" +msgstr "" + +#: .././mainwin.py:38334 .././mainwin.py:38381 .././config.py:11920 +#: .././config.py:11943 .././config.py:12594 .././config.py:12617 +#: .././config.py:15336 .././config.py:15355 +msgid "Category" +msgstr "" + +#: .././mainwin.py:38335 .././mainwin.py:38399 .././config.py:11920 +#: .././config.py:11963 .././config.py:12594 .././config.py:12637 +#: .././config.py:15336 .././config.py:15367 +msgid "Action type" +msgstr "" + +#: .././mainwin.py:38443 .././config.py:12007 .././config.py:12681 +#: .././config.py:15406 +msgid "Add slice" +msgstr "" + +#: .././mainwin.py:38448 .././config.py:12691 .././config.py:15418 +msgid "Delete slice" +msgstr "" + +#: .././mainwin.py:38453 .././config.py:12028 .././config.py:12703 +#: .././config.py:15427 +msgid "SponsorBlock settings" +msgstr "" + +#: .././mainwin.py:38482 .././config.py:15443 +msgid "Contact SponsorBlock to reset list" +msgstr "" + +#: .././mainwin.py:38496 .././mainwin.py:39003 +msgid "Create video, removing marked slices" +msgstr "" + +#: .././mainwin.py:38501 .././mainwin.py:38967 +msgid "Download video, removing marked slices" +msgstr "" + +#: .././mainwin.py:38511 .././mainwin.py:39007 +msgid "Create video, removing all slices" +msgstr "" + +#: .././mainwin.py:38516 .././mainwin.py:38971 +msgid "Download video, removing all slices" +msgstr "" + +#: .././mainwin.py:39121 +msgid "" +"TRANSLATOR'S NOTE: 'Set removal time' dialogue starts here. In the Videos " +"tab, right-click the 'Recent Videos' folder and select Downloads > Set " +"removal time..." +msgstr "" + +#: .././mainwin.py:39144 +msgid "Set removal time" +msgstr "" + +#: .././mainwin.py:39167 +msgid "" +"When videos are checked/downloaded, older videos\n" +"are removed from the Recent Videos folder." +msgstr "" + +#: .././mainwin.py:39178 .././config.py:18461 +msgid "Empty the whole folder" +msgstr "" + +#: .././mainwin.py:39185 +msgid "Remove videos after days" +msgstr "" + +#: .././mainwin.py:39263 +msgid "" +"TRANSLATOR'S NOTE: 'Stale lockfile' dialogue starts here. Visible on startup " +"if the Tartube database file is protected bu a lockfile" +msgstr "" + +#: .././mainwin.py:39285 +msgid "Stale lockfile" +msgstr "" + +#: .././mainwin.py:39322 +msgid "" +"Failed to load the Tartube database file, because another copy of Tartube " +"seems to be using it" +msgstr "" + +#: .././mainwin.py:39329 +msgid "Do you want to load it anyway?" +msgstr "" + +#: .././mainwin.py:39335 +msgid "" +"(Only click 'Yes' if you are sure that other copies of Tartube are not using " +"the database right now)" +msgstr "" + +#: .././mainwin.py:39347 +msgid "Yes, load the file" +msgstr "" + +#: .././mainwin.py:39354 +msgid "No, just shut down Tartube" +msgstr "" + +#: .././mainwin.py:39356 +msgid "No, don't load the file" +msgstr "" + +#: .././mainwin.py:39436 +msgid "" +"TRANSLATOR'S NOTE: 'Rename container' dialogue starts here. In the Videos " +"tab, right-click a channel and select Channel actions > Rename channel..." +msgstr "" + +#: .././mainwin.py:39457 +msgid "Rename channel" +msgstr "" + +#: .././mainwin.py:39459 +msgid "Rename playlist" +msgstr "" + +#: .././mainwin.py:39461 +msgid "Rename folder" +msgstr "" + +#: .././mainwin.py:39485 +msgid "Set the new name for the channel:" +msgstr "" + +#: .././mainwin.py:39487 +msgid "Set the new name for the playlist:" +msgstr "" + +#: .././mainwin.py:39489 +msgid "Set the new name for the folder:" +msgstr "" + +#: .././mainwin.py:39495 +msgid "N.B. This procedure will modify your filesystem!\n" +msgstr "" + +#: .././mainwin.py:39534 +msgid "" +"TRANSLATOR'S NOTE: 'Create profile' dialogue starts here. In the main window " +"menu, click Media > Reset channel//playlist names..." +msgstr "" + +#: .././mainwin.py:39574 +msgid "Reset channel/playlist names" +msgstr "" + +#: .././mainwin.py:39600 +msgid "This list is updated whenever channels/playlists are checked/downloaded" +msgstr "" + +#: .././mainwin.py:39608 +msgid "Select which names should be reset to the names on the original website" +msgstr "" + +#. 'Reset' button +#. (Signal connect appears below) +#: .././mainwin.py:39632 .././config.py:1237 .././config.py:5507 +#: .././config.py:6140 .././config.py:6294 .././config.py:25084 +#: .././config.py:26157 .././config.py:26185 .././config.py:26918 +#: .././config.py:26956 .././config.py:27031 +msgid "Reset" +msgstr "" + +#: .././mainwin.py:39648 +msgid "Database name" +msgstr "" + +#: .././mainwin.py:39656 +msgid "Original name" +msgstr "" + +#: .././mainwin.py:39877 +msgid "" +"TRANSLATOR'S NOTE: 'Add to scheduled download' dialogue starts here. In the " +"Videos tab, right-click a channel and select Downloads > Add to scheduled " +"download..." +msgstr "" + +#: .././mainwin.py:39900 +msgid "Add to scheduled download" +msgstr "" + +#: .././mainwin.py:39923 +msgid "Add the channel to this scheduled download:" +msgstr "" + +#: .././mainwin.py:39925 +msgid "Add the playlist to this scheduled download:" +msgstr "" + +#: .././mainwin.py:39927 +msgid "Add the folder to this scheduled download:" +msgstr "" + +#: .././mainwin.py:40004 +msgid "" +"TRANSLATOR'S NOTE: 'Set download destination' dialogue starts here. In the " +"Videos tab, right-click a channel and select Downloads > Set download " +"destination..." +msgstr "" + +#: .././mainwin.py:40035 +msgid "Set download destination" +msgstr "" + +#: .././mainwin.py:40081 +msgid "This channel normally downloads videos into its own folder" +msgstr "" + +#: .././mainwin.py:40086 +msgid "This playlist normally downloads videos into its own folder" +msgstr "" + +#: .././mainwin.py:40091 +msgid "This folder normally downloads videos into itself" +msgstr "" + +#: .././mainwin.py:40097 +msgid "This channel normally downloads videos into its own directory" +msgstr "" + +#: .././mainwin.py:40102 +msgid "This playlist normally downloads videos into its own directory" +msgstr "" + +#: .././mainwin.py:40107 +msgid "This folder normally downloads videos into its own directory" +msgstr "" + +#: .././mainwin.py:40117 +msgid "Use this location" +msgstr "" + +#: .././mainwin.py:40125 +msgid "Choose a different location if:" +msgstr "" + +#: .././mainwin.py:40128 +msgid "" +"You want to add a channel and its playlists, without downloading the same " +"video twice" +msgstr "" + +#: .././mainwin.py:40134 +msgid "" +"A video creator has channels on both YouTube and BitChute, and you want to " +"add both without downloading the same video twice" +msgstr "" + +#: .././mainwin.py:40232 +msgid "" +"Using an external folder is not recommended, in general. Choose an external " +"folder if:" +msgstr "" + +#: .././mainwin.py:40237 +msgid "" +"Using an external directory is not recommended, in general. Choose an " +"external directory if:" +msgstr "" + +#: .././mainwin.py:40243 +msgid "" +"You want a different application to process the downloaded videos (other " +"applications should not modify Tartube's main data folder)" +msgstr "" + +#: .././mainwin.py:40249 +msgid "" +"You want a different application to process the downloaded videos (other " +"applications should not modify Tartube's main data directory)" +msgstr "" + +#. (Signal connect appears below) +#: .././mainwin.py:40266 .././config.py:5836 .././config.py:6136 +#: .././config.py:6290 .././config.py:8511 .././config.py:8532 +#: .././config.py:8553 .././config.py:25080 .././config.py:26791 +#: .././config.py:26914 .././config.py:26952 .././config.py:27027 +msgid "Set" +msgstr "" + +#: .././mainwin.py:40350 +msgid "Select an external folder" +msgstr "" + +#: .././mainwin.py:40352 +msgid "Select an external directory" +msgstr "" + +#: .././mainwin.py:40372 +msgid "An external folder must not be inside Tartube's own data folder" +msgstr "" + +#: .././mainwin.py:40378 +msgid "An external directory must not be inside Tartube's own data directory" +msgstr "" + +#: .././mainwin.py:40562 +msgid "" +"TRANSLATOR'S NOTE: 'Set nickname' dialogue starts here. In the Videos tab, " +"right-click a channel and select Channel actions > Set nickname..." +msgstr "" + +#: .././mainwin.py:40583 +msgid "Set nickname" +msgstr "" + +#: .././mainwin.py:40608 +#, python-brace-format +msgid "" +"Set a nickname for the channel '{0}' (or leave it blank to reset the " +"nickname)" +msgstr "" + +#: .././mainwin.py:40613 +#, python-brace-format +msgid "" +"Set a nickname for the playlist '{0}' (or leave it blank to reset the " +"nickname)" +msgstr "" + +#: .././mainwin.py:40618 +#, python-brace-format +msgid "" +"Set a nickname for the folder '{0}' (or leave it blank to reset the nickname)" +msgstr "" + +#: .././mainwin.py:40666 +msgid "" +"TRANSLATOR'S NOTE: 'Set URL' dialogue starts here. In the Videos tab, right-" +"click a channel and select Channel actions > Set URL..." +msgstr "" + +#: .././mainwin.py:40687 +msgid "Set URL" +msgstr "" + +#: .././mainwin.py:40712 +#, python-brace-format +msgid "Update the URL for the channel '{0}'" +msgstr "" + +#: .././mainwin.py:40716 +#, python-brace-format +msgid "Update the URL for the playlist '{0}'" +msgstr "" + +#: .././mainwin.py:40765 +msgid "" +"TRANSLATOR'S NOTE: 'Show system command' dialogue starts here. In the Videos " +"tab, right-click a channel and select Downloads > Show system command..." +msgstr "" + +#: .././mainwin.py:40786 +msgid "Show system command" +msgstr "" + +#: .././mainwin.py:40840 +msgid "Copy to clipboard" +msgstr "" + +#: .././mainwin.py:40992 +msgid "" +"TRANSLATOR'S NOTE: 'Test youtube-dl' dialogue starts here. In the main " +"window menu, click Operations > Test youtube-dl" +msgstr "" + +#: .././mainwin.py:41013 .././config.py:25558 +msgid "Test" +msgstr "" + +#: .././mainwin.py:41033 +msgid "URL of the video to download (optional)" +msgstr "" + +#: .././mainwin.py:41044 +msgid "Command line options (optional)" +msgstr "" + +#: .././mainwin.py:41099 +msgid "" +"TRANSLATOR'S NOTE: 'Tidy up' dialogue starts here. In the main window menu, " +"click Operations > Tidy up files..." +msgstr "" + +#: .././mainwin.py:41134 +msgid "Tidy up files" +msgstr "" + +#: .././mainwin.py:41136 +msgid "Tidy up channel" +msgstr "" + +#: .././mainwin.py:41138 +msgid "Tidy up playlist" +msgstr "" + +#: .././mainwin.py:41140 +msgid "Tidy up folder" +msgstr "" + +#: .././mainwin.py:41169 +msgid "Check that videos are not corrupted" +msgstr "" + +#: .././mainwin.py:41174 +msgid "Delete corrupted video files" +msgstr "" + +#: .././mainwin.py:41184 +msgid "Check that videos do/don't exist" +msgstr "" + +#: .././mainwin.py:41191 +msgid "" +"Delete downloaded video files (doesn't remove videos from Tartube's database)" +msgstr "" + +#: .././mainwin.py:41203 +msgid "Also delete all video/audio files with the same name" +msgstr "" + +#: .././mainwin.py:41211 +msgid "Remove no-URL videos from database" +msgstr "" + +#: .././mainwin.py:41215 +msgid "Remove duplicate videos from database" +msgstr "" + +#: .././mainwin.py:41220 +msgid "Delete all archive files" +msgstr "" + +#: .././mainwin.py:41224 +msgid "Move thumbnails into own folder" +msgstr "" + +#: .././mainwin.py:41229 +msgid "Delete all thumbnail files" +msgstr "" + +#: .././mainwin.py:41234 +msgid "Delete all .webp thumbnails" +msgstr "" + +#: .././mainwin.py:41241 +msgid "Convert .webp thumbnails to .jpg using FFmpeg" +msgstr "" + +#: .././mainwin.py:41250 +msgid "Move other metadata files into own folder" +msgstr "" + +#: .././mainwin.py:41258 +msgid "Delete all description files" +msgstr "" + +#: .././mainwin.py:41262 +msgid "Delete all metadata (JSON) files" +msgstr "" + +#: .././mainwin.py:41266 +msgid "Delete all annotation files" +msgstr "" + +#: .././mainwin.py:41273 +msgid "EXPERIMENTAL: convert '.unknown_video' file extensions to .mp4" +msgstr "" + +#: .././config.py:481 +msgid "Uploads" +msgstr "" + +#: .././config.py:482 .././config.py:14852 +msgid "File size" +msgstr "" + +#: .././config.py:512 +msgid "Graph" +msgstr "" + +#: .././config.py:513 +msgid "Bar chart" +msgstr "" + +#: .././config.py:542 +msgid "Show decade" +msgstr "" + +#: .././config.py:543 +msgid "Show year" +msgstr "" + +#: .././config.py:544 +msgid "Show quarters" +msgstr "" + +#: .././config.py:545 +msgid "Show month" +msgstr "" + +#: .././config.py:546 +msgid "Show week" +msgstr "" + +#: .././config.py:547 +msgid "Show day" +msgstr "" + +#: .././config.py:579 +msgid "Quarters" +msgstr "" + +#: .././config.py:580 +msgid "Months" +msgstr "" + +#: .././config.py:581 +msgid "Weeks" +msgstr "" + +#: .././config.py:582 +msgid "Days" +msgstr "" + +#: .././config.py:583 .././config.py:18968 +msgid "Hours" +msgstr "" + +#: .././config.py:615 +msgid "Red" +msgstr "" + +#: .././config.py:616 +msgid "Green" +msgstr "" + +#: .././config.py:617 +msgid "Blue" +msgstr "" + +#: .././config.py:618 +msgid "Black" +msgstr "" + +#: .././config.py:619 +msgid "White" +msgstr "" + +#: .././config.py:904 +msgid "yt-dlp only" +msgstr "" + +#: .././config.py:1241 +msgid "Reset changes without closing the window" +msgstr "" + +#. 'Apply' button +#: .././config.py:1246 +msgid "Apply" +msgstr "" + +#: .././config.py:1250 +msgid "Apply changes without closing the window" +msgstr "" + +#: .././config.py:1258 .././config.py:13892 .././config.py:14258 +msgid "Apply changes" +msgstr "" + +#: .././config.py:1267 +msgid "Cancel changes" +msgstr "取消變更" + +#: .././config.py:2065 +msgid "Listed as" +msgstr "" + +#: .././config.py:2077 +msgid "Contained in" +msgstr "" + +#: .././config.py:2135 +msgid "Download to" +msgstr "" + +#: .././config.py:2183 +msgid "Default location" +msgstr "" + +#: .././config.py:2212 +msgid "Channel URL" +msgstr "" + +#: .././config.py:2214 +msgid "Playlist URL" +msgstr "" + +#: .././config.py:2216 .././config.py:5443 +msgid "Video URL" +msgstr "影片網址" + +#: .././config.py:2239 .././config.py:7527 +msgid "_Options" +msgstr "" + +#: .././config.py:2253 .././config.py:4345 +msgid "Download options" +msgstr "" + +#: .././config.py:2264 +msgid "Edit download options" +msgstr "" + +#: .././config.py:2271 +msgid "Remove download options" +msgstr "" + +#: .././config.py:2442 +msgid "Close this window" +msgstr "關閉此視窗" + +#: .././config.py:2851 +msgid "" +"TRANSLATOR'S NOTE: Custom downloads window starts here. In the menu, click " +"Edit > System preferences... > Operations > Custom > Edit" +msgstr "" + +#: .././config.py:2856 +msgid "Custom download settings" +msgstr "" + +#: .././config.py:3110 +msgid "TRANSLATOR'S NOTE: Custom downloads > Name" +msgstr "" + +#: .././config.py:3113 .././config.py:4691 .././config.py:10926 +msgid "_Name" +msgstr "" + +#: .././config.py:3135 +msgid "Usage" +msgstr "" + +#: .././config.py:3147 +msgid "Applies everywhere except the Classic Mode tab" +msgstr "" + +#: .././config.py:3150 +msgid "Applies to the Classic Mode tab" +msgstr "" + +#: .././config.py:3152 +msgid "Applies when selected" +msgstr "" + +#: .././config.py:3178 .././config.py:3218 +msgid "HINT" +msgstr "" + +#: .././config.py:3178 +msgid "Enable these settings first!" +msgstr "" + +#: .././config.py:3183 +msgid "Download each video independently of its channel or playlist" +msgstr "" + +#: .././config.py:3191 +msgid "" +"Check channels/playlists/folders before each custom download (recommended)" +msgstr "" + +#: .././config.py:3219 +msgid "" +"The Check all and Download all buttons will not start a custom " +"download!" +msgstr "" + +#: .././config.py:3226 +msgid "Use the main menu, or right-click a video, channel, playlist or folder!" +msgstr "" + +#: .././config.py:3241 +msgid "Import settings from the general custom download into this window" +msgstr "" + +#: .././config.py:3258 +msgid "Completely reset all settings to their default values" +msgstr "" + +#: .././config.py:3272 +msgid "TRANSLATOR'S NOTE: Custom downloads > Subtitles" +msgstr "" + +#. Add this tab... +#: .././config.py:3275 .././config.py:7501 +msgid "_Subtitles" +msgstr "" + +#: .././config.py:3288 +msgid "Subtitles settings" +msgstr "" + +#: .././config.py:3294 +msgid "" +"Note: this tab downloads videos. To download subtitles, use the download " +"options windows" +msgstr "" + +#: .././config.py:3301 +msgid "Only download videos with available subtitles" +msgstr "" + +#: .././config.py:3311 +msgid "" +"During the custom download, don't add videos without subtitles to the " +"database at all" +msgstr "" + +#: .././config.py:3323 +msgid "" +"Require subtitles in these languages (leave empty to download videos with " +"any subtitles):" +msgstr "" + +#: .././config.py:3338 .././config.py:7601 +msgid "Add language" +msgstr "" + +#: .././config.py:3350 .././config.py:7619 +msgid "Remove language" +msgstr "" + +#: .././config.py:3389 +msgid "TRANSLATOR'S NOTE: Custom downloads > Clips" +msgstr "" + +#: .././config.py:3392 .././config.py:12314 +msgid "_Clips" +msgstr "" + +#: .././config.py:3396 +msgid "Clip settings" +msgstr "" + +#: .././config.py:3402 +msgid "Split videos into video clips using timestamps (requires FFmpeg)" +msgstr "" + +#: .././config.py:3421 +msgid "TRANSLATOR'S NOTE: Custom downloads > Slices" +msgstr "" + +#: .././config.py:3424 +msgid "S_lices" +msgstr "" + +#: .././config.py:3429 +msgid "Slice settings" +msgstr "" + +#: .././config.py:3435 +msgid "Remove slices from the video using SponsorBlock data (requires FFmpeg)" +msgstr "" + +#: .././config.py:3461 .././config.py:19005 .././config.py:19512 +msgid "Remove" +msgstr "" + +#. Editing buttons +#: .././config.py:3495 +msgid "Remove all" +msgstr "" + +#: .././config.py:3501 +msgid "Remove none" +msgstr "" + +#: .././config.py:3546 +msgid "TRANSLATOR'S NOTE: Custom downloads > Delay" +msgstr "" + +#: .././config.py:3549 +msgid "_Delays" +msgstr "" + +#: .././config.py:3554 +msgid "Download delay settings" +msgstr "" + +#: .././config.py:3559 +msgid "Apply a delay after each video/channel/playlist is downloaded" +msgstr "" + +#: .././config.py:3566 +msgid "Maximum delay to apply (in minutes)" +msgstr "" + +#: .././config.py:3582 +msgid "Minimum delay to apply (in minutes; randomises the actual delay)" +msgstr "" + +#: .././config.py:3606 +msgid "TRANSLATOR'S NOTE: Custom downloads > Mirrors" +msgstr "" + +#: .././config.py:3609 .././config.py:26131 +msgid "_Mirrors" +msgstr "" + +#: .././config.py:3614 +msgid "Mirror settings" +msgstr "" + +#: .././config.py:3620 +msgid "Obtain a YouTube video from the original website" +msgstr "" + +#: .././config.py:3628 +msgid "Obtain the video from HookTube rather than YouTube" +msgstr "" + +#: .././config.py:3638 +msgid "Obtain the video from Invidious rather than YouTube" +msgstr "" + +#: .././config.py:3648 +msgid "Obtain the video from this YouTube front-end:" +msgstr "" + +#: .././config.py:3664 .././config.py:26163 +msgid "Type the exact text that replaces www.youtube.com e.g." +msgstr "" + +#: .././config.py:3688 +msgid "TRANSLATOR'S NOTE: Custom downloads > Livestreams" +msgstr "" + +#: .././config.py:3691 +msgid "L_ivestreams" +msgstr "" + +#: .././config.py:3695 +msgid "Livestream settings" +msgstr "" + +#: .././config.py:3700 +msgid "Don't download broadcasting livestreams" +msgstr "" + +#: .././config.py:3709 +msgid "Don't download finished livestreams" +msgstr "" + +#: .././config.py:3718 +msgid "Only download broadcasting livestreams" +msgstr "" + +#: .././config.py:3727 +msgid "Only download finished livestreams" +msgstr "" + +#: .././config.py:3789 .././config.py:4176 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Custom downloads > Name" +msgstr "" + +#: .././config.py:3795 .././config.py:4182 .././config.py:8991 +#: .././config.py:9945 .././config.py:13392 .././config.py:13793 +msgid "This procedure cannot be reversed. Are you sure you want to continue?" +msgstr "" + +#: .././config.py:4341 +msgid "" +"TRANSLATOR'S NOTE: Download options window starts here. In the menu, click " +"Edit > General download options..." +msgstr "" + +#: .././config.py:4688 +msgid "TRANSLATOR'S NOTE: Download options > Name" +msgstr "" + +#: .././config.py:4695 +msgid "Name for these download options" +msgstr "" + +#: .././config.py:4714 +msgid "Description" +msgstr "" + +#: .././config.py:4725 +msgid "Download options applied to" +msgstr "" + +#: .././config.py:4736 +msgid "All channels, playlists and folders" +msgstr "" + +#: .././config.py:4738 +msgid "Downloads in the Classic Mode tab" +msgstr "" + +#: .././config.py:4742 +msgid "These options are not applied to anything" +msgstr "" + +#: .././config.py:4748 +msgid "" +"Additional download options, e.g. --write-subs (do not use -o or --output)" +msgstr "" + +#: .././config.py:4757 +msgid "Additional download options" +msgstr "" + +#: .././config.py:4765 +msgid "Use ONLY these options (Tartube adds the output folder)" +msgstr "" + +#: .././config.py:4776 +msgid "Use ONLY these options (Tartube adds the output directory)" +msgstr "" + +#: .././config.py:4787 +msgid "If URLs are specified below, use only those URLs" +msgstr "" + +#: .././config.py:4827 +msgid "Hide advanced download options" +msgstr "" + +#: .././config.py:4829 +msgid "Show advanced download options" +msgstr "" + +#: .././config.py:4840 +msgid "Import general download options into this window" +msgstr "" + +#: .././config.py:4856 +msgid "Completely reset all download options to their default values" +msgstr "" + +#: .././config.py:4871 +msgid "TRANSLATOR'S NOTE: Download options > Downloads" +msgstr "" + +#. Add this tab... +#: .././config.py:4877 .././config.py:4888 .././config.py:24396 +msgid "_Downloads" +msgstr "" + +#: .././config.py:4918 +msgid "" +"TRANSLATOR'S NOTE: Download options > Downloads > General (to make hidden " +"tabs visible, click the 'Show advanced download options' button in the Name " +"tab)" +msgstr "" + +#: .././config.py:4942 +msgid "Number of fragments of a DASH/HLS video to download concurrently" +msgstr "" + +#: .././config.py:4957 +msgid "Minimum download rate (bytes/sec) below which throttling is assumed" +msgstr "" + +#: .././config.py:4984 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Videos" +msgstr "" + +#: .././config.py:4995 +msgid "Video selection options" +msgstr "" + +#: .././config.py:5000 +msgid "Stop download process when encountering a file in the archive" +msgstr "" + +#: .././config.py:5008 +msgid "" +"Stop download process when encountering a file that has been filtered out" +msgstr "" + +#: .././config.py:5017 +msgid "Number of failures allowed before rest of playlist is skipped" +msgstr "" + +#: .././config.py:5030 +msgid "Verbosity and simulation options" +msgstr "" + +#: .././config.py:5037 +msgid "" +"Ignore 'No video formats' error (useful for extracting metadata from " +"unavailable videos)" +msgstr "" + +#: .././config.py:5047 +msgid "Force download archive entries to be written as long as no errors occur" +msgstr "" + +#: .././config.py:5069 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Live" +msgstr "" + +#: .././config.py:5073 .././config.py:14925 +msgid "_Live" +msgstr "" + +#: .././config.py:5080 +msgid "Livestream options" +msgstr "" + +#: .././config.py:5085 +msgid "Download livestreams from start (experimental, YouTube only)" +msgstr "" + +#: .././config.py:5092 +msgid "Minimum seconds to wait for scheduled streams" +msgstr "" + +#: .././config.py:5117 .././config.py:8734 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Playlists" +msgstr "" + +#: .././config.py:5121 +msgid "_Playlists" +msgstr "" + +#: .././config.py:5141 .././config.py:8461 .././config.py:8489 +#: .././config.py:8830 .././config.py:8885 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Limits" +msgstr "" + +#: .././config.py:5145 +msgid "L_imits" +msgstr "" + +#: .././config.py:5168 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Merge" +msgstr "" + +#: .././config.py:5172 +msgid "_Merge" +msgstr "" + +#: .././config.py:5178 +msgid "Video/audio merge options" +msgstr "" + +#: .././config.py:5184 +msgid "Allow multiple video streams to be merged into a single file" +msgstr "" + +#: .././config.py:5191 +msgid "Allow multiple audio streams to be merged into a single file" +msgstr "" + +#: .././config.py:5211 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Extractor" +msgstr "" + +#: .././config.py:5215 +msgid "_Extractor" +msgstr "" + +#: .././config.py:5222 +msgid "Extractor options" +msgstr "" + +#: .././config.py:5244 +msgid "Do not process dynamic DASH manifests" +msgstr "" + +#: .././config.py:5252 +msgid "" +"Split HLS playlists to different formats at discontinuities such as ad breaks" +msgstr "" + +#: .././config.py:5262 +msgid "Extractor arguments" +msgstr "" + +#: .././config.py:5267 +msgid "One argument per line, e.g." +msgstr "" + +#: .././config.py:5292 .././config.py:8619 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > Filtering" +msgstr "" + +#: .././config.py:5296 +msgid "_Filtering" +msgstr "" + +#: .././config.py:5316 .././config.py:8571 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > External" +msgstr "" + +#: .././config.py:5319 +msgid "E_xternal" +msgstr "" + +#: .././config.py:5332 +msgid "TRANSLATOR'S NOTE: Download options > Files" +msgstr "" + +#. Add this tab... +#: .././config.py:5336 .././config.py:20900 +msgid "_Files" +msgstr "" + +#: .././config.py:5367 +msgid "TRANSLATOR'S NOTE: Download options > Files > File names" +msgstr "" + +#: .././config.py:5371 +msgid "File _names" +msgstr "" + +#: .././config.py:5378 +msgid "File name options" +msgstr "" + +#: .././config.py:5383 +msgid "Format for video file names" +msgstr "" + +#: .././config.py:5410 +msgid "File output template" +msgstr "" + +#: .././config.py:5432 +msgid "Add to template:" +msgstr "" + +#: .././config.py:5437 .././config.py:14485 +msgid "Video properties" +msgstr "" + +#: .././config.py:5439 .././config.py:14822 +msgid "Video ID" +msgstr "" + +#: .././config.py:5440 +msgid "Video title" +msgstr "" + +#: .././config.py:5441 +msgid "Alternative video ID" +msgstr "" + +#: .././config.py:5442 +msgid "Secondary video title" +msgstr "" + +#: .././config.py:5444 +msgid "Video filename extension" +msgstr "" + +#: .././config.py:5445 +msgid "Video licence" +msgstr "" + +#: .././config.py:5446 +msgid "Age restriction (years)" +msgstr "" + +#: .././config.py:5448 +msgid "Autonumber videos" +msgstr "" + +#: .././config.py:5450 +msgid "Autonumber videos (playlists)" +msgstr "" + +#: .././config.py:5452 +msgid "Creator/uploader" +msgstr "" + +#: .././config.py:5454 +msgid "Full name of video uploader" +msgstr "" + +#: .././config.py:5455 +msgid "Uploader ID" +msgstr "" + +#: .././config.py:5456 +msgid "Nickname/ID of video uploader" +msgstr "" + +#: .././config.py:5457 +msgid "Channel name" +msgstr "" + +#: .././config.py:5458 +msgid "Channel ID" +msgstr "" + +#: .././config.py:5459 +msgid "Playlist name" +msgstr "" + +#: .././config.py:5460 .././config.py:17251 +msgid "Playlist ID" +msgstr "" + +#: .././config.py:5461 +msgid "Video index in playlist" +msgstr "" + +#: .././config.py:5463 .././config.py:5568 +msgid "Date/time/location" +msgstr "" + +#: .././config.py:5465 +msgid "Release date (YYYYMMDD)" +msgstr "" + +#: .././config.py:5467 +msgid "Release date (custom format)" +msgstr "" + +#: .././config.py:5468 +msgid "Release time (UNIX timestamp)" +msgstr "" + +#: .././config.py:5469 +msgid "Release time (custom format)" +msgstr "" + +#: .././config.py:5470 +msgid "Upload date (YYYYMMDD)" +msgstr "" + +#: .././config.py:5472 +msgid "Upload date (custom format)" +msgstr "" + +#: .././config.py:5473 +msgid "Video length (seconds)" +msgstr "" + +#: .././config.py:5474 +msgid "Video length (custom format)" +msgstr "" + +#: .././config.py:5475 +msgid "Filming location" +msgstr "" + +#: .././config.py:5477 .././config.py:5524 +msgid "Time format" +msgstr "" + +#: .././config.py:5479 .././config.py:5481 +msgid "Video format" +msgstr "" + +#: .././config.py:5482 +msgid "Video format code" +msgstr "" + +#: .././config.py:5483 +msgid "Video width" +msgstr "" + +#: .././config.py:5484 +msgid "Video height" +msgstr "" + +#: .././config.py:5486 +msgid "Video frame rate" +msgstr "" + +#: .././config.py:5487 +msgid "Average video/audio bitrate (KiB/s)" +msgstr "" + +#: .././config.py:5488 +msgid "Average video bitrate (KiB/s)" +msgstr "" + +#: .././config.py:5489 +msgid "Average audio bitrate (KiB/s)" +msgstr "" + +#: .././config.py:5491 +msgid "Ratings/comments" +msgstr "" + +#: .././config.py:5493 +msgid "Number of views" +msgstr "" + +#: .././config.py:5494 +msgid "Number of positive ratings" +msgstr "" + +#: .././config.py:5495 +msgid "Number of negative ratings" +msgstr "" + +#: .././config.py:5496 +msgid "Average rating" +msgstr "" + +#: .././config.py:5497 +msgid "Number of reposts" +msgstr "" + +#: .././config.py:5498 +msgid "Number of comments" +msgstr "" + +#: .././config.py:5554 .././config.py:5698 .././config.py:5845 +#: .././config.py:18999 .././config.py:19502 .././config.py:23743 +#: .././config.py:24845 .././config.py:27175 .././config.py:27456 +msgid "Add" +msgstr "" + +#: .././config.py:5617 +msgid "TRANSLATOR'S NOTE: Download options > Files > Override" +msgstr "" + +#: .././config.py:5622 +msgid "_Override" +msgstr "" + +#: .././config.py:5629 +msgid "List of output filename templates" +msgstr "" + +#: .././config.py:5636 +msgid "Overrides the output template in the 'File names' tab" +msgstr "" + +#: .././config.py:5655 +msgid "Template" +msgstr "" + +#: .././config.py:5674 .././config.py:5809 +msgid "Output type" +msgstr "" + +#: .././config.py:5687 +msgid "Output template" +msgstr "" + +#: .././config.py:5709 .././config.py:5856 .././config.py:23779 +#: .././config.py:24903 .././config.py:27233 .././config.py:27514 +msgid "Delete" +msgstr "" + +#: .././config.py:5718 .././config.py:5865 .././config.py:22086 +#: .././config.py:24919 .././config.py:27251 .././config.py:27530 +msgid "Refresh list" +msgstr "" + +#: .././config.py:5761 +msgid "TRANSLATOR'S NOTE: Download options > Files > Paths" +msgstr "" + +#: .././config.py:5765 +msgid "_Paths" +msgstr "" + +#: .././config.py:5772 +msgid "List of output paths" +msgstr "" + +#: .././config.py:5790 +msgid "Path" +msgstr "" + +#: .././config.py:5824 +msgid "Output path" +msgstr "" + +#: .././config.py:5908 +msgid "TRANSLATOR'S NOTE: Download options > Files > Filesystem" +msgstr "" + +#: .././config.py:5912 +msgid "_Filesystem" +msgstr "" + +#: .././config.py:5919 .././config.py:6024 +msgid "Filesystem options" +msgstr "" + +#: .././config.py:5924 +msgid "Restrict filenames to ASCII characters" +msgstr "" + +#: .././config.py:5933 +msgid "Don't use the server's file modification time" +msgstr "" + +#: .././config.py:5940 +msgid "Download all videos into this folder" +msgstr "" + +#: .././config.py:6029 +msgid "Force filenames to be MS Windows compatible" +msgstr "" + +#: .././config.py:6037 +msgid "Limit filename length (excluding extension) to this many characters" +msgstr "" + +#: .././config.py:6052 +msgid "WARNING: The filename length includes the length of the folder name!" +msgstr "" + +#: .././config.py:6057 +msgid "WARNING: The filename length includes the length of the directory name!" +msgstr "" + +#: .././config.py:6069 +msgid "Do not overwrite any files" +msgstr "" + +#: .././config.py:6077 +msgid "Overwrite all video and metadata files (includes '--no-continue')" +msgstr "" + +#: .././config.py:6086 +msgid "Write playlist metadata in addition to video metadata" +msgstr "" + +#: .././config.py:6094 +msgid "Write all fields, including private fields, to the .info.json file" +msgstr "" + +#: .././config.py:6116 +msgid "TRANSLATOR'S NOTE: Download options > Files > Cookies" +msgstr "" + +#: .././config.py:6120 +msgid "_Cookies" +msgstr "" + +#: .././config.py:6127 +msgid "Cookies options" +msgstr "" + +#: .././config.py:6132 +msgid "Path to the downloader's cookie jar file" +msgstr "" + +#: .././config.py:6187 +msgid "Cookie options" +msgstr "" + +#: .././config.py:6192 +msgid "Do not read/dump cookies from/to the cookiejar file" +msgstr "" + +#: .././config.py:6199 +msgid "Do not load cookies from browser" +msgstr "" + +#: .././config.py:6210 +msgid "Retrieve cookies from browser" +msgstr "" + +#: .././config.py:6228 +msgid "Browser" +msgstr "" + +#: .././config.py:6246 +msgid "Chromium keyring" +msgstr "" + +#: .././config.py:6265 +msgid "Browser profile name (optional)" +msgstr "" + +#: .././config.py:6278 +msgid "Browser profile path (optional)" +msgstr "" + +#: .././config.py:6470 +msgid "TRANSLATOR'S NOTE: Download options > Files > Shortcuts" +msgstr "" + +#: .././config.py:6474 +msgid "_Shortcuts" +msgstr "" + +#: .././config.py:6480 +msgid "Internet shortcut options" +msgstr "" + +#: .././config.py:6486 +msgid "Write an internet shortcut file (.url, .webloc or .desktop)" +msgstr "" + +#: .././config.py:6493 +msgid "Write a Windows internet shortcut file (.url)" +msgstr "" + +#: .././config.py:6500 +msgid "Write a macOS inernet shortcut file (.webloc)" +msgstr "" + +#: .././config.py:6507 +msgid "Write a Linux internet shortcut file (.desktop)" +msgstr "" + +#: .././config.py:6527 +msgid "TRANSLATOR'S NOTE: Download options > Files > Write/move" +msgstr "" + +#: .././config.py:6531 +msgid "_Write/move" +msgstr "" + +#: .././config.py:6538 +msgid "File write options" +msgstr "" + +#: .././config.py:6543 +msgid "Write video's description to a .description file" +msgstr "" + +#: .././config.py:6550 +msgid "Write video's metadata to an .info.json file" +msgstr "" + +#: .././config.py:6558 +msgid "Write video's annotations to an .annotations.xml file" +msgstr "" + +#: .././config.py:6567 +msgid "" +"Annotations are not downloaded when checking videos/channels/playlists/" +"folders" +msgstr "" + +#: .././config.py:6574 +msgid "Write the video's thumbnail to the same folder" +msgstr "" + +#: .././config.py:6582 +msgid "File move options" +msgstr "" + +#: .././config.py:6587 +msgid "Move video's description file into a sub-folder" +msgstr "" + +#: .././config.py:6593 +msgid "Write video's metadata file into a sub-folder" +msgstr "" + +#: .././config.py:6599 +msgid "Write video's annotations file into a sub-folder" +msgstr "" + +#: .././config.py:6605 +msgid "Write the video's thumbnail into a sub-folder" +msgstr "" + +#: .././config.py:6624 +msgid "TRANSLATOR'S NOTE: Download options > Files > Keep" +msgstr "" + +#: .././config.py:6628 +msgid "_Keep" +msgstr "" + +#: .././config.py:6634 +msgid "Options during real (not simulated) downloads" +msgstr "" + +#: .././config.py:6640 .././config.py:6671 +msgid "Keep the description file after the download has finished" +msgstr "" + +#: .././config.py:6646 .././config.py:6677 +msgid "Keep the metadata file after the download has finished" +msgstr "" + +#: .././config.py:6652 .././config.py:6683 +msgid "Keep the annotations file after the download has finished" +msgstr "" + +#: .././config.py:6658 .././config.py:6689 +msgid "Keep the thumbnail file after the download has finished" +msgstr "" + +#: .././config.py:6665 +msgid "Options during simulated (not real) downloads" +msgstr "" + +#: .././config.py:6703 +msgid "TRANSLATOR'S NOTE: Download options > Formats" +msgstr "" + +#. Add this tab... +#: .././config.py:6707 +msgid "F_ormats" +msgstr "" + +#: .././config.py:6739 +msgid "TRANSLATOR'S NOTE: Download options > Formats > Preferred" +msgstr "" + +#: .././config.py:6748 +msgid "Preferred format options" +msgstr "" + +#: .././config.py:6795 +msgid "If you want a specific format, install FFmpeg and use the Convert tab!" +msgstr "" + +#: .././config.py:6802 +msgid "Recognised video/audio formats" +msgstr "" + +#: .././config.py:6817 +msgid "Add format" +msgstr "" + +#: .././config.py:6830 +msgid "Type extractor code directly" +msgstr "" + +#: .././config.py:6835 +msgid "List of preferred formats" +msgstr "" + +#: .././config.py:6848 +msgid "Remove format" +msgstr "" + +#: .././config.py:6915 +msgid "If a merge is required after post-processing, output to this format:" +msgstr "" + +#: .././config.py:6948 +msgid "_Preferred" +msgstr "" + +#: .././config.py:6968 +msgid "TRANSLATOR'S NOTE: Download options > Formats > Advanced" +msgstr "" + +#. Add this tab... +#: .././config.py:6972 .././config.py:7748 +msgid "_Advanced" +msgstr "" + +#: .././config.py:6980 +msgid "Multiple format options" +msgstr "" + +#: .././config.py:6989 +msgid "" +"Multiple formats will not be downloaded, because an archive file will be " +"created" +msgstr "" + +#: .././config.py:6992 +msgid "The archive file can be disabled in the System Preferences window" +msgstr "" + +#: .././config.py:7001 +msgid "" +"For each video, download the first available format from the preferred list" +msgstr "" + +#: .././config.py:7015 +msgid "" +"From the preferred list, download the first format that's available for all " +"videos" +msgstr "" + +#: .././config.py:7029 +msgid "For each video, download all available formats from the preferred list" +msgstr "" + +#: .././config.py:7042 +msgid "Download all available formats for all videos" +msgstr "" + +#: .././config.py:7075 .././config.py:7095 +msgid "Other format options" +msgstr "" + +#: .././config.py:7080 +msgid "Prefer free video formats, unless one is specified above" +msgstr "" + +#: .././config.py:7087 +msgid "Do not download DASH-related data for YouTube videos" +msgstr "" + +#: .././config.py:7102 +msgid "Check formats selected are actually downloadable (Experimental)" +msgstr "" + +#: .././config.py:7112 +msgid "" +"Allow unplayable formats to be listed and downloaded (also disables post-" +"processing)" +msgstr "" + +#: .././config.py:7129 +msgid "TRANSLATOR'S NOTE: Download options > Convert" +msgstr "" + +#: .././config.py:7132 +msgid "_Convert" +msgstr "" + +#: .././config.py:7137 +msgid "Convert to video" +msgstr "" + +#: .././config.py:7142 +msgid "Convert downloaded video to another format" +msgstr "" + +#: .././config.py:7156 +msgid "Convert to audio" +msgstr "" + +#: .././config.py:7162 +msgid "" +"Download each video, extract the sound, and then discard the original video" +msgstr "" + +#: .././config.py:7167 +msgid "(requires that FFmpeg or AVConv is installed on your system)" +msgstr "" + +#: .././config.py:7178 +msgid "Use this audio format:" +msgstr "" + +#: .././config.py:7194 +msgid "Use this audio quality:" +msgstr "" + +#: .././config.py:7200 +msgid "High" +msgstr "" + +#: .././config.py:7202 +msgid "Low" +msgstr "" + +#: .././config.py:7222 +msgid "TRANSLATOR'S NOTE: Download options > Post-processing" +msgstr "" + +#. Add this tab... +#: .././config.py:7226 +msgid "_Post-processing" +msgstr "" + +#: .././config.py:7244 +msgid "TRANSLATOR'S NOTE: Download options > Post-processing > General" +msgstr "" + +#. Add this tab... +#: .././config.py:7248 .././config.py:14646 .././config.py:17086 +#: .././config.py:18135 .././config.py:18783 .././config.py:20578 +#: .././config.py:27628 +msgid "_General" +msgstr "" + +#: .././config.py:7256 .././config.py:7425 .././config.py:7712 +msgid "Post-processing options" +msgstr "" + +#: .././config.py:7262 +msgid "Post-process video files to convert them to audio-only files" +msgstr "" + +#: .././config.py:7270 +msgid "Prefer AVConv over FFmpeg" +msgstr "" + +#: .././config.py:7279 +msgid "Prefer FFmpeg over AVConv (default)" +msgstr "" + +#: .././config.py:7288 +msgid "Audio format of the post-processed file" +msgstr "" + +#: .././config.py:7302 +msgid "Audio quality of the post-processed file" +msgstr "" + +#: .././config.py:7307 +msgid "High VBR" +msgstr "" + +#: .././config.py:7308 +msgid "Medium VBR" +msgstr "" + +#: .././config.py:7309 +msgid "Low VBR" +msgstr "" + +#: .././config.py:7310 +msgid "320 kb/s" +msgstr "" + +#: .././config.py:7311 +msgid "256 kb/s" +msgstr "" + +#: .././config.py:7312 +msgid "192 kb/s" +msgstr "" + +#: .././config.py:7313 +msgid "128 kb/s" +msgstr "" + +#: .././config.py:7314 +msgid "96 kb/s" +msgstr "" + +#: .././config.py:7325 +msgid "Encode video to another format, if necessary" +msgstr "" + +#: .././config.py:7338 +msgid "Arguments to pass to post-processor" +msgstr "" + +#: .././config.py:7349 +msgid "Keep original file after processing it" +msgstr "" + +#: .././config.py:7357 +msgid "Merge subtitles file with video (.mp4 only)" +msgstr "" + +#: .././config.py:7369 +msgid "Embed thumbnail in audio file as cover art" +msgstr "" + +#: .././config.py:7376 +msgid "Write metadata to the video file" +msgstr "" + +#: .././config.py:7383 +msgid "Automatically correct known faults of the file" +msgstr "" + +#: .././config.py:7389 +msgid "Do nothing" +msgstr "" + +#: .././config.py:7390 +msgid "Warn, but do nothing" +msgstr "" + +#: .././config.py:7391 +msgid "Fix if possible, otherwise warn" +msgstr "" + +#: .././config.py:7414 +msgid "TRANSLATOR'S NOTE: Download options > Post-processing > yt-dlp" +msgstr "" + +#: .././config.py:7418 +msgid "_yt-dlp" +msgstr "" + +#: .././config.py:7430 +msgid "Remux video into another container if necessary" +msgstr "" + +#: .././config.py:7449 +msgid "Embed metadata including chapter markers (if supported by format)" +msgstr "" + +#: .././config.py:7458 +msgid "Convert thumbnails to another format" +msgstr "" + +#: .././config.py:7473 +msgid "Split video into multiple files based on internal chapters" +msgstr "" + +#: .././config.py:7482 +msgid "N.B. The 'chapter' prefix can be used in the 'Output' and 'Paths' tabs" +msgstr "" + +#: .././config.py:7497 +msgid "TRANSLATOR'S NOTE: Download options > Subtitles" +msgstr "" + +#: .././config.py:7524 +msgid "TRANSLATOR'S NOTE: Download options > Subtitles > Options" +msgstr "" + +#: .././config.py:7531 +msgid "Subtitles options" +msgstr "" + +#: .././config.py:7537 +msgid "Don't download the subtitles file" +msgstr "" + +#: .././config.py:7548 +msgid "Download the automatic subtitles file (YouTube only)" +msgstr "" + +#: .././config.py:7561 +msgid "Download all available subtitle files" +msgstr "" + +#: .././config.py:7574 +msgid "Download subtitle file for these languages:" +msgstr "" + +#: .././config.py:7682 +msgid "TRANSLATOR'S NOTE: Download options > Subtitles > More options" +msgstr "" + +#: .././config.py:7686 +msgid "_More options" +msgstr "" + +#: .././config.py:7692 +msgid "Subtitle format options" +msgstr "" + +#: .././config.py:7698 +msgid "Preferred subtitle format(s), e.g. 'srt', 'vtt', 'srt/ass/vtt/lrc/best'" +msgstr "" + +#: .././config.py:7717 +msgid "Applies to .mp4 videos only; requires FFmpeg/AVConv" +msgstr "" + +#: .././config.py:7724 +msgid "During post-processing, merge subtitles file with video" +msgstr "" + +#: .././config.py:7744 +msgid "TRANSLATOR'S NOTE: Download options > Advanced" +msgstr "" + +#: .././config.py:7775 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > Configurations" +msgstr "" + +#: .././config.py:7779 +msgid "_Configurations" +msgstr "" + +#: .././config.py:7786 +msgid "Configuration file options" +msgstr "" + +#: .././config.py:7791 +msgid "Use the downloader's configuration file" +msgstr "" + +#: .././config.py:7802 .././config.py:7996 +msgid "File loaded from:" +msgstr "" + +#: .././config.py:7813 .././config.py:8007 +msgid "Save file" +msgstr "" + +#: .././config.py:7859 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > Authentication" +msgstr "" + +#: .././config.py:7863 +msgid "_Authentication" +msgstr "" + +#: .././config.py:7870 +msgid "Authentication options" +msgstr "" + +#: .././config.py:7875 +msgid "Username with which to log in" +msgstr "" + +#: .././config.py:7886 +msgid "Password with which to log in" +msgstr "" + +#: .././config.py:7897 +msgid "Password required for this URL" +msgstr "" + +#: .././config.py:7908 +msgid "Two-factor authentication code" +msgstr "" + +#: .././config.py:7920 +msgid "Adobe Pass multiple-system operator (TV provider) identifier" +msgstr "" + +#: .././config.py:7933 +msgid " Adobe Pass multiple-system operator account login" +msgstr "" + +#: .././config.py:7944 +msgid "Adobe Pass multiple-system operator account password" +msgstr "" + +#: .././config.py:7968 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > .netrc" +msgstr "" + +#: .././config.py:7972 +msgid "._netrc" +msgstr "" + +#: .././config.py:7979 +msgid ".netrc options" +msgstr "" + +#: .././config.py:7984 +msgid "Use .netrc authentication data" +msgstr "" + +#: .././config.py:8057 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > Network" +msgstr "" + +#: .././config.py:8060 +msgid "N_etwork" +msgstr "" + +#: .././config.py:8065 +msgid "Network options" +msgstr "" + +#: .././config.py:8071 +msgid "" +"Use this HTTP/HTTPS proxy (if set, overrides the proxies in Tartube's " +"preferences window" +msgstr "" + +#: .././config.py:8084 +msgid "Time to wait for socket connection, before giving up" +msgstr "" + +#: .././config.py:8095 +msgid "Bind with this Client-side IP address" +msgstr "" + +#: .././config.py:8106 +msgid "Connect using IPv4 only" +msgstr "" + +#: .././config.py:8113 +msgid "Connect using IPv6 only" +msgstr "" + +#: .././config.py:8133 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > Geo-restriction" +msgstr "" + +#: .././config.py:8137 +msgid "_Geo-restriction" +msgstr "" + +#: .././config.py:8144 +msgid "Geo-restriction options" +msgstr "" + +#: .././config.py:8149 +msgid "Use this proxy to verify IP address" +msgstr "" + +#: .././config.py:8160 +msgid "Bypass using fake X-Forwarded-For HTTP header" +msgstr "" + +#: .././config.py:8167 +msgid "Don't bypass using fake HTTP header" +msgstr "" + +#: .././config.py:8174 +msgid "Bypass geo-restriction with ISO 3166-2 country code" +msgstr "" + +#: .././config.py:8185 +msgid "Bypass with explicit IP block in CIDR notation" +msgstr "" + +#: .././config.py:8209 +msgid "TRANSLATOR'S NOTE: Download options > Advanced > Workaround" +msgstr "" + +#: .././config.py:8217 .././config.py:8307 +msgid "Workaround options" +msgstr "" + +#: .././config.py:8222 +msgid "Custom user agent" +msgstr "" + +#: .././config.py:8233 +msgid "Custom referer if video access has restricted domain" +msgstr "" + +#: .././config.py:8244 +msgid "Minimum seconds to sleep before each download" +msgstr "" + +#: .././config.py:8257 +msgid "Maximum seconds to sleep before each download" +msgstr "" + +#: .././config.py:8278 +msgid "Force this encoding (experimental)" +msgstr "" + +#: .././config.py:8289 +msgid "Suppress HTTPS certificate validation" +msgstr "" + +#: .././config.py:8297 +msgid "" +"Use an unencrypted connection to retrieve information about videos (YouTube " +"only)" +msgstr "" + +#: .././config.py:8313 +msgid "Number of seconds to sleep between requests during data extraction" +msgstr "" + +#: .././config.py:8328 +msgid "Number of seconds to sleep before each download (or minimum time)" +msgstr "" + +#: .././config.py:8466 +msgid "Video age options" +msgstr "" + +#: .././config.py:8471 +msgid "Download videos suitable for this age" +msgstr "" + +#: .././config.py:8496 +msgid "Video date options" +msgstr "" + +#: .././config.py:8501 +msgid "Only videos uploaded on this date" +msgstr "" + +#: .././config.py:8522 +msgid "Only videos uploaded before this date" +msgstr "" + +#: .././config.py:8543 +msgid "Only videos uploaded after this date" +msgstr "" + +#: .././config.py:8578 +msgid "External downloader options" +msgstr "" + +#: .././config.py:8583 +msgid "Use this external downloader" +msgstr "" + +#: .././config.py:8601 +msgid "Arguments to pass to external downloader" +msgstr "" + +#: .././config.py:8626 +msgid "Video filtering options" +msgstr "" + +#: .././config.py:8631 +msgid "Download only matching titles (regex or caseless substring)" +msgstr "" + +#: .././config.py:8643 +msgid "Don't download only matching titles (regex or caseless substring)" +msgstr "" + +#: .././config.py:8656 +msgid "Generic video filter, for example:" +msgstr "" + +#: .././config.py:8674 +msgid "TRANSLATOR'S NOTE: Download options > Downloads > General" +msgstr "" + +#: .././config.py:8680 +msgid "Prefer HLS (HTTP Live Streaming)" +msgstr "" + +#: .././config.py:8687 +msgid "Prefer FFMpeg over native HLS downloader" +msgstr "" + +#: .././config.py:8694 +msgid "Include advertisements (experimental feature)" +msgstr "" + +#: .././config.py:8701 +msgid "Ignore errors and continue the download operation" +msgstr "" + +#: .././config.py:8708 +msgid "Abort video download if fragments are unavailable" +msgstr "" + +#: .././config.py:8715 +msgid "Number of retries" +msgstr "" + +#: .././config.py:8741 +msgid "Playlist options" +msgstr "" + +#: .././config.py:8747 +msgid "" +"Channels and playlists are handled in the same way, so these options can be " +"used with both" +msgstr "" + +#: .././config.py:8754 +msgid "Start downloading playlist from index" +msgstr "" + +#: .././config.py:8766 +msgid "Stop downloading playlist at index" +msgstr "" + +#: .././config.py:8778 +msgid "Download playlist range, in form START:STOP:STEP" +msgstr "" + +#: .././config.py:8790 +msgid "Abort operation after downloading this many videos" +msgstr "" + +#: .././config.py:8802 +msgid "Abort downloading the playlist if an error occurs" +msgstr "" + +#: .././config.py:8809 +msgid "Download playlist in reverse order" +msgstr "" + +#: .././config.py:8816 +msgid "Download playlist in random order" +msgstr "" + +#: .././config.py:8837 +msgid "Video size limit options" +msgstr "" + +#: .././config.py:8842 +msgid "Minimum file size for video downloads" +msgstr "" + +#: .././config.py:8860 +msgid "Maximum file size for video downloads" +msgstr "" + +#: .././config.py:8892 +msgid "Video views options" +msgstr "" + +#: .././config.py:8897 +msgid "Minimum number of views" +msgstr "" + +#: .././config.py:8909 +msgid "Maximum number of views" +msgstr "" + +#: .././config.py:8985 .././config.py:9939 .././config.py:9970 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > Name" +msgstr "" + +#: .././config.py:9017 .././config.py:9153 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > Files > " +"Cookies" +msgstr "" + +#: .././config.py:9023 +msgid "Select the cookie jar file" +msgstr "" + +#: .././config.py:9159 +msgid "Select the browser profile" +msgstr "" + +#: .././config.py:9259 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > " +"Advanced > Configurations" +msgstr "" + +#: .././config.py:9284 +msgid "Could not save the downloader's configuration file" +msgstr "" + +#: .././config.py:9295 +msgid "Downloader's configuration file saved" +msgstr "" + +#: .././config.py:9619 .././config.py:9762 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > Formats " +"> Preferred" +msgstr "" + +#: .././config.py:9638 +msgid "" +"This option won't work unless the format is also added to the list of " +"preferred formats above" +msgstr "" + +#: .././config.py:9781 +msgid "Unrecognised extractor code" +msgstr "" + +#: .././config.py:9879 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > " +"Advanced > .netrc" +msgstr "" + +#: .././config.py:9904 +msgid "Could not save the .netrc file" +msgstr "" + +#: .././config.py:9921 +msgid ".netrc file saved" +msgstr "" + +#: .././config.py:9989 +msgid "" +"Fewer download options will be visible when you click the 'Apply' or 'Reset' " +"buttons (or when you close and then re-open the window)" +msgstr "" + +#: .././config.py:9999 +msgid "Show advanced download options (when window re-opens)" +msgstr "" + +#: .././config.py:10012 +msgid "" +"More download options will be visible when you click the 'Apply' or 'Reset' " +"buttons (or when you close and then re-open the window)" +msgstr "" + +#: .././config.py:10022 +msgid "Hide advanced download options (when window re-opens)" +msgstr "" + +#: .././config.py:10491 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Download options > Files > " +"Paths" +msgstr "" + +#: .././config.py:10497 +msgid "Select the output folder" +msgstr "" + +#: .././config.py:10499 +msgid "Select the output directory" +msgstr "" + +#: .././config.py:10550 +msgid "" +"TRANSLATOR'S NOTE: FFmpeg options window starts here. In the main window, in " +"the Videos tab, right-click a video and select Special > Process with " +"FFmpeg..." +msgstr "" + +#: .././config.py:10555 +msgid "FFmpeg options" +msgstr "" + +#. Replace the 'OK' button with a 'Process files' button +#: .././config.py:10908 .././config.py:14203 +msgid "Process files" +msgstr "" + +#: .././config.py:10910 .././config.py:14205 +msgid "Process the files with FFmpeg" +msgstr "" + +#: .././config.py:10923 +msgid "TRANSLATOR'S NOTE: FFmpeg options > Name" +msgstr "" + +#: .././config.py:10930 +msgid "Name for these FFmpeg options" +msgstr "" + +#: .././config.py:10952 +msgid "Extra command line options (e.g. --help)" +msgstr "" + +#: .././config.py:10957 +msgid "Use these options exclusively" +msgstr "" + +#: .././config.py:10969 +msgid "System command, based on all FFmpeg options in this window:" +msgstr "" + +#: .././config.py:11000 +msgid "Show fewer FFmpeg options" +msgstr "" + +#: .././config.py:11002 +msgid "Show more FFmpeg options" +msgstr "" + +#: .././config.py:11012 +msgid "Import current FFmpeg options into this window" +msgstr "" + +#: .././config.py:11027 +msgid "Completely reset all FFmpeg options to their default values" +msgstr "" + +#: .././config.py:11041 +msgid "TRANSLATOR'S NOTE: FFmpeg options > File" +msgstr "" + +#: .././config.py:11047 +msgid "Add to end of filename:" +msgstr "" + +#: .././config.py:11057 +msgid "If regex matches filename:" +msgstr "" + +#: .././config.py:11071 +msgid "...then apply substitution:" +msgstr "" + +#: .././config.py:11084 +msgid "" +"If the video/audio file is renamed, also rename the thumbnail (but not vice-" +"versa)" +msgstr "" + +#: .././config.py:11095 +msgid "Change file extension:" +msgstr "" + +#: .././config.py:11109 +msgid "After changing the file extension, delete the original file" +msgstr "" + +#: .././config.py:11181 +msgid "" +"TRANSLATOR'S NOTE: FFmpeg options > Settings (to make hidden tabs visible, " +"click the 'Show more FFmpeg options' button in the Name tab" +msgstr "" + +#: .././config.py:11186 +msgid "_Settings" +msgstr "" + +#: .././config.py:11199 +msgid "Downloaded video/audio" +msgstr "" + +#: .././config.py:11208 +msgid "with audio" +msgstr "" + +#: .././config.py:11221 .././config.py:11298 .././config.py:12836 +msgid "Thumbnail" +msgstr "" + +#: .././config.py:11233 +msgid "Output" +msgstr "" + +#: .././config.py:11262 +msgid "Video clip" +msgstr "" + +#: .././config.py:11274 +msgid "Video slice" +msgstr "" + +#: .././config.py:11286 +msgid "Merge video/audio" +msgstr "" + +#: .././config.py:11396 +msgid "Audio bitrate" +msgstr "" + +#: .././config.py:11410 +msgid "How to set the quality" +msgstr "" + +#: .././config.py:11415 +msgid "" +"FFmpeg always encodes according to a Rate Factor that specifies the quality " +"of the result." +msgstr "" + +#: .././config.py:11418 +msgid "" +"Instead of directly specifying the Rate Factor, an average bit rate can be " +"specified. FFmpeg will then determine the optimal Rate Factor in a first " +"pass." +msgstr "" + +#: .././config.py:11422 +msgid "" +"In fact the first pass is only used for determining the Rate Factor, no " +"other data is carried over into the second pass." +msgstr "" + +#: .././config.py:11425 +msgid "" +"Specifying an average bitrate but running only one pass is possible, but not " +"recommended. FFmpeg would then encode the beginning of the video with a " +"random Rate Factor and then change it near the end of the video to " +"eventually reach the target bitrate." +msgstr "" +"可以指定平均位元速率但僅運行一次,但不建議。然後,FFmpeg 將使用隨機速率因子對" +"影片的開頭進行編碼,其後在影片末尾附近對其進行變更以最終達到目標位元速率。" + +#: .././config.py:11438 +msgid "Manual rate factor" +msgstr "" + +#: .././config.py:11447 +msgid "Determine from target bitrate (2-Pass)" +msgstr "" + +#: .././config.py:11457 +msgid "Rate factor" +msgstr "" + +#: .././config.py:11466 +msgid "Lossless" +msgstr "" + +#: .././config.py:11466 +msgid "Large file" +msgstr "" + +#: .././config.py:11488 +msgid "Bad quality" +msgstr "" + +#: .././config.py:11488 +msgid "Small file" +msgstr "" + +#: .././config.py:11495 +msgid "Name of dummy file" +msgstr "" + +#: .././config.py:11499 +msgid "A dummy file is created during the first pass." +msgstr "" + +#: .././config.py:11503 +msgid "Use the output file" +msgstr "" + +#: .././config.py:11504 +msgid "Dummy" +msgstr "" + +#: .././config.py:11505 +msgid "/dev/null (Linux)" +msgstr "" + +#: .././config.py:11506 +msgid "NUL (MS Windows)" +msgstr "" + +#: .././config.py:11518 +msgid "Patience preset" +msgstr "" + +#: .././config.py:11523 +msgid "Ultra fast" +msgstr "" + +#: .././config.py:11524 +msgid "Super fast" +msgstr "" + +#: .././config.py:11525 +msgid "Very fast" +msgstr "" + +#: .././config.py:11526 .././config.py:11624 +msgid "Faster" +msgstr "" + +#: .././config.py:11527 +msgid "Fast" +msgstr "" + +#: .././config.py:11528 +msgid "Medium (default)" +msgstr "" + +#: .././config.py:11529 +#, python-format +msgid "Slow (file about 5-10% smaller than medium)" +msgstr "" + +#: .././config.py:11530 +#, python-format +msgid "Slower (file about 15% smaller than medium)" +msgstr "" + +#: .././config.py:11531 +#, python-format +msgid "Very slow (file about 17% smaller than medium)" +msgstr "" + +#: .././config.py:11542 +msgid "GPU encoding" +msgstr "" + +#: .././config.py:11558 +msgid "Hardware acceleration" +msgstr "" + +#: .././config.py:11618 +msgid "Palette:" +msgstr "" + +#: .././config.py:11625 +msgid "Uses dithering to a standard palette provided by FFmpeg" +msgstr "" + +#: .././config.py:11626 +msgid "Can cause dithering artefacts and slight banding" +msgstr "" + +#: .././config.py:11635 +msgid "Better" +msgstr "" + +#: .././config.py:11636 +msgid "Determines an optimized palette for the video" +msgstr "" + +#: .././config.py:11637 +msgid "Uses two passes and a temporary file for the palette" +msgstr "" + +#: .././config.py:11692 .././config.py:12336 +msgid "Split videos using their own timestamps" +msgstr "" + +#: .././config.py:11701 .././config.py:12347 +msgid "Split videos using these timestamps" +msgstr "" + +#: .././config.py:11806 .././config.py:12454 .././config.py:15211 +msgid "Add timestamp" +msgstr "" + +#: .././config.py:11877 .././config.py:12547 +msgid "Use the videos' own slice data" +msgstr "" + +#: .././config.py:11886 .././config.py:12558 +msgid "Use this slice data" +msgstr "" + +#: .././config.py:12017 +msgid "Delete sliuce" +msgstr "" + +#: .././config.py:12131 +msgid "" +"This merges a video and audio file with the same name into a single video " +"file,\n" +"using the extension specified in the File tab" +msgstr "" + +#: .././config.py:12172 +msgid "The thumbnail's format can be changed in the File tab" +msgstr "" + +#: .././config.py:12188 +msgid "TRANSLATOR'S NOTE: FFmpeg options > Optimisations" +msgstr "" + +#: .././config.py:12191 +msgid "_Optimisations" +msgstr "" + +#: .././config.py:12196 +msgid "" +"Optimise for fast seeking (shorter keyframe interval, about 10% larger file)" +msgstr "" + +#: .././config.py:12204 +msgid "Input video is a high-quality movie" +msgstr "" + +#: .././config.py:12210 +msgid "Input video is an animated movie" +msgstr "" + +#: .././config.py:12216 +msgid "Input video contains film grain" +msgstr "" + +#: .././config.py:12222 +msgid "Input video is an image slideshow" +msgstr "" + +#: .././config.py:12228 +msgid "Optimise for really weak CPU playback devices" +msgstr "" + +#: .././config.py:12235 +msgid "Optimise for really old devices (requires rate factor above 0)" +msgstr "" + +#: .././config.py:12246 +msgid "" +"Move headers to beginning of file (so it can play while still downloading)" +msgstr "" + +#: .././config.py:12254 +msgid "Fast encoding and low latency streaming" +msgstr "" + +#: .././config.py:12260 +msgid "Limit bitrate (Mbit/s)" +msgstr "" + +#: .././config.py:12277 +msgid "Assuming a receiving buffer (seconds)" +msgstr "" + +#: .././config.py:12311 +msgid "TRANSLATOR'S NOTE: FFmpeg options > Clips" +msgstr "" + +#: .././config.py:12326 +msgid "Split the video(s) to create video clips" +msgstr "" + +#: .././config.py:12527 +msgid "TRANSLATOR'S NOTE: FFmpeg options > Slices" +msgstr "" + +#: .././config.py:12530 .././config.py:15304 +msgid "_Slices" +msgstr "" + +#: .././config.py:12537 +msgid "Remove slices from the video(s)" +msgstr "" + +#: .././config.py:12809 +msgid "TRANSLATOR'S NOTE: FFmpeg options > Videos" +msgstr "" + +#: .././config.py:12817 +msgid "List of videos to be processed" +msgstr "" + +#: .././config.py:12879 +msgid "Show video properties and timestamps" +msgstr "" + +#: .././config.py:12888 +msgid "Remove video from list" +msgstr "" + +#: .././config.py:13032 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: FFmpeg options > Slices" +msgstr "" + +#: .././config.py:13159 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: FFmpeg options > Clips" +msgstr "" + +#: .././config.py:13386 .././config.py:13787 .././config.py:13818 +msgid "TRANSLATOR'S NOTE: Dialogue window, generated by: FFmpeg options > Name" +msgstr "" + +#: .././config.py:13842 +msgid "" +"Fewer FFmpeg options will be visible when you click the 'Apply' or 'Reset' " +"buttons (or when you close and then re-open the window)" +msgstr "" + +#: .././config.py:13852 +msgid "Show more FFmpeg options (when window re-opens)" +msgstr "" + +#: .././config.py:13869 +msgid "" +"More FFmpeg options will be visible when you click the 'Apply' or 'Reset' " +"buttons (or when you close and then re-open the window)" +msgstr "" + +#: .././config.py:13879 +msgid "Show fewer FFmpeg options (when window re-opens)" +msgstr "" + +#: .././config.py:14480 +msgid "" +"TRANSLATOR'S NOTE: Video properties window starts here. In the main window, " +"in the Videos tab, right-click a video and select Show video > Properties..." +msgstr "" + +#: .././config.py:14643 +msgid "TRANSLATOR'S NOTE: Video properties > General" +msgstr "" + +#: .././config.py:14651 .././config.py:17090 .././config.py:18139 +#: .././config.py:18788 +msgid "General properties" +msgstr "" + +#: .././config.py:14701 +msgid "Set the file (if this is the wrong one)" +msgstr "" + +#: .././config.py:14709 +msgid "Metadata file" +msgstr "" + +#: .././config.py:14748 +msgid "Update database using the video's metadata file" +msgstr "" + +#: .././config.py:14759 +msgid "Video downloaded" +msgstr "" + +#: .././config.py:14766 +msgid "Video unwatched" +msgstr "" + +#: .././config.py:14773 +msgid "Video has been split from an original" +msgstr "" + +#: .././config.py:14780 +msgid "Video is archived" +msgstr "" + +#: .././config.py:14787 +msgid "Video is bookmarked" +msgstr "" + +#: .././config.py:14794 +msgid "Video is favourite" +msgstr "" + +#: .././config.py:14801 +msgid "Video is in waiting list" +msgstr "" + +#: .././config.py:14808 +msgid "Video is blocked/censored/age-restricted" +msgstr "" + +#: .././config.py:14815 +msgid "Always simulate download of this video" +msgstr "" + +#: .././config.py:14880 +msgid "Receive time" +msgstr "" + +#: .././config.py:14894 +msgid "Subtitles" +msgstr "" + +#: .././config.py:14922 +msgid "TRANSLATOR'S NOTE: Video properties > Live" +msgstr "" + +#: .././config.py:14930 +msgid "Livestream properties" +msgstr "" + +#: .././config.py:14935 +msgid "Livestream status" +msgstr "" + +#: .././config.py:14946 +msgid "Waiting to start" +msgstr "" + +#: .././config.py:14950 +msgid "Livestream has finished" +msgstr "" + +#: .././config.py:14952 +msgid "Not a livestream" +msgstr "" + +#: .././config.py:14955 +msgid "Livestream message" +msgstr "" + +#: .././config.py:14970 +msgid "Video is pre-recorded" +msgstr "" + +#: .././config.py:14982 +msgid "Livestream actions" +msgstr "" + +#: .././config.py:14989 +msgid "When the livestream starts, show a desktop notification" +msgstr "" + +#: .././config.py:14998 +msgid "When the livestream starts, play an alarm" +msgstr "" + +#: .././config.py:15008 +msgid "When the livestream starts, open it in the system's web browser" +msgstr "" + +#: .././config.py:15020 +msgid "When the livestream starts, begin downloading it immediately" +msgstr "" + +#: .././config.py:15031 .././config.py:25593 +msgid "When a livestream stops, download it (overwriting any earlier file)" +msgstr "" + +#: .././config.py:15048 +msgid "TRANSLATOR'S NOTE: Video properties > Description" +msgstr "" + +#: .././config.py:15051 +msgid "_Description" +msgstr "" + +#: .././config.py:15056 +msgid "Video description" +msgstr "" + +#: .././config.py:15069 +msgid "Update from the description file, and set the line length to:" +msgstr "" + +#: .././config.py:15089 +msgid "Clear the description (does not modify the file)" +msgstr "" + +#: .././config.py:15117 +msgid "TRANSLATOR'S NOTE: Video properties > Timestamps" +msgstr "" + +#: .././config.py:15120 +msgid "_Timestamps" +msgstr "" + +#: .././config.py:15125 .././config.py:25688 +msgid "Timestamps" +msgstr "" + +#: .././config.py:15131 +msgid "Timestamps can be used to download or create video clips" +msgstr "" + +#: .././config.py:15301 +msgid "TRANSLATOR'S NOTE: Video properties > Slices" +msgstr "" + +#: .././config.py:15309 +msgid "Video slices" +msgstr "" + +#: .././config.py:15315 +msgid "SponsorBlock provides a list of slices that can be removed from a video" +msgstr "" + +#: .././config.py:15498 +msgid "TRANSLATOR'S NOTE: Video properties > Comments" +msgstr "" + +#: .././config.py:15501 +msgid "_Comments" +msgstr "" + +#: .././config.py:15512 +msgid "Total comments:" +msgstr "" + +#: .././config.py:15551 +msgid "Show formatted list" +msgstr "" + +#: .././config.py:15562 +msgid "Show comment times as text" +msgstr "" + +#: .././config.py:15572 +msgid "Show comment timestamps" +msgstr "" + +#: .././config.py:15610 .././config.py:15722 +msgid "Author" +msgstr "" + +#: .././config.py:15617 .././config.py:15722 +msgid "Comment" +msgstr "" + +#: .././config.py:15625 .././config.py:15723 +msgid "Uploader" +msgstr "" + +#: .././config.py:15671 +msgid "Update from the metadata file" +msgstr "" + +#: .././config.py:15693 +msgid "Clear comments (does not modify the file)" +msgstr "" + +#: .././config.py:15722 +msgid "Likes" +msgstr "" + +#: .././config.py:16120 +msgid "TRANSLATOR'S NOTE: Video properties > Errors / Warnings" +msgstr "" + +#: .././config.py:16127 .././config.py:17488 +msgid "Errors / Warnings" +msgstr "" + +#: .././config.py:16133 +msgid "Error messages produced the last time this video was checked/downloaded" +msgstr "" + +#: .././config.py:16149 +msgid "" +"Warning messages produced the last time this video was checked/downloaded" +msgstr "" + +#: .././config.py:16194 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Video properties > Slices" +msgstr "" + +#: .././config.py:16284 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Video properties > " +"Timestamps" +msgstr "" + +#: .././config.py:16692 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Video properties > General" +msgstr "" + +#: .././config.py:16698 +msgid "Select the correct video/audio file" +msgstr "" + +#: .././config.py:16724 +msgid "" +"The replacement video/audio file must be in the same channel, playlist or " +"folder" +msgstr "" + +#: .././config.py:16742 +msgid "You must select a valid video/audio file" +msgstr "" + +#: .././config.py:16927 +msgid "" +"TRANSLATOR'S NOTE: Channel/playlist properties window starts here. In the " +"main window, in the Videos tab, right-click a channel or playlist and select " +"Show > Channel properties... of Show > Playlist properties..." +msgstr "" + +#: .././config.py:16935 +msgid "Channel properties" +msgstr "" + +#: .././config.py:16938 +msgid "Playlist properties" +msgstr "" + +#: .././config.py:17083 +msgid "TRANSLATOR'S NOTE: Channel properties > General" +msgstr "" + +#: .././config.py:17105 +msgid "Don't add videos in this channel to Tartube's database" +msgstr "" + +#: .././config.py:17109 +msgid "Don't add videos in this playlist to Tartube's database" +msgstr "" + +#: .././config.py:17120 +msgid "Always simulate download of videos in this channel" +msgstr "" + +#: .././config.py:17122 +msgid "Always simulate download of videos in this playlist" +msgstr "" + +#: .././config.py:17132 +msgid "Disable checking/downloading for this channel" +msgstr "" + +#: .././config.py:17134 +msgid "Disable checking/downloading for this playlist" +msgstr "" + +#: .././config.py:17144 +msgid "This channel is marked as a favourite" +msgstr "" + +#: .././config.py:17146 +msgid "This playlist is marked as a favourite" +msgstr "" + +#: .././config.py:17156 +msgid "Total videos" +msgstr "" + +#: .././config.py:17180 +msgid "Favourite videos" +msgstr "" + +#: .././config.py:17192 +msgid "Downloaded videos" +msgstr "" + +#: .././config.py:17215 +msgid "" +"TRANSLATOR'S NOTE: Channel properties > Associated playlists. Only visible " +"for the compatible websites (e.g. YouTube)" +msgstr "" + +#: .././config.py:17219 +msgid "Associated _Playlists" +msgstr "" + +#: .././config.py:17224 +msgid "Associated playlists" +msgstr "" + +#: .././config.py:17230 +msgid "" +"When a video is associated with a playlist, the playlist's ID is stored here" +msgstr "" + +#: .././config.py:17251 +msgid "Playlist Title" +msgstr "" + +#: .././config.py:17270 +msgid "Set the channel as the download destination" +msgstr "" + +#: .././config.py:17277 +msgid "Add selected playlist" +msgstr "" + +#: .././config.py:17286 +msgid "Add all playlists" +msgstr "" + +#: .././config.py:17294 +msgid "Download preferences" +msgstr "" + +#. (This button works even if mainapp.TartubeApp.store_playlist_id_flag +#. is False) +#: .././config.py:17310 +msgid "Reset list using metadata file" +msgstr "" + +#: .././config.py:17341 +msgid "Unnamed playlist" +msgstr "" + +#: .././config.py:17358 +msgid "TRANSLATOR'S NOTE: Channel properties > History" +msgstr "" + +#: .././config.py:17361 .././config.py:18390 .././config.py:22411 +msgid "_History" +msgstr "" + +#: .././config.py:17366 .././config.py:18395 .././config.py:22418 +msgid "Download history" +msgstr "" + +#: .././config.py:17380 .././config.py:18409 .././config.py:22432 +msgid "Draw" +msgstr "" + +#: .././config.py:17409 .././config.py:17909 +msgid "TRANSLATOR'S NOTE: Channel properties > RSS feed" +msgstr "" + +#: .././config.py:17412 +msgid "_RSS feed" +msgstr "" + +#: .././config.py:17417 +msgid "RSS feed (used to detect livestreams)" +msgstr "" + +#: .././config.py:17423 +msgid "" +"If Tartube cannot detect the channel's RSS feed, you can enter the URL here" +msgstr "" + +#: .././config.py:17428 +msgid "" +"If Tartube cannot detect the playlist's RSS feed, you can enter the URL here" +msgstr "" + +#: .././config.py:17447 +msgid "Open in web browser" +msgstr "" + +#: .././config.py:17452 +msgid "Set to default feed" +msgstr "" + +#: .././config.py:17459 +msgid "Reset feed" +msgstr "" + +#: .././config.py:17466 +msgid "" +"N.B. The Set to default feed button won't work if the RSS feed was " +"obtained from video metadata" +msgstr "" + +#: .././config.py:17481 +msgid "TRANSLATOR'S NOTE: Channel properties > Errors / Warnings" +msgstr "" + +#: .././config.py:17494 +msgid "" +"Error messages produced the last time this channel was checked/downloaded" +msgstr "" + +#: .././config.py:17499 +msgid "" +"Error messages produced the last time this playlist was checked/downloaded" +msgstr "" + +#: .././config.py:17518 +msgid "" +"Warning messages produced the last time this channel was checked/downloaded" +msgstr "" + +#: .././config.py:17523 +msgid "" +"Warning messages produced the last time this playlist was checked/downloaded" +msgstr "" + +#: .././config.py:17573 .././config.py:17704 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: Channel properties > " +"Associated playlists" +msgstr "" + +#: .././config.py:17600 +#, python-brace-format +msgid "The name '{0}' is already in use" +msgstr "" + +#: .././config.py:17619 +msgid "Unable to extrapolate the URL for this playlist" +msgstr "" + +#: .././config.py:17634 +msgid "The playlist is already in Tartube's database" +msgstr "" + +#: .././config.py:17657 +msgid "Unable to create new playlist" +msgstr "" + +#: .././config.py:17678 +#, python-brace-format +msgid "Added playlist '{0}' to Tartube's database" +msgstr "" + +#. Show confirmation +#: .././config.py:17789 +#, python-brace-format +msgid "Playlists added: {0}" +msgstr "" + +#: .././config.py:17790 +#, python-brace-format +msgid "Playlists not added: {0}" +msgstr "" + +#: .././config.py:17931 +msgid "Could not set the RSS feed" +msgstr "" + +#: .././config.py:17985 +msgid "" +"TRANSLATOR'S NOTE: Folder properties window starts here. In the main window, " +"in the Videos tab, right-click a folder and select Show > Folder " +"properties..." +msgstr "" + +#: .././config.py:17990 +msgid "Folder properties" +msgstr "" + +#: .././config.py:18132 +msgid "TRANSLATOR'S NOTE: Folder properties > General" +msgstr "" + +#: .././config.py:18152 +msgid "Don't add videos to Tartube's database" +msgstr "" + +#: .././config.py:18159 +msgid "Always simulate download of videos" +msgstr "" + +#: .././config.py:18166 +msgid "Disable checking/downloading" +msgstr "" + +#: .././config.py:18173 +msgid "This folder is marked as a favourite" +msgstr "" + +#: .././config.py:18180 +msgid "This folder is hidden" +msgstr "" + +#: .././config.py:18187 +msgid "This folder can't be deleted by the user" +msgstr "" + +#: .././config.py:18194 +msgid "This is a system-controlled folder" +msgstr "" + +#: .././config.py:18201 +msgid "All contents deleted when Tartube shuts down" +msgstr "" + +#: .././config.py:18208 +msgid "Restrictions:" +msgstr "" + +#: .././config.py:18219 +msgid "Can only contain videos" +msgstr "" + +#: .././config.py:18221 +msgid "Can contain folders and videos" +msgstr "" + +#: .././config.py:18223 +msgid "Can contain anything" +msgstr "" + +#: .././config.py:18234 +msgid "TRANSLATOR'S NOTE: Folder properties > Statistics" +msgstr "" + +#: .././config.py:18237 .././config.py:22231 +msgid "_Statistics" +msgstr "" + +#: .././config.py:18242 .././config.py:22238 +msgid "Statistics" +msgstr "" + +#: .././config.py:18263 .././config.py:22259 +msgid "Downloaded" +msgstr "" + +#: .././config.py:18307 +msgid "Sub-folders" +msgstr "" + +#: .././config.py:18329 +msgid "Recalculate" +msgstr "" + +#: .././config.py:18387 +msgid "TRANSLATOR'S NOTE: Folder properties > History" +msgstr "" + +#: .././config.py:18438 +msgid "" +"TRANSLATOR'S NOTE: Folder properties > Recent videos. Only visible for the " +"'Recent videos' folder" +msgstr "" + +#: .././config.py:18442 +msgid "_Recent Videos" +msgstr "" + +#: .././config.py:18447 +msgid "Recent videos" +msgstr "" + +#: .././config.py:18453 +msgid "" +"When videos are checked/downloaded, older downloaded videos are removed from " +"this folder" +msgstr "" + +#: .././config.py:18470 +msgid "Remove downloaded videos after days" +msgstr "" + +#: .././config.py:18628 +msgid "" +"TRANSLATOR'S NOTE: Scheduled downloads window starts here. In the menu, " +"click Edit > System preferences... Scheduling > Start. In the 'Scheduled " +"download name' box, add a name. Then click the Add button" +msgstr "" + +#: .././config.py:18634 +msgid "Scheduled download" +msgstr "" + +#: .././config.py:18780 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > General" +msgstr "" + +#: .././config.py:18793 .././config.py:23730 +msgid "Scheduled download name" +msgstr "" + +#: .././config.py:18805 +msgid "Download mode" +msgstr "" + +#: .././config.py:18810 +msgid "Check channels, playlist and folders" +msgstr "" + +#: .././config.py:18811 +msgid "Download channels, playlists and folders" +msgstr "" + +#: .././config.py:18812 +msgid "Perform a custom download" +msgstr "" + +#: .././config.py:18824 +msgid "Custom download name" +msgstr "" + +#: .././config.py:18882 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Start" +msgstr "" + +#: .././config.py:18885 .././config.py:23671 +msgid "_Start" +msgstr "" + +#: .././config.py:18890 +msgid "Start conditions" +msgstr "" + +#: .././config.py:18895 .././config.py:23696 +msgid "Start mode" +msgstr "" + +#: .././config.py:18900 +msgid "Perform this download at regular intervals" +msgstr "" + +#: .././config.py:18901 +msgid "Perform this download when Tartube starts" +msgstr "" + +#: .././config.py:18903 +msgid "Perform this download some time after Tartube starts" +msgstr "" + +#: .././config.py:18906 +msgid "Perform this download at specified times" +msgstr "" + +#: .././config.py:18907 +msgid "Disable this scheduled download" +msgstr "" + +#: .././config.py:18981 +msgid "Minutes" +msgstr "" + +#: .././config.py:19108 +msgid "Interval time" +msgstr "" + +#: .././config.py:19118 +msgid "Start times" +msgstr "" + +#: .././config.py:19160 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Stop" +msgstr "" + +#: .././config.py:19163 .././config.py:24317 +msgid "_Stop" +msgstr "" + +#: .././config.py:19168 +msgid "Stop conditions" +msgstr "" + +#: .././config.py:19174 +msgid "" +"N.B. When this setting is triggered, the entire download operation stops" +msgstr "" + +#: .././config.py:19181 +msgid "Stop download operation after this much time" +msgstr "" + +#: .././config.py:19232 +msgid "Stop download operation after this many videos" +msgstr "" + +#: .././config.py:19261 +msgid "Stop download operation after this much disk space" +msgstr "" + +#: .././config.py:19307 .././config.py:24007 +msgid "" +"N.B. Disk space is estimated. This setting does not apply to simulated " +"downloads" +msgstr "" + +#: .././config.py:19322 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Conflicts" +msgstr "" + +#: .././config.py:19325 +msgid "_Conflicts" +msgstr "" + +#: .././config.py:19329 +msgid "Conflict settings" +msgstr "" + +#: .././config.py:19334 +msgid "If another scheduled download is running:" +msgstr "" + +#: .././config.py:19341 +msgid "Add channels, playlists and folders to the end of the queue" +msgstr "" + +#: .././config.py:19347 +msgid "Add channels, playlists and folders to the beginning of the queue" +msgstr "" + +#: .././config.py:19354 +msgid "Do nothing, just wait until the next scheduled download time" +msgstr "" + +#: .././config.py:19369 +msgid "This scheduled download takes priority over others" +msgstr "" + +#: .././config.py:19372 +msgid "Other scheduled downloads won't start until this one is finished" +msgstr "" + +#: .././config.py:19388 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Media" +msgstr "" + +#: .././config.py:19396 +msgid "Media to download" +msgstr "" + +#: .././config.py:19402 +msgid "Check/download everything" +msgstr "" + +#: .././config.py:19410 +msgid "Only check/download the media below" +msgstr "" + +#: .././config.py:19424 +msgid "" +"Hint: you can drag and drop channels, playlists and your own folders here" +msgstr "" + +#: .././config.py:19564 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Limits" +msgstr "" + +#: .././config.py:19567 .././config.py:24070 +msgid "_Limits" +msgstr "" + +#: .././config.py:19572 .././config.py:24077 +msgid "Performance limits" +msgstr "" + +#: .././config.py:19577 .././config.py:24082 +msgid "Limits are applied when you start downloading a video/channel/playlist" +msgstr "" + +#: .././config.py:19583 +msgid "" +"These limits override the default and alternative limits specified elsewhere" +msgstr "" + +#: .././config.py:19589 .././config.py:24088 .././config.py:24159 +msgid "Limit simultaneous downloads to" +msgstr "" + +#: .././config.py:19604 .././config.py:24106 .././config.py:24181 +msgid "Limit download speed to" +msgstr "" + +#: .././config.py:19632 +msgid "TRANSLATOR'S NOTE: Scheduled downloads > Other" +msgstr "" + +#: .././config.py:19635 +msgid "_Other" +msgstr "" + +#: .././config.py:19639 +msgid "Other settings" +msgstr "其他設定" + +#: .././config.py:19645 +msgid "" +"Ignore time-saving preferences, and check/download the whole channel/" +"playlist/folder" +msgstr "" + +#: .././config.py:19653 +msgid "Shut down Tartube when this scheduled download has finished" +msgstr "" + +#: .././config.py:20230 +msgid "" +"TRANSLATOR'S NOTE: System preferences window starts here. In the menu, click " +"Edit > System preferences..." +msgstr "" + +#: .././config.py:20574 +msgid "TRANSLATOR'S NOTE: System preferences > General" +msgstr "" + +#: .././config.py:20602 +msgid "TRANSLATOR'S NOTE: System preferences > General > Application" +msgstr "" + +#: .././config.py:20609 +msgid "_Application" +msgstr "" + +#: .././config.py:20616 +msgid "Application details" +msgstr "" + +#: .././config.py:20621 +msgid "Version" +msgstr "" + +#: .././config.py:20639 +msgid "Locale override" +msgstr "" + +#: .././config.py:20648 +msgid "Use your system locale" +msgstr "" + +#: .././config.py:20656 +msgid "Current locale" +msgstr "" + +#: .././config.py:20665 +msgid "Unrecognised locale" +msgstr "" + +#: .././config.py:20735 +msgid "Preferences mode" +msgstr "" + +#: .././config.py:20762 +msgid "Hide advanced preferences" +msgstr "" + +#: .././config.py:20764 +msgid "Show advanced preferences" +msgstr "" + +#: .././config.py:20782 +msgid "TRANSLATOR'S NOTE: System preferences > General > Modules" +msgstr "" + +#: .././config.py:20785 +msgid "_Modules" +msgstr "" + +#: .././config.py:20790 +msgid "Module availability" +msgstr "" + +#: .././config.py:20796 +msgid "feedparser module is available (required for detecting livestreams)" +msgstr "" + +#: .././config.py:20805 +msgid "matplotlib module is available (draws graphs)" +msgstr "" + +#: .././config.py:20813 +msgid "moviepy module is available (finds the length of videos, if unknown)" +msgstr "" + +#: .././config.py:20823 +msgid "playsound module is available (sound an alarm when a livestream starts)" +msgstr "" + +#: .././config.py:20833 +msgid "" +"XDG module is available (saves the config file in the standard location)" +msgstr "" + +#: .././config.py:20843 +msgid "" +"Notify module is available (shows desktop notifications; Linux/*BSD only)" +msgstr "" + +#: .././config.py:20853 +msgid "Module preferences" +msgstr "" + +#: .././config.py:20859 +msgid "" +"Use 'moviepy' module to get a video's duration, if not known (may be slow)" +msgstr "" + +#: .././config.py:20871 +msgid "Timeout applied when moviepy checks a video file" +msgstr "" + +#: .././config.py:20896 +msgid "TRANSLATOR'S NOTE: System preferences > Files > xxx" +msgstr "" + +#: .././config.py:20936 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Device" +msgstr "" + +#: .././config.py:20939 +msgid "_Device" +msgstr "" + +#: .././config.py:20944 +msgid "Device preferences" +msgstr "" + +#: .././config.py:20949 +msgid "Size of device" +msgstr "" + +#: .././config.py:20966 +msgid "Free space on device" +msgstr "" + +#: .././config.py:20984 +msgid "" +"Before checking/downloading videos, warn user if disk space is less than" +msgstr "" + +#: .././config.py:21009 +msgid "Halt downloads if disk space is less than" +msgstr "" + +#: .././config.py:21065 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Config" +msgstr "" + +#: .././config.py:21068 +msgid "_Config" +msgstr "" + +#: .././config.py:21072 +msgid "Configuration preferences" +msgstr "" + +#: .././config.py:21077 +msgid "Tartube configuration file loaded from" +msgstr "" + +#: .././config.py:21089 +msgid "Default location for Tartube configuration" +msgstr "" + +#: .././config.py:21101 +msgid "Alternative location for Tartube configuration" +msgstr "" + +#: .././config.py:21126 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Database" +msgstr "" + +#: .././config.py:21129 +msgid "D_atabase" +msgstr "" + +#: .././config.py:21134 +msgid "Database preferences" +msgstr "" + +#: .././config.py:21139 +msgid "Current data folder" +msgstr "" + +#: .././config.py:21152 +msgid "Current database" +msgstr "" + +#: .././config.py:21169 +msgid "Recent data folders" +msgstr "" + +#: .././config.py:21185 +msgid "Add new database" +msgstr "" + +#: .././config.py:21187 +msgid "Change to a different data folder" +msgstr "" + +#: .././config.py:21194 +msgid "Check and repair database" +msgstr "" + +#: .././config.py:21197 +msgid "Check for inconsistencies, and repair them" +msgstr "" + +#: .././config.py:21202 +msgid "Dump database to JSON" +msgstr "" + +#: .././config.py:21205 +msgid "Convert databases to JSON, even when Tartube can't load them" +msgstr "" + +#: .././config.py:21210 +msgid "Switch to this database" +msgstr "" + +#: .././config.py:21212 +msgid "Switch to the selected data folder" +msgstr "" + +#: .././config.py:21222 +msgid "Forget" +msgstr "" + +#: .././config.py:21225 +msgid "Remove the selected data folder from the list" +msgstr "" + +#: .././config.py:21235 +msgid "Forget all" +msgstr "" + +#: .././config.py:21238 +msgid "Forget every folder in this list (except the current one)" +msgstr "" + +#: .././config.py:21252 +msgid "Move the selected folder up the list" +msgstr "" + +#: .././config.py:21261 +msgid "Move the selected folder down the list" +msgstr "" + +#: .././config.py:21289 +msgid "" +"On startup, load the first database on the list (not the most recently-use " +"one)" +msgstr "" + +#: .././config.py:21299 +msgid "If one database is in use, try to load others" +msgstr "" + +#: .././config.py:21307 +msgid "New databases are added to this list" +msgstr "" + +#: .././config.py:21353 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Backups" +msgstr "" + +#: .././config.py:21356 +msgid "_Backups" +msgstr "" + +#: .././config.py:21361 +msgid "Backup preferences" +msgstr "" + +#: .././config.py:21366 +msgid "" +"When saving the database, Tartube makes a backup copy of its database file" +msgstr "" + +#: .././config.py:21374 +msgid "Delete the backup as soon as the database has been saved" +msgstr "" + +#: .././config.py:21381 +msgid "Keep the backup file, replacing any previous backup file" +msgstr "" + +#: .././config.py:21390 +msgid "Make a new backup file once per day" +msgstr "" + +#: .././config.py:21399 +msgid "Make a new backup file every time the database is saved" +msgstr "" + +#: .././config.py:21432 +msgid "Export preferences" +msgstr "" + +#: .././config.py:21437 +msgid "Separator used in CSV exports" +msgstr "" + +#: .././config.py:21472 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Videos" +msgstr "" + +#: .././config.py:21483 +msgid "Video matching preferences" +msgstr "" + +#: .././config.py:21488 +msgid "When matching videos on the filesystem:" +msgstr "" + +#: .././config.py:21494 +msgid "The video names must match exactly" +msgstr "" + +#: .././config.py:21501 +msgid "The first # characters must match exactly" +msgstr "" + +#: .././config.py:21515 +msgid "Ignore the last # characters; the remaining name must match exactly" +msgstr "" + +#: .././config.py:21553 +msgid "Video matching recommended preferences" +msgstr "" + +#: .././config.py:21559 +msgid "Check the video's original name and the downloaded file name" +msgstr "" + +#: .././config.py:21571 +msgid "" +"N.B. If disabled, custom file templates will interfere with video matching" +msgstr "" + +#: .././config.py:21591 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Delete" +msgstr "" + +#: .././config.py:21595 +msgid "D_elete" +msgstr "" + +#: .././config.py:21602 +msgid "Automatic video deletion/removal preferences" +msgstr "" + +#: .././config.py:21608 +msgid "" +"Deleted videos are re-downloaded without an archive file. See the Operations " +"> Archive tab" +msgstr "" + +#: .././config.py:21615 +msgid "Automatically delete downloaded videos" +msgstr "" + +#: .././config.py:21631 .././config.py:21655 .././formats.py:453 +msgid "days" +msgstr "" + +#: .././config.py:21637 +msgid "Remove downloaded videos from the database (but don't delete files)" +msgstr "" + +#: .././config.py:21660 +msgid "Only delete/remove videos which have been watched" +msgstr "" + +#: .././config.py:21672 +msgid "Delete/remove files:" +msgstr "" + +#: .././config.py:21678 +msgid "When the database is loaded" +msgstr "" + +#: .././config.py:21685 +msgid "After every download operation" +msgstr "" + +#: .././config.py:21729 +msgid "Manual video deletion/removal preferences" +msgstr "" + +#: .././config.py:21734 +msgid "Show dialogue window before removing video(s)" +msgstr "" + +#: .././config.py:21745 +msgid "When removing videos, remove all files from the filesystem" +msgstr "" + +#: .././config.py:21757 +msgid "Show dialogue window before removing channels/playlists/folders" +msgstr "" + +#: .././config.py:21771 +msgid "When removing containers, remove all files from the filesystem" +msgstr "" + +#: .././config.py:21797 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Update" +msgstr "" + +#: .././config.py:21808 +msgid "Update video descriptions" +msgstr "" + +#: .././config.py:21815 +msgid "These procedures might take a long time on a large database" +msgstr "" + +#: .././config.py:21822 +msgid "Update from description files, and set the line lengths to:" +msgstr "" + +#: .././config.py:21841 +msgid "Clear descriptions (does not modify the description files)" +msgstr "" + +#: .././config.py:21864 +msgid "Video timestamps" +msgstr "" + +#: .././config.py:21868 +msgid "Extract timestamps for all videos" +msgstr "" + +#: .././config.py:21876 +msgid "Remove timestamps from all videos" +msgstr "" + +#: .././config.py:21886 .././config.py:26055 +msgid "Video comments" +msgstr "" + +#: .././config.py:21890 +msgid "Extract comments for all videos" +msgstr "" + +#: .././config.py:21898 +msgid "Remove comments from all videos" +msgstr "" + +#: .././config.py:21908 +msgid "" +"Comments are extracted from each video's metadata file, so this procedure " +"may take a long time" +msgstr "" + +#: .././config.py:21928 +msgid "TRANSLATOR'S NOTE: System preferences > Files > URLs" +msgstr "" + +#: .././config.py:21932 +msgid "U_RLs" +msgstr "" + +#: .././config.py:21939 +msgid "Update channel/playlist URLs" +msgstr "" + +#: .././config.py:21944 +msgid "Confirm every change" +msgstr "" + +#: .././config.py:22027 +msgid "Pattern" +msgstr "" + +#: .././config.py:22038 +msgid "Substitution" +msgstr "" + +#: .././config.py:22049 +msgid "This pattern is a regex" +msgstr "" + +#: .././config.py:22061 +msgid "Search and replace text in the selected URLs" +msgstr "" + +#: .././config.py:22076 +msgid "Open URLs" +msgstr "" + +#: .././config.py:22164 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Temporary" +msgstr "" + +#: .././config.py:22174 +msgid "Temporary folder preferences" +msgstr "" + +#: .././config.py:22179 +msgid "Empty temporary folders when Tartube shuts down" +msgstr "" + +#: .././config.py:22188 +msgid "(N.B. Temporary folders are always emptied when Tartube starts up)" +msgstr "" + +#: .././config.py:22196 +msgid "Open temporary folders (on the desktop) when Tartube shuts down" +msgstr "" + +#: .././config.py:22227 +msgid "TRANSLATOR'S NOTE: System preferences > Files > Statistics" +msgstr "" + +#: .././config.py:22243 +msgid "The Tartube database contains:" +msgstr "" + +#: .././config.py:22303 +msgid "Custom folders" +msgstr "" + +#: .././config.py:22326 +msgid "Calculate" +msgstr "" + +#: .././config.py:22407 +msgid "TRANSLATOR'S NOTE: System preferences > Files > History" +msgstr "" + +#: .././config.py:22461 +msgid "TRANSLATOR'S NOTE: System preferences > Windows" +msgstr "" + +#. Add this tab... +#: .././config.py:22465 +msgid "_Windows" +msgstr "" + +#: .././config.py:22495 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Main Window" +msgstr "" + +#: .././config.py:22499 +msgid "_Main window" +msgstr "" + +#: .././config.py:22506 +msgid "Main window preferences" +msgstr "" + +#: .././config.py:22511 +msgid "Remember size of the main window" +msgstr "" + +#: .././config.py:22519 +msgid "Remember slider positions" +msgstr "" + +#: .././config.py:22528 +msgid "Reset both" +msgstr "" + +#: .././config.py:22544 +msgid "Don't show the main window toolbar" +msgstr "" + +#: .././config.py:22554 +msgid "Don't show labels in the main window toolbar" +msgstr "" + +#: .././config.py:22579 +msgid "" +"Replace stock icons with custom icons (in case stock icons are not visible)" +msgstr "" + +#: .././config.py:22591 +msgid "Show tooltips for videos, channels, playlists and folders" +msgstr "" + +#: .././config.py:22600 +msgid "Show errors/warnings in tooltips (but not in the Videos tab)" +msgstr "" + +#: .././config.py:22623 +msgid "Disable the download buttons in the toolbar and the Videos tab" +msgstr "" + +#: .././config.py:22633 +msgid "In the Progress tab, hide finished downloads" +msgstr "" + +#: .././config.py:22642 +msgid "Show downloads in reverse order" +msgstr "" + +#: .././config.py:22651 +msgid "In the Progress/Classic Mode tabs, remember the width of (some) columns" +msgstr "" + +#: .././config.py:22661 +msgid "When Tartube starts, automatically open the Classic Mode tab" +msgstr "" + +#: .././config.py:22677 +msgid "" +"In the Classic Mode tab, when adding URLs, remove duplicates rather than " +"retaining them" +msgstr "" + +#: .././config.py:22691 +msgid "" +"In the Errors/Warnings tab, don't reset the tab title when it is clicked" +msgstr "" + +#: .././config.py:22717 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Videos" +msgstr "" + +#: .././config.py:22725 +msgid "Video Index (left side of the Videos tab)" +msgstr "" + +#: .././config.py:22730 +msgid "Show a 'Custom download all' button" +msgstr "" + +#: .././config.py:22740 +msgid "While checking/downloading videos, show free disk space" +msgstr "" + +#: .././config.py:22751 +msgid "Allow each row to be marked for checking/downloading" +msgstr "" + +#: .././config.py:22762 +msgid "Show smaller icons" +msgstr "" + +#: .././config.py:22771 +msgid "" +"Show detailed statistics about the videos in each channel / playlist / folder" +msgstr "" + +#: .././config.py:22782 +msgid "" +"After clicking on a folder, automatically expand/collapse the tree around it" +msgstr "" + +#: .././config.py:22793 +msgid "Expand the whole tree, not just the level beneath the clicked folder" +msgstr "" + +#: .././config.py:22814 +msgid "Video Catalogue (right side of the Videos tab)" +msgstr "" + +#: .././config.py:22820 +msgid "Show 'today' and 'yesterday' as the date, when possible" +msgstr "" + +#: .././config.py:22828 +msgid "Show livestreams with a different background colour" +msgstr "" + +#: .././config.py:22836 +msgid "Use same background colours for livestream and debut videos" +msgstr "" + +#: .././config.py:22859 +msgid "Channel and playlist names are clickable (grid mode only)" +msgstr "" + +#: .././config.py:22867 +msgid "Show nicknames (not video file names)" +msgstr "" + +#: .././config.py:22888 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Drag" +msgstr "" + +#: .././config.py:22891 +msgid "_Drag" +msgstr "" + +#: .././config.py:22895 +msgid "Drag and drop preferences" +msgstr "" + +#: .././config.py:22901 +msgid "When dragging and dropping videos to an external application..." +msgstr "" + +#: .././config.py:22907 +msgid "Transfer the video's full file path" +msgstr "" + +#: .././config.py:22915 +msgid "Transfer the video's source URL" +msgstr "" + +#: .././config.py:22923 +msgid "Transfer the video's name" +msgstr "" + +#: .././config.py:22931 .././config.py:22993 +msgid "Transfer error/warning messages" +msgstr "" + +#: .././config.py:22939 +msgid "Transfer the thumbnail's full file path" +msgstr "" + +#: .././config.py:22947 .././config.py:23004 +msgid "Add a text separator before each item" +msgstr "" + +#: .././config.py:22956 +msgid "" +"When dragging and dropping messages from the Errors/Warnings tab to an " +"external application..." +msgstr "" + +#: .././config.py:22963 +msgid "Transfer the video/channel/playlist file path" +msgstr "" + +#: .././config.py:22971 +msgid "Transfer the video/channel/playlist URL" +msgstr "" + +#: .././config.py:22982 +msgid "Transfer the video/channel/playlist name" +msgstr "" + +#: .././config.py:23028 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Tray" +msgstr "" + +#: .././config.py:23032 +msgid "_Tray" +msgstr "" + +#: .././config.py:23038 +msgid "System tray preferences" +msgstr "" + +#: .././config.py:23043 +msgid "Show Tartube in the system tray" +msgstr "" + +#: .././config.py:23052 +msgid "Start Tartube in the system tray" +msgstr "" + +#: .././config.py:23063 +msgid "Close to the tray, rather than closing the application" +msgstr "最小化至系統匣,而非關閉程式" + +#: .././config.py:23075 +msgid "" +"After closing to the tray, restore the window's position (does not work on " +"Wayland)" +msgstr "" + +#: .././config.py:23118 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Dialogues" +msgstr "" + +#: .././config.py:23122 +msgid "D_ialogues" +msgstr "" + +#: .././config.py:23128 +msgid "Add media preferences" +msgstr "" + +#: .././config.py:23133 +msgid "When adding channels/playlists, keep the dialogue window open" +msgstr "" + +#: .././config.py:23143 +msgid "When the dialogue window opens, add URLs from the system clipboard" +msgstr "" + +#: .././config.py:23164 +msgid "When adding YouTube channels, remind the user to copy the correct URL" +msgstr "" + +#: .././config.py:23176 +msgid "Move media preferences" +msgstr "" + +#: .././config.py:23182 +msgid "" +"Prompt the user before moving channels/playlists/folders in the Video Index" +msgstr "" + +#: .././config.py:23193 +msgid "Prompt the user before moving videos in the Video Index" +msgstr "" + +#: .././config.py:23203 +msgid "After moving, switch to the destination in the Video Catalogue" +msgstr "" + +#: .././config.py:23215 +msgid "Debugging preferences" +msgstr "" + +#: .././config.py:23221 +msgid "" +"Temporarily disable message dialogue windows (display messages in terminal " +"instead)" +msgstr "" + +#: .././config.py:23233 +msgid "" +"N.B. Tartube shows a dialogue window after checking or downloading videos" +msgstr "" + +#: .././config.py:23241 +msgid "That dialogue window can be disabled in the Operations > Actions tab" +msgstr "" + +#: .././config.py:23261 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Colours" +msgstr "" + +#: .././config.py:23265 +msgid "_Colours" +msgstr "" + +#: .././config.py:23272 +msgid "Video catalogue colour preferences" +msgstr "" + +#: .././config.py:23280 +msgid "Waiting livestreams" +msgstr "" + +#: .././config.py:23286 +msgid "Broadcasting livestreams" +msgstr "" + +#: .././config.py:23292 +msgid "Waiting debut videos" +msgstr "" + +#: .././config.py:23298 +msgid "Broadcasting debut videos" +msgstr "" + +#: .././config.py:23304 +msgid "Selected videos" +msgstr "" + +#: .././config.py:23310 +msgid "Selected waiting videos" +msgstr "" + +#: .././config.py:23316 +msgid "Selected broadcasting videos" +msgstr "" + +#: .././config.py:23322 +msgid "Drag and Drop notification" +msgstr "" + +#: .././config.py:23328 +msgid "Drag and Drop background 1" +msgstr "" + +#: .././config.py:23334 +msgid "Drag and Drop background 2" +msgstr "" + +#: .././config.py:23365 +msgid "Custom colour:" +msgstr "" + +#: .././config.py:23388 +msgid "Default colour:" +msgstr "" + +#: .././config.py:23425 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Errors/Warnings" +msgstr "" + +#: .././config.py:23430 +msgid "_Errors/Warnings" +msgstr "" + +#: .././config.py:23436 +msgid "Errors/Warnings tab preferences" +msgstr "" + +#: .././config.py:23536 +msgid "TRANSLATOR'S NOTE: System preferences > Windows > Websites" +msgstr "" + +#: .././config.py:23540 +msgid "_Websites" +msgstr "" + +#: .././config.py:23547 +msgid "YouTube error/warning preferences" +msgstr "" + +#: .././config.py:23552 +msgid "Ignore YouTube copyright errors" +msgstr "" + +#: .././config.py:23560 +msgid "Ignore YouTube age-restriction errors" +msgstr "" + +#: .././config.py:23568 +msgid "Ignore YouTube deletion by uploader errors" +msgstr "" + +#: .././config.py:23576 +msgid "Ignore YouTube payment errors" +msgstr "" + +#: .././config.py:23585 .././config.py:27633 +msgid "General preferences" +msgstr "" + +#: .././config.py:23591 +msgid "" +"Ignore any errors/warnings which match lines in this list (applies to all " +"websites)" +msgstr "" + +#: .././config.py:23605 +msgid "These are ordinary strings" +msgstr "" + +#: .././config.py:23612 +msgid "These are regular expressions (regexes)" +msgstr "" + +#: .././config.py:23641 +msgid "TRANSLATOR'S NOTE: System preferences > Scheduling" +msgstr "" + +#. Add this tab... +#: .././config.py:23645 +msgid "_Scheduling" +msgstr "" + +#: .././config.py:23668 +msgid "TRANSLATOR'S NOTE: System preferences > Scheduling > Start" +msgstr "" + +#: .././config.py:23676 +msgid "Scheduled download preferences" +msgstr "" + +#: .././config.py:23697 +msgid "Priority" +msgstr "" + +#: .././config.py:23697 +msgid "Whole" +msgstr "" + +#: .././config.py:23697 +msgid "Shutdown" +msgstr "" + +#: .././config.py:23697 +msgid "D/L All" +msgstr "" + +#: .././config.py:23698 +msgid "Join mode" +msgstr "" + +#: .././config.py:23752 .././config.py:24867 .././config.py:27197 +#: .././config.py:27478 +msgid "Edit" +msgstr "編輯" + +#: .././config.py:23824 .././formats.py:1237 +msgid "Custom" +msgstr "" + +#: .././config.py:23868 +msgid "TRANSLATOR'S NOTE: System preferences > Scheduling > Stop" +msgstr "" + +#: .././config.py:23871 +msgid "S_top" +msgstr "" + +#: .././config.py:23876 +msgid "Scheduled stop preferences" +msgstr "" + +#: .././config.py:23882 +msgid "" +"N.B. Each scheduled download also has its own 'stop' settings which override " +"these settings" +msgstr "" + +#: .././config.py:23889 +msgid "Stop all download operations after this much time" +msgstr "" + +#: .././config.py:23937 +msgid "Stop all download operations after this many videos" +msgstr "" + +#: .././config.py:23964 +msgid "Stop all download operations after this much disk space" +msgstr "" + +#: .././config.py:24022 +msgid "TRANSLATOR'S NOTE: System preferences > Operations" +msgstr "" + +#: .././config.py:24066 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Limits" +msgstr "" + +#: .././config.py:24132 +msgid "Overriding video format options, limit video resolution to" +msgstr "" + +#: .././config.py:24154 +msgid "Alternative performance limits" +msgstr "" + +#: .././config.py:24212 +msgid "Alternative limits apply between" +msgstr "" + +#: .././config.py:24252 +msgid "and" +msgstr "" + +#: .././config.py:24280 +msgid "On days" +msgstr "" + +#: .././config.py:24313 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Stop" +msgstr "" + +#: .././config.py:24324 +msgid "Time-saving settings" +msgstr "" + +#: .././config.py:24330 +msgid "" +"Stop checking/downloading a channel/playlist when it finds videos you " +"already have" +msgstr "" + +#: .././config.py:24341 +msgid "Stop after this many videos (when checking)" +msgstr "" + +#: .././config.py:24356 +msgid "Stop after this many videos (when downloading)" +msgstr "" + +#: .././config.py:24392 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Downloads" +msgstr "" + +#: .././config.py:24403 +msgid "Download operation preferences" +msgstr "" + +#: .././config.py:24409 +msgid "Automatically update downloader before every download operation" +msgstr "" + +#: .././config.py:24421 +msgid "Automatically save files at the end of all operations" +msgstr "" + +#: .././config.py:24433 +msgid "For simulated downloads, don't check a video in a folder more than once" +msgstr "" + +#: .././config.py:24447 +msgid "If a download stalls, restart it after this many minutes" +msgstr "" + +#: .././config.py:24469 +msgid "Maximum restarts after a stalled download (0 for no maximum)" +msgstr "" + +#: .././config.py:24502 +msgid "Apply a timeout (in minutes) when checking a video" +msgstr "" + +#: .././config.py:24514 +msgid "Without comments" +msgstr "" + +#: .././config.py:24530 +msgid "With comments" +msgstr "" + +#: .././config.py:24563 +msgid "Assign anonymous error/warning messages to the most probable video" +msgstr "" + +#: .././config.py:24574 +msgid "Add censored, age-restricted and other blocked videos to the database" +msgstr "" + +#: .././config.py:24587 +msgid "" +"Extract playlist IDs from each video, and store them in the parent channel/" +"playlist" +msgstr "" + +#: .././config.py:24598 +msgid "" +"Convert .webp thumbnails into .jpg thumbnails (using FFmpeg) after " +"downloading them" +msgstr "" + +#: .././config.py:24609 +msgid "" +"...but don't delete the original thumbnails (enable before embedding " +"thumbnails in videos)" +msgstr "" + +#: .././config.py:24644 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Ignore" +msgstr "" + +#: .././config.py:24648 +msgid "_Ignore" +msgstr "" + +#: .././config.py:24655 +msgid "Ignore downloader errors/warnings" +msgstr "" + +#: .././config.py:24660 +msgid "TRANSLATOR'S NOTE: These error messages are always in English" +msgstr "" + +#: .././config.py:24664 +msgid "Ignore 'Child process exited with non-zero code' errors" +msgstr "" + +#: .././config.py:24673 +msgid "" +"Ignore 'Unable to download video data' and 'Unable to extract video data' " +"errors" +msgstr "" + +#: .././config.py:24683 +msgid "Ignore 'Did not get any data blocks' errors" +msgstr "" + +#: .././config.py:24692 +msgid "Ignore 'Requested formats are incompatible for merge' warnings" +msgstr "" + +#: .././config.py:24701 +msgid "Ignore 'No video formats found' errors" +msgstr "" + +#: .././config.py:24709 +msgid "Ignore 'There are no annotations to write' warnings" +msgstr "" + +#: .././config.py:24717 +msgid "Ignore 'Video doesn't have subtitles' warnings" +msgstr "" + +#: .././config.py:24725 +msgid "Ignore 'A channel/user page was given' warnings" +msgstr "" + +#: .././config.py:24733 +msgid "Ignore 'There's no playlist description to write' warnings" +msgstr "" + +#: .././config.py:24742 +msgid "" +"Ignore 'Unable to download video thumbnail: HTTP Error 404: Not Found' " +"warnings" +msgstr "" + +#: .././config.py:24753 +msgid "Ignore 'The channel is not currently live' warnings on Twitch" +msgstr "" + +#: .././config.py:24775 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Custom" +msgstr "" + +#: .././config.py:24778 +msgid "_Custom" +msgstr "" + +#: .././config.py:24783 +msgid "Custom downloads" +msgstr "" + +#: .././config.py:24804 .././config.py:27132 +msgid "Classic Mode" +msgstr "" + +#: .././config.py:24876 .././config.py:27206 .././config.py:27487 +msgid "Export" +msgstr "" + +#: .././config.py:24885 .././config.py:27215 .././config.py:27496 +msgid "Clone" +msgstr "" + +#: .././config.py:24894 .././config.py:27224 +msgid "Use in Classic Mode tab" +msgstr "" + +#: .././config.py:24997 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Archive" +msgstr "" + +#: .././config.py:25001 +msgid "_Archive" +msgstr "" + +#: .././config.py:25009 +msgid "Archive file preferences" +msgstr "" + +#: .././config.py:25015 +msgid "" +"Allow downloader to create its own archive file (so deleted videos are not " +"re-downloaded)" +msgstr "" + +#: .././config.py:25034 +msgid "Store the archive file in the same location as the video" +msgstr "" + +#: .././config.py:25042 +msgid "" +"N.B. Archive files are never stored in system folders like 'Unsorted Videos'" +msgstr "" + +#: .././config.py:25051 +msgid "Store the archive file in Tartube's data directory" +msgstr "" + +#: .././config.py:25062 +msgid "Store the archive file at this location:" +msgstr "" + +#: .././config.py:25090 +msgid "" +"Update the archive file when videos are moved into a database folder " +"(YouTube only)" +msgstr "" + +#: .././config.py:25154 +msgid "Classic Mode tab preferences" +msgstr "" + +#: .././config.py:25160 +msgid "Create an archive file when downloading from the Classic Mode tab" +msgstr "" + +#: .././config.py:25171 +msgid "" +"This setting should only be enabled when downloading channels and playlists" +msgstr "" + +#: .././config.py:25191 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Livestreams" +msgstr "" + +#: .././config.py:25195 +msgid "Li_vestreams" +msgstr "" + +#: .././config.py:25203 +msgid "Livestream preferences (compatible websites only)" +msgstr "" + +#: .././config.py:25209 +msgid "Do not check/download any livestream [yt-dlp only]" +msgstr "" + +#: .././config.py:25220 +msgid "Detect livestreams announced within this many days" +msgstr "" + +#: .././config.py:25235 +msgid "How often to check the status of livestreams (in minutes)" +msgstr "" + +#: .././config.py:25254 +msgid "Check more frequently when a livestream is due to start" +msgstr "" + +#: .././config.py:25297 +msgid "Broadcasting livestream preferences (compatible websites only)" +msgstr "" + +#: .././config.py:25305 +msgid "" +"These settings apply when downloading videos individually, for example with " +"a custom download" +msgstr "" + +#: .././config.py:25316 +msgid "Download using:" +msgstr "" + +#: .././config.py:25331 +msgid ".m3u manifest" +msgstr "" + +#: .././config.py:25378 +msgid "Replace a partially-downloaded livestream" +msgstr "" + +#: .././config.py:25385 +msgid "Resume a partially-downloaded livestream" +msgstr "" + +#: .././config.py:25404 +msgid "" +"Bypass usual limits on simultaneous downloads, so that all livestreams can " +"be downloaded" +msgstr "" + +#: .././config.py:25417 +msgid "Timeout after this many minutes of inactivity" +msgstr "" + +#: .././config.py:25433 +msgid "" +"When the livestream download is stopped manually, mark the video as " +"downloaded" +msgstr "" + +#: .././config.py:25447 +msgid "" +"Check a video before the livestream download (ensures metadata is downloaded)" +msgstr "" + +#: .././config.py:25461 +msgid "N.B. This setting is ignored in the Classic Mode tab" +msgstr "" + +#: .././config.py:25478 +msgid "not recommended" +msgstr "" + +#: .././config.py:25495 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Actions" +msgstr "" + +#: .././config.py:25499 +msgid "Ac_tions" +msgstr "" + +#: .././config.py:25507 +msgid "Livestream actions (can be toggled for individual videos)" +msgstr "" + +#: .././config.py:25514 +msgid "(currently disabled on MS Windows)" +msgstr "" + +#: .././config.py:25519 +msgid "When a livestream starts, show a desktop notification" +msgstr "" + +#: .././config.py:25533 +msgid "When a livestream starts, sound an alarm" +msgstr "" + +#: .././config.py:25560 +msgid "Plays the selected sound effect" +msgstr "" + +#: .././config.py:25569 +msgid "When a livestream starts, open it in the system's web browser" +msgstr "" + +#: .././config.py:25581 +msgid "When a livestream starts, begin downloading it immediately" +msgstr "" + +#: .././config.py:25609 +msgid "Desktop notification preferences" +msgstr "" + +#: .././config.py:25615 +msgid "Show a dialogue window at the end of an operation" +msgstr "" + +#: .././config.py:25639 +msgid "Don't notify the user at the end of an operation" +msgstr "" + +#: .././config.py:25677 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Clips" +msgstr "" + +#: .././config.py:25681 +msgid "Cli_ps" +msgstr "" + +#: .././config.py:25694 +msgid "" +"When a video is checked/downloaded, automatically extract timestamps from " +"its metadata file" +msgstr "" + +#: .././config.py:25705 +msgid "" +"When a video is checked/downloaded, automatically extract timestamps from " +"its description" +msgstr "" + +#: .././config.py:25717 +msgid "If timestamps have already been extracted, replace them" +msgstr "" + +#: .././config.py:25729 +msgid "" +"If no timestamps have been extracted, try again before splitting a video" +msgstr "" + +#: .././config.py:25743 +msgid "Video clips (requires FFmpeg or yt-dlp)" +msgstr "" + +#: .././config.py:25753 +msgid "Download video clips using FFmpeg" +msgstr "" + +#: .././config.py:25760 +msgid "Download video clips using yt-dlp" +msgstr "" + +#: .././config.py:25773 +msgid "Format of video clip filenames" +msgstr "" + +#: .././config.py:25778 +msgid "Number" +msgstr "" + +#: .././config.py:25779 +msgid "Clip Title" +msgstr "" + +#: .././config.py:25780 +msgid "Number + Clip Title" +msgstr "" + +#: .././config.py:25781 +msgid "Clip Title + Number" +msgstr "" + +#: .././config.py:25782 +msgid "Original Title" +msgstr "" + +#: .././config.py:25783 +msgid "Original Title + Number" +msgstr "" + +#: .././config.py:25784 +msgid "Original Title + Clip Title" +msgstr "" + +#: .././config.py:25785 +msgid "Original Title + Number + Clip Title" +msgstr "" + +#: .././config.py:25786 +msgid "Original Title + Clip Title + Number" +msgstr "" + +#: .././config.py:25813 +msgid "Generic title for video clips" +msgstr "" + +#: .././config.py:25830 +msgid "Move clips to the Video Clips folder" +msgstr "" + +#: .././config.py:25837 +msgid "Keep clips with their original video" +msgstr "" + +#: .././config.py:25850 +msgid "...but place new files inside a sub-directory" +msgstr "" + +#: .././config.py:25861 +msgid "Add new files to Tartube's database" +msgstr "" + +#: .././config.py:25872 +msgid "Use the original video's thumbnail" +msgstr "" + +#: .././config.py:25883 .././config.py:26004 +msgid "" +"Force keyframes at cuts (slower, but fewer video artefacts before and after " +"each cut)" +msgstr "" + +#: .././config.py:25896 +msgid "After splitting a video, open the destination folder" +msgstr "" + +#: .././config.py:25898 +msgid "After splitting a video, open the destination directory" +msgstr "" + +#: .././config.py:25910 +msgid "" +"After splitting a video, delete the original (ignored for videos in channels/" +"playlists)" +msgstr "" + +#: .././config.py:25933 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Slices" +msgstr "" + +#: .././config.py:25937 +msgid "Slic_es" +msgstr "" + +#: .././config.py:25944 +msgid "Video slices (requires FFmpeg)" +msgstr "" + +#: .././config.py:25950 +msgid "" +"While checking/downloading videos, check each video against the SponsorBlock " +"server" +msgstr "" + +#: .././config.py:25961 +msgid "When contacting the server, obfuscate each video's ID (recommended)" +msgstr "" + +#: .././config.py:25977 +msgid "If slices have already been extracted, replace the old list" +msgstr "" + +#: .././config.py:25990 +msgid "" +"If slices have been extracted, contact the server again before removing more " +"slices from the video" +msgstr "" + +#: .././config.py:26018 +msgid "" +"After removing slices from a video, reset all timestamp and slice data " +"(recommended)" +msgstr "" + +#: .././config.py:26044 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Comments" +msgstr "" + +#: .././config.py:26048 +msgid "C_omments" +msgstr "" + +#: .././config.py:26060 +msgid "When checking videos, store comments in the metadata file" +msgstr "" + +#: .././config.py:26068 +msgid "When downloading videos, store comments in the metadata file" +msgstr "" + +#: .././config.py:26076 +msgid "" +"Warning: fetching comments will increase the download time, perhaps by a lot!" +msgstr "" + +#: .././config.py:26082 +msgid "Also store comments in the Tartube database" +msgstr "" + +#: .././config.py:26107 +msgid "" +"Warning: storing comments will increase the size of Tartube's datbase, " +"perhaps by a lot!" +msgstr "" + +#: .././config.py:26127 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Mirrors" +msgstr "" + +#: .././config.py:26138 +msgid "Invidious mirror" +msgstr "" + +#: .././config.py:26144 +msgid "To find an updated list of Invidious mirrors, use any search engine!" +msgstr "" + +#: .././config.py:26159 +msgid "Use the default Invidious mirror" +msgstr "" + +#: .././config.py:26174 +msgid "SponsorBlock API mirror" +msgstr "" + +#: .././config.py:26187 +msgid "Use the default SponsorBlock URL" +msgstr "" + +#: .././config.py:26204 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Proxies" +msgstr "" + +#: .././config.py:26208 +msgid "P_roxies" +msgstr "" + +#: .././config.py:26214 +msgid "Proxies" +msgstr "" + +#: .././config.py:26221 +msgid "" +"During a download operation, Tartube will cycle betwween the proxies in this " +"list" +msgstr "" + +#: .././config.py:26247 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Preferences" +msgstr "" + +#: .././config.py:26251 +msgid "Pre_ferences" +msgstr "" + +#: .././config.py:26258 +msgid "URL flexibility preferences" +msgstr "" + +#: .././config.py:26265 +msgid "" +"If a video's URL represents a channel/playlist, not a video, don't download " +"it" +msgstr "" + +#: .././config.py:26274 +msgid "...or, download multiple videos into the containing folder" +msgstr "" + +#: .././config.py:26284 +msgid "...or, create a new channel, and download the videos into that" +msgstr "" + +#: .././config.py:26295 +msgid "...or, create a new playlist, and download the videos into that" +msgstr "" + +#: .././config.py:26327 .././config.py:26409 +msgid "Missing video preferences" +msgstr "" + +#: .././config.py:26333 .././config.py:26415 +msgid "" +"Add videos which have been removed from a channel/playlist to the Missing " +"Videos folder" +msgstr "" + +#: .././config.py:26344 .././config.py:26426 +msgid "Only add videos that were uploaded within this many days" +msgstr "" + +#: .././config.py:26398 +msgid "TRANSLATOR'S NOTE: System preferences > Operations > Missing" +msgstr "" + +#: .././config.py:26402 +msgid "Missi_ng" +msgstr "" + +#: .././config.py:26475 +msgid "TRANSLATOR'S NOTE: System preferences > Downloaders" +msgstr "" + +#: .././config.py:26507 .././config.py:35941 +msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > Forks" +msgstr "" + +#: .././config.py:26511 +msgid "_Forks" +msgstr "" + +#: .././config.py:26517 +msgid "Forks of youtube-dl" +msgstr "" + +#: .././config.py:26546 +msgid "Use yt-dlp" +msgstr "" + +#: .././config.py:26552 +msgid "Install without dependencies" +msgstr "" + +#: .././config.py:26553 +msgid "(recommended on MS Windows)" +msgstr "" + +#: .././config.py:26584 +msgid "Use youtube-dl" +msgstr "" + +#: .././config.py:26605 +msgid "Other forks" +msgstr "" + +#: .././config.py:26613 +msgid "Use this fork (e.g. youtube-dlc):" +msgstr "" + +#: .././config.py:26691 +msgid "When using other downloaders, filter out yt-dlp download options" +msgstr "" + +#: .././config.py:26714 +msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > File paths" +msgstr "" + +#: .././config.py:26718 +msgid "File _paths" +msgstr "" + +#: .././config.py:26725 +msgid "Downloader file paths" +msgstr "" + +#: .././config.py:26731 +msgid "Path to the executable" +msgstr "" + +#. (Signal connect appears below) +#: .././config.py:26737 .././config.py:26922 .././config.py:26960 +#: .././config.py:35958 +msgid "Use default path" +msgstr "" + +#: .././config.py:26747 .././config.py:35972 +msgid "Use local path" +msgstr "" + +#: .././config.py:26753 +msgid "Use custom path (not recommended on MS Windows)" +msgstr "" + +#: .././config.py:26755 +msgid "Use custom path" +msgstr "" + +#: .././config.py:26767 .././config.py:35984 +msgid "Use PyPI path" +msgstr "" + +#: .././config.py:26829 +msgid "Command for update operations" +msgstr "" + +#: .././config.py:26886 +msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > FFmpeg / AVConv" +msgstr "" + +#: .././config.py:26891 +msgid "FF_mpeg / AVConv" +msgstr "" + +#: .././config.py:26898 +msgid "Post-processor file paths" +msgstr "" + +#: .././config.py:26903 +msgid "" +"You only need to set these paths if Tartube cannot find FFmpeg / AVConv " +"automatically" +msgstr "" + +#: .././config.py:26910 +msgid "Path to the FFmpeg executable" +msgstr "" + +#: .././config.py:26948 +msgid "Path to the AVConv executable" +msgstr "" + +#: .././config.py:26975 +msgid "Not supported on MS Windows" +msgstr "" + +#: .././config.py:27003 +msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > streamlink" +msgstr "" + +#: .././config.py:27006 +msgid "TRANSLATOR'S NOTE: 'streamlink' is the name of a Python module" +msgstr "" + +#: .././config.py:27011 +msgid "_streamlink" +msgstr "" + +#: .././config.py:27018 +msgid "streamlink file path" +msgstr "" + +#: .././config.py:27023 +msgid "Path to the streamlink executable" +msgstr "" + +#: .././config.py:27046 +msgid "Install from main menu" +msgstr "" + +#: .././config.py:27071 +msgid "TRANSLATOR'S NOTE: System preferences > Options" +msgstr "" + +#: .././config.py:27100 +msgid "TRANSLATOR'S NOTE: System preferences > Options > Download options" +msgstr "" + +#: .././config.py:27105 +msgid "_Download options" +msgstr "" + +#: .././config.py:27112 +msgid "List of download options" +msgstr "" + +#: .././config.py:27132 +msgid "Videos tab" +msgstr "" + +#: .././config.py:27133 +msgid "Dropzone" +msgstr "" + +#: .././config.py:27133 +msgid "Applied to media" +msgstr "" + +#: .././config.py:27334 +msgid "TRANSLATOR'S NOTE: System preferences > Options > Preferences" +msgstr "" + +#: .././config.py:27338 +msgid "_Preferences" +msgstr "" + +#: .././config.py:27345 +msgid "Download options preferences" +msgstr "" + +#: .././config.py:27351 +msgid "" +"When applying download options to something, clone the general download " +"options" +msgstr "" + +#: .././config.py:27362 +msgid "After downloading a video, destroy its download options" +msgstr "" + +#: .././config.py:27384 +msgid "TRANSLATOR'S NOTE: System preferences > Options > FFmpeg options" +msgstr "" + +#: .././config.py:27388 +msgid "_FFmpeg options" +msgstr "" + +#: .././config.py:27395 +msgid "List of FFmpeg options managers" +msgstr "" + +#: .././config.py:27415 +msgid "Current" +msgstr "" + +#: .././config.py:27505 +msgid "Use these options" +msgstr "" + +#: .././config.py:27595 +msgid "TRANSLATOR'S NOTE: System preferences > Output" +msgstr "" + +#. Add this tab... +#: .././config.py:27599 +msgid "O_utput" +msgstr "" + +#: .././config.py:27625 +msgid "TRANSLATOR'S NOTE: System preferences > Output > General" +msgstr "" + +#: .././config.py:27639 +msgid "Applies to Output tab, terminal window and downloader log" +msgstr "" + +#: .././config.py:27645 +msgid "Downloader writes verbose output (youtube-dl debugging mode)" +msgstr "" + +#: .././config.py:27667 +msgid "TRANSLATOR'S NOTE: System preferences > Output > Output tab" +msgstr "" + +#: .././config.py:27671 +msgid "_Output tab" +msgstr "" + +#: .././config.py:27678 +msgid "Output tab preferences" +msgstr "" + +#: .././config.py:27683 +msgid "Display downloader system commands in the Output tab" +msgstr "" + +#: .././config.py:27693 +msgid "Display general output (from downloader's STDOUT) in the Output tab" +msgstr "" + +#: .././config.py:27704 .././config.py:27892 .././config.py:27994 +msgid "...but don't write each video's JSON data" +msgstr "" + +#: .././config.py:27715 .././config.py:27903 .././config.py:28005 +msgid "...but don't write each video's download progress" +msgstr "" + +#: .././config.py:27735 +msgid "Display errors/warnings (from downloader's STDERR) in the Output tab" +msgstr "" + +#: .././config.py:27746 +msgid "Limit the size of Output tab pages to" +msgstr "" + +#: .././config.py:27770 +msgid "Empty pages in the Output tab at the start of every operation" +msgstr "" + +#: .././config.py:27785 +msgid "" +"Show a summary of active threads (changes are applied when Tartube restarts)" +msgstr "" + +#: .././config.py:27800 +msgid "During update/info operations, automatically switch to the Output tab" +msgstr "" + +#: .././config.py:27811 +msgid "During a refresh operation, show all matching videos in the Output tab" +msgstr "" + +#: .././config.py:27822 +msgid "...also show all non-matching videos" +msgstr "" + +#: .././config.py:27856 +msgid "TRANSLATOR'S NOTE: System preferences > Output > Terminal window" +msgstr "" + +#: .././config.py:27860 +msgid "_Terminal window" +msgstr "" + +#: .././config.py:27866 +msgid "Terminal window preferences" +msgstr "" + +#: .././config.py:27871 +msgid "Write downloader system commands to the terminal window" +msgstr "" + +#: .././config.py:27881 +msgid "Write general output (from downloader's STDOUT) to the terminal window" +msgstr "" + +#: .././config.py:27926 +msgid "Write errors/warnings (from downloader's STDERR) to the terminal window" +msgstr "" + +#: .././config.py:27953 +msgid "TRANSLATOR'S NOTE: System preferences > Output > Log" +msgstr "" + +#: .././config.py:27957 +msgid "_Downloader log" +msgstr "" + +#: .././config.py:27963 +msgid "Downloader log preferences" +msgstr "" + +#: .././config.py:27969 +#, python-brace-format +msgid "If enabled, the file '{0}' is written to Tartube's data folder" +msgstr "" + +#: .././config.py:27976 +msgid "Write downloader system commands to the log" +msgstr "" + +#: .././config.py:27985 +msgid "Write general output (from downloader's STDOUT) to the log" +msgstr "" + +#: .././config.py:28027 +msgid "Write errors/warnings (from downloader's STDERR) to the log" +msgstr "" + +#: .././config.py:29014 .././config.py:31217 .././config.py:31276 +#: .././config.py:32156 .././config.py:33627 .././config.py:33719 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " +"> Update" +msgstr "" + +#. Confirm the result +#: .././config.py:29034 .././config.py:31250 .././config.py:31312 +#: .././config.py:32180 .././config.py:33653 .././config.py:33745 +#: .././refresh.py:496 .././refresh.py:604 +msgid "Total videos:" +msgstr "" + +#: .././config.py:29035 .././config.py:31252 .././config.py:31314 +#: .././config.py:32181 .././config.py:33654 .././config.py:33746 +msgid "Videos updated:" +msgstr "" + +#: .././config.py:29219 .././config.py:29328 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " +"> URLs" +msgstr "" + +#: .././config.py:29263 +#, python-brace-format +msgid "There is already a channel, playlist or folder called '{0}'" +msgstr "" + +#: .././config.py:29286 +msgid "Are you sure you want to rename this channel?" +msgstr "" + +#: .././config.py:29288 +msgid "Are you sure you want to rename this playlist?" +msgstr "" + +#: .././config.py:29290 +msgid "Are you sure you want to rename this folder?" +msgstr "" + +#: .././config.py:29335 +msgid "That is not a valid URL" +msgstr "" + +#: .././config.py:29358 +msgid "Are you sure you want to update the URL?" +msgstr "" + +#: .././config.py:29389 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by:System preferences > Files " +"> URLs" +msgstr "" + +#: .././config.py:29410 +msgid "The regex is invalid" +msgstr "" + +#: .././config.py:29460 +msgid "Are you sure you want to update these URLs?" +msgstr "" + +#: .././config.py:29660 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Operations > Custom" +msgstr "" + +#: .././config.py:29685 +msgid "The default custom download manager cannot be deleted" +msgstr "" + +#: .././config.py:29695 +msgid "Are you sure you want to delete this custom download manager?" +msgstr "" + +#: .././config.py:29939 .././config.py:30060 .././config.py:30110 +#: .././config.py:30302 .././config.py:30962 .././config.py:35843 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " +"> Database" +msgstr "" + +#: .././config.py:29971 +msgid "Are you sure you want to create a new database at this location?" +msgstr "" + +#: .././config.py:30083 +msgid "Are you sure you want to forget this database?" +msgstr "" + +#: .././config.py:30123 +msgid "Are you sure you want to forget all databases except the current one?" +msgstr "" + +#: .././config.py:30331 +msgid "No database exists at this location:" +msgstr "" + +#: .././config.py:30333 +msgid "Do you want to create a new one?" +msgstr "" + +#: .././config.py:30968 +msgid "Select a Tartube database file" +msgstr "" + +#: .././config.py:30990 +msgid "This file is not loadable (might be corrupted)" +msgstr "" + +#: .././config.py:31001 +msgid "This file does is not compatible with Tartube" +msgstr "" + +#: .././config.py:31011 +msgid "This file was loaded, but is empty" +msgstr "" + +#: .././config.py:31469 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Options > FFmpeg options" +msgstr "" + +#: .././config.py:31494 +msgid "The current options manager cannot be deleted" +msgstr "" + +#: .././config.py:31504 .././config.py:33004 +msgid "Are you sure you want to delete this options manager?" +msgstr "" + +#: .././config.py:31710 .././config.py:34569 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Windows > Main Window" +msgstr "" + +#: .././config.py:31729 .././config.py:32239 .././config.py:34581 +msgid "The new setting will be applied when Tartube restarts" +msgstr "" + +#: .././config.py:32207 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"General > Application" +msgstr "" + +#: .././config.py:32969 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Options > Download options" +msgstr "" + +#: .././config.py:32994 +msgid "The default options manager cannot be deleted" +msgstr "" + +#: .././config.py:34126 .././config.py:34174 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Scheduling > Start" +msgstr "" + +#: .././config.py:34139 +msgid "There is already a scheduled download with that name" +msgstr "" + +#: .././config.py:34191 +msgid "Are you sure you want to delete this scheduled download?" +msgstr "" + +#: .././config.py:34376 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Operations > Archive" +msgstr "" + +#: .././config.py:34381 +msgid "Select the location of the archive file" +msgstr "" + +#: .././config.py:34414 .././config.py:34452 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Downloaders > FFmpeg / AVConv" +msgstr "" + +#: .././config.py:34419 +msgid "Please select the AVConv executable" +msgstr "" + +#: .././config.py:34457 +msgid "Please select the FFmpeg executable" +msgstr "" + +#: .././config.py:34490 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Downloaders > streamlink" +msgstr "" + +#: .././config.py:34495 +msgid "Please select the streamlink executable" +msgstr "" + +#: .././config.py:35693 +msgid "" +"TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " +"Downloaders > File paths" +msgstr "" + +#: .././config.py:35699 +msgid "Select the youtube-dl-compatible executable" +msgstr "" + +#: .././config.py:35876 +msgid "Database file not loaded" +msgstr "" + +#: .././config.py:35896 +msgid "Did not try to load the database file" +msgstr "" + +#: .././config.py:35921 +msgid "Database file loaded" +msgstr "" + +#: .././downloads.py:329 +msgid "D/L Manager:" +msgstr "" + +#: .././downloads.py:333 +msgid "Starting download operation" +msgstr "" + +#: .././downloads.py:364 +msgid "Workers: available:" +msgstr "" + +#: .././downloads.py:365 +msgid "total:" +msgstr "" + +#: .././downloads.py:409 +msgid "Alternative performance limits no longer apply" +msgstr "" + +#: .././downloads.py:417 +msgid "Alternative performance limits now apply" +msgstr "" + +#: .././downloads.py:460 +msgid "All threads finished" +msgstr "" + +#: .././downloads.py:484 .././downloads.py:1418 .././downloads.py:1429 +#: .././downloads.py:1504 .././downloads.py:1593 .././downloads.py:1634 +#: .././downloads.py:1725 .././downloads.py:1785 +msgid "Thread #" +msgstr "" + +#: .././downloads.py:485 +msgid "Downloading:" +msgstr "" + +#: .././downloads.py:524 +msgid "Downloads complete (or stopped)" +msgstr "" + +#: .././downloads.py:530 +msgid "Halting all workers" +msgstr "" + +#: .././downloads.py:539 +msgid "Join and collect threads" +msgstr "" + +#: .././downloads.py:1419 +msgid "Job complete" +msgstr "" + +#: .././downloads.py:1430 +msgid "Worker now available again" +msgstr "" + +#: .././downloads.py:1505 .././downloads.py:1635 .././downloads.py:1726 +#: .././downloads.py:1786 +msgid "Assigned job:" +msgstr "" + +#: .././downloads.py:1537 +msgid "Tartube is restarting a stalled download" +msgstr "" + +#: .././downloads.py:1594 +msgid "Checking RSS feed" +msgstr "" + +#: .././downloads.py:2341 +msgid "Cannot download videos in a private folder" +msgstr "" + +#: .././downloads.py:3086 +msgid "Unrecognised download item ID" +msgstr "" + +#: .././downloads.py:3737 .././downloads.py:9729 +msgid "Download did not start" +msgstr "" + +#: .././downloads.py:3743 .././downloads.py:9735 .././info.py:310 +#: .././updates.py:270 .././updates.py:382 .././updates.py:495 +#: .././updates.py:686 .././updates.py:778 +msgid "Child process exited with non-zero code: {}" +msgstr "" + +#: .././downloads.py:3878 .././downloads.py:5156 +msgid "" +"This video has a URL that points to a channel or a playlist, not a video" +msgstr "" + +#: .././downloads.py:5012 .././downloads.py:5028 .././downloads.py:5044 +msgid "Simulated download of:" +msgstr "" + +#: .././downloads.py:5036 +msgid "Simulated download of video with unprintable characters" +msgstr "" + +#: .././downloads.py:6449 +msgid "Please reinstall/update your downloader" +msgstr "" + +#: .././downloads.py:7104 +msgid "Invalid timestamps in temporary buffer" +msgstr "" + +#: .././downloads.py:7126 +msgid "No timestamps defined in video's timestamp list" +msgstr "" + +#: .././downloads.py:7147 +msgid "" +"FAILED: Can't create the destination folder either because a folder with the " +"same name already exists, or because new folders can't be added to the " +"parent folder" +msgstr "" + +#: .././downloads.py:7254 .././downloads.py:7449 +msgid "FAILED: Cannot create temporary directory" +msgstr "" + +#: .././downloads.py:7352 .././downloads.py:7547 .././downloads.py:7858 +#: .././downloads.py:8133 +msgid "FAILED: Clip download did not start" +msgstr "" + +#: .././downloads.py:7360 .././downloads.py:7555 .././downloads.py:7866 +#: .././downloads.py:8141 +msgid "FAILED: Child process exited with non-zero code: {}" +msgstr "" + +#: .././downloads.py:7978 +msgid "No slices defined in video's slice list" +msgstr "" + +#: .././downloads.py:8165 +msgid "FAILED: One or more clips were not downloaded" +msgstr "" + +#: .././downloads.py:8266 +msgid "FAILED: Can't concatenate clips" +msgstr "" + +#: .././downloads.py:8287 +msgid "" +"FAILED: Clips were concatenated, but could not move the output file out of " +"the temporary directory" +msgstr "" + +#: .././downloads.py:8435 +msgid "Failed to copy the original video's thumbnail" +msgstr "" + +#: .././downloads.py:8627 +msgid "FAILED: Can't create a temporary folder for video clips" +msgstr "" + +#: .././downloads.py:8679 +msgid "FAILED: Can't create a temporary folder for video slices" +msgstr "" + +#. There are currently three download methods, specified by self.dl_mode +#: .././downloads.py:9485 +msgid "Tartube is starting the livestream download" +msgstr "" + +#: .././downloads.py:9509 +msgid "Invalid livestream download mode" +msgstr "" + +#: .././downloads.py:9558 +msgid "" +"Incomplete livestream download detected; removing the .part component from " +"the output file" +msgstr "" + +#: .././downloads.py:9573 +msgid "" +"Incomplete livestream download detected; to complete the download, right-" +"click the video and select 'Finalise livestream'" +msgstr "" + +#: .././downloads.py:9809 .././downloads.py:10381 +msgid "Failed to download the .m3u manifest" +msgstr "" + +#: .././downloads.py:10272 +msgid "Downloaded the .m3u manifest, now downloading the livestream..." +msgstr "" + +#. ISO 639-1 Language Codes (with one extra key-value pair to handle live +#. chat) +#. English is top of the list, because it's the default setting in +#. options.OptionsManager +#. NB These values must not contain square brackets [...] +#: .././formats.py:88 +msgid "English" +msgstr "" + +#: .././formats.py:130 +msgid "Dutch" +msgstr "" + +#: .././formats.py:138 +msgid "French" +msgstr "" + +#: .././formats.py:180 +msgid "Korean" +msgstr "" + +#: .././formats.py:225 +msgid "Russian" +msgstr "" + +#: .././formats.py:243 +msgid "Spanish" +msgstr "" + +#: .././formats.py:258 +msgid "Turkish" +msgstr "" + +#: .././formats.py:266 +msgid "Vietnamese" +msgstr "" + +#: .././formats.py:450 +msgid "seconds" +msgstr "" + +#: .././formats.py:451 +msgid "minutes" +msgstr "" + +#: .././formats.py:452 +msgid "hours" +msgstr "" + +#: .././formats.py:454 +msgid "weeks" +msgstr "" + +#: .././formats.py:455 +msgid "years" +msgstr "" + +#: .././formats.py:472 +msgid "Every day" +msgstr "" + +#: .././formats.py:473 +msgid "Weekdays" +msgstr "" + +#: .././formats.py:474 +msgid "Weekends" +msgstr "" + +#: .././formats.py:475 +msgid "Monday" +msgstr "" + +#: .././formats.py:476 +msgid "Tuesday" +msgstr "" + +#: .././formats.py:477 +msgid "Wednesday" +msgstr "" + +#: .././formats.py:478 +msgid "Thursday" +msgstr "" + +#: .././formats.py:479 +msgid "Friday" +msgstr "" + +#: .././formats.py:480 +msgid "Saturday" +msgstr "" + +#: .././formats.py:481 +msgid "Sunday" +msgstr "" + +#. System folder names +#: .././formats.py:1144 +msgid "All Videos" +msgstr "" + +#: .././formats.py:1145 +msgid "Bookmarks" +msgstr "" + +#: .././formats.py:1146 +msgid "Favourite Videos" +msgstr "" + +#: .././formats.py:1147 +msgid "Livestreams" +msgstr "" + +#: .././formats.py:1148 +msgid "Missing Videos" +msgstr "" + +#: .././formats.py:1149 +msgid "New Videos" +msgstr "" + +#: .././formats.py:1150 +msgid "Recent Videos" +msgstr "" + +#: .././formats.py:1151 +msgid "Waiting Videos" +msgstr "" + +#: .././formats.py:1152 +msgid "Temporary Videos" +msgstr "" + +#: .././formats.py:1153 +msgid "Unsorted Videos" +msgstr "" + +#: .././formats.py:1154 +msgid "Video Clips" +msgstr "" + +#: .././formats.py:1159 +msgid "Update using default youtube-dl path" +msgstr "" + +#: .././formats.py:1161 +msgid "Update using local youtube-dl path" +msgstr "" + +#: .././formats.py:1163 +msgid "Update using custom youtube-dl path" +msgstr "" + +#: .././formats.py:1165 +msgid "Update using pip" +msgstr "" + +#: .././formats.py:1167 +msgid "Update using pip (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1169 +msgid "Update using pip (omit --user option)" +msgstr "" + +#: .././formats.py:1171 +msgid "Update using pip3" +msgstr "" + +#: .././formats.py:1173 +msgid "Update using pip3 (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1175 +msgid "Update using pip3 (omit --user option)" +msgstr "" + +#: .././formats.py:1177 +msgid "Update using pip3 (recommended)" +msgstr "" + +#: .././formats.py:1179 +msgid "Update using pipx" +msgstr "" + +#: .././formats.py:1181 +msgid "Update using pipx (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1183 +msgid "Update using pipx (omit --user option)" +msgstr "" + +#: .././formats.py:1185 +msgid "Update using PyPI youtube-dl path" +msgstr "" + +#: .././formats.py:1187 +msgid "Windows 32-bit update (recommended)" +msgstr "" + +#: .././formats.py:1189 +msgid "Windows 32-bit update (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1191 +msgid "Windows 64-bit update (recommended)" +msgstr "" + +#: .././formats.py:1193 +msgid "Windows 64-bit update (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1195 +msgid "youtube-dl updates are disabled" +msgstr "" + +#. Download operation stages +#: .././formats.py:1199 +msgid "Queued" +msgstr "" + +#: .././formats.py:1200 +msgid "Not started" +msgstr "" + +#: .././formats.py:1201 +msgid "Active" +msgstr "" + +#: .././formats.py:1202 +msgid "Paused" +msgstr "" + +#. (not actually used) +#: .././formats.py:1203 +msgid "Completed" +msgstr "" + +#. (not actually used) +#. Sub-stages of the 'Error' stage +#: .././formats.py:1204 .././formats.py:1217 +msgid "Error" +msgstr "" + +#: .././formats.py:1205 +msgid "Stalled" +msgstr "" + +#. Sub-stages of the 'Active' stage +#: .././formats.py:1207 +msgid "Pre-processing" +msgstr "" + +#: .././formats.py:1209 +msgid "Concatenating" +msgstr "" + +#: .././formats.py:1210 +msgid "Post-processing" +msgstr "" + +#. Sub-stages of the 'Completed' stage +#: .././formats.py:1213 +msgid "Finished" +msgstr "" + +#: .././formats.py:1214 +msgid "Warning" +msgstr "" + +#: .././formats.py:1215 +msgid "Already downloaded" +msgstr "" + +#. (not actually used) +#: .././formats.py:1218 +msgid "Stopped" +msgstr "" + +#: .././formats.py:1219 +msgid "Filesize abort" +msgstr "" + +#: .././formats.py:1229 +msgid "" +"TRANSLATOR'S NOTE: ID refers to a video's unique ID on the website, e.g. on " +"YouTube \"CS9OO0S5w2k\"" +msgstr "" + +#: .././formats.py:1238 +msgid "ID" +msgstr "" + +#: .././formats.py:1239 +msgid "Title" +msgstr "" + +#: .././formats.py:1240 +msgid "Quality" +msgstr "" + +#: .././formats.py:1241 +msgid "Autonumber" +msgstr "" + +#: .././formats.py:1253 +msgid "Any format" +msgstr "" + +#: .././info.py:196 +msgid "Starting info operation, testing downloader with specified options" +msgstr "" + +#: .././info.py:205 +#, python-brace-format +msgid "Starting info operation, fetching list of video/audio formats for '{0}'" +msgstr "" + +#: .././info.py:212 +#, python-brace-format +msgid "Starting info operation, fetching list of subtitles for '{0}'" +msgstr "" + +#: .././info.py:301 +msgid "System process did not start" +msgstr "" + +#: .././info.py:326 .././info.py:444 +msgid "Info operation finished" +msgstr "" + +#: .././info.py:353 +msgid "Starting info operation, checking for new releases of Tartube" +msgstr "" + +#: .././info.py:361 +msgid "Checking stable release..." +msgstr "" + +#: .././info.py:377 .././info.py:418 +msgid "Ignoring invalid version" +msgstr "" + +#: .././info.py:386 .././info.py:427 +msgid "Retrieved version:" +msgstr "" + +#: .././info.py:393 .././info.py:434 +msgid "Connection failed" +msgstr "" + +#: .././info.py:402 +msgid "Checking development release..." +msgstr "" + +#. (The code in self.run() will spot that the child process did not +#. start) +#: .././info.py:500 .././updates.py:208 +msgid "Child process did not start" +msgstr "" + +#: .././media.py:99 +msgid "channel" +msgstr "" + +#: .././media.py:101 +msgid "playlist" +msgstr "" + +#: .././media.py:103 +msgid "folder" +msgstr "" + +#: .././media.py:105 +msgid "video" +msgstr "" + +#: .././media.py:645 .././media.py:2255 +msgid "TRANSLATOR'S NOTE: Source = video/channel/playlist URL" +msgstr "" + +#. When the download operation is launched from the Classic Mode +#. tab, there is less to display +#: .././media.py:648 .././media.py:2258 .././media.py:2274 +msgid "Source:" +msgstr "" + +#: .././media.py:656 +msgid "Location:" +msgstr "" + +#: .././media.py:666 .././media.py:675 +msgid "Download destination:" +msgstr "" + +#: .././media.py:668 +msgid "unavailable" +msgstr "" + +#: .././media.py:686 .././media.py:2290 +msgid "Errors/Warnings" +msgstr "" + +#: .././media.py:2224 +msgid "" +"TRANSLATOR'S NOTE: WAITING = livestream not started, LIVE = livestream " +"started" +msgstr "" + +#: .././media.py:2229 +msgid "WAITING" +msgstr "" + +#: .././media.py:2231 +msgid "LIVE" +msgstr "" + +#: .././media.py:2236 +msgid "BLOCKED" +msgstr "" + +#: .././media.py:2246 .././refresh.py:258 .././refresh.py:542 +msgid "Channel:" +msgstr "" + +#: .././media.py:2248 .././refresh.py:260 .././refresh.py:544 +msgid "Playlist:" +msgstr "" + +#: .././media.py:2250 .././refresh.py:262 .././refresh.py:546 +msgid "Folder:" +msgstr "" + +#: .././media.py:2264 .././media.py:2281 +msgid "File:" +msgstr "" + +#: .././media.py:3332 .././media.py:3393 +msgid "Today" +msgstr "" + +#: .././media.py:3334 .././media.py:3395 +msgid "Yesterday" +msgstr "" + +#: .././refresh.py:139 +msgid "Starting refresh operation, analysing whole database" +msgstr "" + +#: .././refresh.py:148 +msgid "Starting refresh operation, analysing '{}'" +msgstr "" + +#: .././refresh.py:192 +msgid "Refresh operation finished" +msgstr "" + +#: .././refresh.py:197 +msgid "Number of video files analysed:" +msgstr "" + +#: .././refresh.py:203 +msgid "Video files already in the database:" +msgstr "" + +#: .././refresh.py:209 +msgid "New videos found and added to the database:" +msgstr "" + +#: .././refresh.py:383 .././tidy.py:663 +msgid "Checking:" +msgstr "" + +#: .././refresh.py:424 .././refresh.py:598 +msgid "Match:" +msgstr "" + +#: .././refresh.py:442 +msgid "Non-match:" +msgstr "" + +#: .././refresh.py:490 +msgid "New video:" +msgstr "" + +#: .././refresh.py:497 .././refresh.py:605 +msgid "matched:" +msgstr "" + +#: .././refresh.py:498 +msgid "new:" +msgstr "" + +#: .././refresh.py:580 +msgid "Missing:" +msgstr "" + +#: .././refresh.py:606 +msgid "missing:" +msgstr "" + +#: .././tidy.py:262 +msgid "Starting tidy operation, tidying up whole data directory" +msgstr "" + +#: .././tidy.py:271 +#, python-brace-format +msgid "Starting tidy operation, tidying up '{0}'" +msgstr "" + +#: .././tidy.py:277 .././tidy.py:289 .././tidy.py:299 .././tidy.py:309 +#: .././tidy.py:321 .././tidy.py:331 .././tidy.py:341 .././tidy.py:352 +#: .././tidy.py:362 .././tidy.py:372 .././tidy.py:382 .././tidy.py:392 +#: .././tidy.py:402 .././tidy.py:413 .././tidy.py:423 .././tidy.py:433 +#: .././tidy.py:443 +msgid "YES" +msgstr "" + +#: .././tidy.py:279 .././tidy.py:291 .././tidy.py:301 .././tidy.py:311 +#: .././tidy.py:323 .././tidy.py:333 .././tidy.py:343 .././tidy.py:354 +#: .././tidy.py:364 .././tidy.py:374 .././tidy.py:384 .././tidy.py:394 +#: .././tidy.py:404 .././tidy.py:415 .././tidy.py:425 .././tidy.py:435 +#: .././tidy.py:445 +msgid "NO" +msgstr "" + +#: .././tidy.py:283 +msgid "Check videos are not corrupted:" +msgstr "" + +#: .././tidy.py:295 +msgid "Delete corrupted videos:" +msgstr "" + +#: .././tidy.py:305 +msgid "Check videos do/don't exist:" +msgstr "" + +#: .././tidy.py:315 +msgid "Delete all video files:" +msgstr "" + +#: .././tidy.py:327 +msgid "Delete other video/audio files:" +msgstr "" + +#: .././tidy.py:337 +msgid "Remove no_URL videos from database:" +msgstr "" + +#: .././tidy.py:347 +msgid "Remove undownloaded duplicate videos from database:" +msgstr "" + +#: .././tidy.py:358 +msgid "Delete downloader archive files:" +msgstr "" + +#: .././tidy.py:368 +msgid "Move thumbnails into own folder:" +msgstr "" + +#: .././tidy.py:378 +msgid "Delete all thumbnail files:" +msgstr "" + +#: .././tidy.py:388 +msgid "Delete all .webp thumbnail files:" +msgstr "" + +#: .././tidy.py:398 +msgid "Convert .webp thumbnails to .jpg:" +msgstr "" + +#: .././tidy.py:408 +msgid "Move other metadata files into own folder:" +msgstr "" + +#: .././tidy.py:419 +msgid "Delete all description files:" +msgstr "" + +#: .././tidy.py:429 +msgid "Delete all metadata (JSON) files:" +msgstr "" + +#: .././tidy.py:439 +msgid "Delete all annotation files:" +msgstr "" + +#: .././tidy.py:449 +msgid "Convert .unknown_video file extensions to .mp4:" +msgstr "" + +#: .././tidy.py:487 +msgid "Tidy operation finished" +msgstr "" + +#: .././tidy.py:494 +msgid "Corrupted videos found:" +msgstr "" + +#: .././tidy.py:500 +msgid "Corrupted videos deleted:" +msgstr "" + +#: .././tidy.py:508 +msgid "New video files detected:" +msgstr "" + +#: .././tidy.py:514 +msgid "Missing video files detected:" +msgstr "" + +#: .././tidy.py:522 +msgid "Non-corrupted video files deleted:" +msgstr "" + +#: .././tidy.py:528 +msgid "Other video/audio files deleted:" +msgstr "" + +#: .././tidy.py:536 +msgid "No-URL videos removed from database:" +msgstr "" + +#: .././tidy.py:545 +msgid "Undownloaded duplicate videos removed from database:" +msgstr "" + +#: .././tidy.py:553 +msgid "Downloader archive files deleted:" +msgstr "" + +#: .././tidy.py:561 +msgid "Thumbnail files moved:" +msgstr "" + +#: .././tidy.py:569 +msgid "Thumbnail files deleted:" +msgstr "" + +#: .././tidy.py:577 +msgid ".webp thumbnail files deleted:" +msgstr "" + +#: .././tidy.py:585 +msgid ".webp thumbnails converted to .jpg:" +msgstr "" + +#: .././tidy.py:593 +msgid "Other metadata files moved:" +msgstr "" + +#: .././tidy.py:601 +msgid "Description files deleted:" +msgstr "" + +#: .././tidy.py:609 +msgid "Metadata (JSON) files deleted:" +msgstr "" + +#: .././tidy.py:617 +msgid "Annotation files deleted:" +msgstr "" + +#: .././tidy.py:625 +msgid "File extensions converted:" +msgstr "" + +#: .././tidy.py:824 +msgid "Deleted (possibly) corrupted video file:" +msgstr "" + +#: .././tidy.py:837 +msgid "Failed to delete (possibly) corrupted video file:" +msgstr "" + +#: .././tidy.py:848 .././tidy.py:1568 +msgid "Video file might be corrupt:" +msgstr "" + +#: .././tidy.py:889 +msgid "Video file exists:" +msgstr "" + +#: .././tidy.py:907 +msgid "Video file doesn't exist:" +msgstr "" + +#: .././updates.py:226 +msgid "Starting update operation, installing FFmpeg" +msgstr "" + +#: .././updates.py:266 +msgid "FFmpeg installation did not start" +msgstr "" + +#. Show a confirmation in the the Output tab (or wizard window textview) +#: .././updates.py:281 .././updates.py:393 .././updates.py:506 +#: .././updates.py:699 +msgid "Update operation finished" +msgstr "" + +#: .././updates.py:338 +msgid "Starting update operation, installing matplotlib" +msgstr "" + +#: .././updates.py:378 +msgid "matplotlib installation did not start" +msgstr "" + +#: .././updates.py:451 +msgid "Starting update operation, installing streamlink" +msgstr "" + +#: .././updates.py:491 +msgid "streamlink installation did not start" +msgstr "" + +#: .././updates.py:565 +msgid "Starting update operation, installing/updating " +msgstr "" + +#: .././updates.py:679 .././updates.py:771 +msgid "Update did not start" +msgstr "" diff --git a/nsis/tartube_install_64bit.nsi b/nsis/tartube_install_64bit.nsi index 8ffb97f..0e0b93c 100644 --- a/nsis/tartube_install_64bit.nsi +++ b/nsis/tartube_install_64bit.nsi @@ -1,4 +1,4 @@ -# Tartube v2.5.028 installer script for MS Windows +# Tartube v2.5.040 installer script for MS Windows # # Copyright (C) 2019-2024 A S Lewis # @@ -294,7 +294,7 @@ ;Name and file Name "Tartube" - OutFile "install-tartube-2.5.028-64bit.exe" + OutFile "install-tartube-2.5.040-64bit.exe" ;Default installation folder InstallDir "$LOCALAPPDATA\Tartube" @@ -397,7 +397,7 @@ Section "Tartube" SecClient # "Publisher" "A S Lewis" # WriteRegStr HKLM \ # "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \ -# "DisplayVersion" "2.5.028" +# "DisplayVersion" "2.5.040" # Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" diff --git a/pack/bin/no_download/tartube b/pack/bin/no_download/tartube index 9020858..979dcf6 100644 --- a/pack/bin/no_download/tartube +++ b/pack/bin/no_download/tartube @@ -44,8 +44,8 @@ import mainapp # 'Global' variables __packagename__ = 'tartube' -__version__ = '2.5.028' -__date__ = '6 Aug 2024' +__version__ = '2.5.040' +__date__ = '31 Aug 2024' __copyright__ = 'Copyright \xa9 2019-2024 A S Lewis' __license__ = """ Copyright \xa9 2019-2024 A S Lewis. diff --git a/pack/bin/pkg/tartube b/pack/bin/pkg/tartube index d1911c0..9329389 100644 --- a/pack/bin/pkg/tartube +++ b/pack/bin/pkg/tartube @@ -44,8 +44,8 @@ import mainapp # 'Global' variables __packagename__ = 'tartube' -__version__ = '2.5.028' -__date__ = '6 Aug 2024' +__version__ = '2.5.040' +__date__ = '31 Aug 2024' __copyright__ = 'Copyright \xa9 2019-2024 A S Lewis' __license__ = """ Copyright \xa9 2019-2024 A S Lewis. diff --git a/pack/bin/strict/tartube b/pack/bin/strict/tartube index ddb26f0..ac17055 100644 --- a/pack/bin/strict/tartube +++ b/pack/bin/strict/tartube @@ -44,8 +44,8 @@ import mainapp # 'Global' variables __packagename__ = 'tartube' -__version__ = '2.5.028' -__date__ = '6 Aug 2024' +__version__ = '2.5.040' +__date__ = '31 Aug 2024' __copyright__ = 'Copyright \xa9 2019-2024 A S Lewis' __license__ = """ Copyright \xa9 2019-2024 A S Lewis. diff --git a/pack/tartube.1 b/pack/tartube.1 index 77a883b..27ef0a5 100644 --- a/pack/tartube.1 +++ b/pack/tartube.1 @@ -1,4 +1,4 @@ -.TH man 1 "8 Aug 2024" "2.5.027" "tartube man page" +.TH man 1 "31 Aug 2024" "2.5.040" "tartube man page" .SH NAME tartube \- GUI front-end for youtube-dl and yt-dlp .SH SYNOPSIS diff --git a/setup.py b/setup.py index 92101e0..7853b76 100644 --- a/setup.py +++ b/setup.py @@ -164,7 +164,7 @@ # Setup setuptools.setup( name = 'tartube', - version = '2.5.028', + version = '2.5.040', description = 'GUI front-end for youtube-dl and yt-dlp', long_description = long_description, long_description_content_type = 'text/plain', diff --git a/tartube/config.py b/tartube/config.py index 39ed0fb..cdf55e4 100644 --- a/tartube/config.py +++ b/tartube/config.py @@ -20730,15 +20730,18 @@ def setup_general_application_tab(self, inner_notebook): formats.LOCALE_LIST.index(self.app_obj.current_locale) + 1 ) + # N.B. The call to self.on_locale_combo_changed() can create another + # secondary grid at 0, 4 + # Preferences mode self.add_label(grid, '' + _('Preferences mode') + '', - 0, 4, grid_width, 1, + 0, 5, grid_width, 1, ) # (To avoid messing up the neat format of the rows above, add a # secondary grid, and put the next set of widgets inside it) - grid2 = self.add_secondary_grid(grid, 0, 5, grid_width, 1) + grid2 = self.add_secondary_grid(grid, 0, 6, grid_width, 1) if self.app_obj.simple_prefs_flag: frame = self.add_pixbuf(grid2, @@ -31654,7 +31657,7 @@ def on_filter_options_button_toggled(self, checkbutton): """Called from callback in self.setup_downloader_forks_tab(). Sets the flag to filter out yt-dlp options, when using a fork. - + Args: checkbutton (Gtk.Checkbutton): The widget clicked @@ -32218,7 +32221,7 @@ def on_locale_combo_changed(self, combo, grid): self.app_obj.set_override_local(locale) # Add some more widgets to tell the user to restart Tartube - # As the user might not know the language, show an icon as well as + # As the user might not know the language, show an icon as well as # some text # Use an extra grid to avoid messing up the layout of widgets above grid2 = self.add_secondary_grid(grid, 0, 4, 3, 1) @@ -32236,8 +32239,7 @@ def on_locale_combo_changed(self, combo, grid): self.add_label(grid2, '' + _( - 'The new setting will be applied when Tartube' \ - + ' restarts', + 'The new setting will be applied when Tartube restarts', ) + '', 1, 0, 1, 1, ) @@ -32563,7 +32565,7 @@ def on_move_container_button_toggled(self, checkbutton): Enables/disables prompting the user before moving channels/playlists/ folders in the Video Index. - + Args: checkbutton (Gtk.CheckButton): The widget clicked @@ -32584,7 +32586,7 @@ def on_move_select_button_toggled(self, checkbutton): Enables/disables selecting a channel/playlist/folder, after media has been moved into it. - + Args: checkbutton (Gtk.CheckButton): The widget clicked @@ -32598,14 +32600,14 @@ def on_move_select_button_toggled(self, checkbutton): and self.app_obj.dialogue_move_select_flag: self.app_obj.set_dialogue_move_select_flag(False) - + def on_move_video_button_toggled(self, checkbutton): """Called from a callback in self.setup_windows_dialogues_tab(). Enables/disables prompting the user before moving videos in the Video Index. - + Args: checkbutton (Gtk.CheckButton): The widget clicked @@ -32619,7 +32621,7 @@ def on_move_video_button_toggled(self, checkbutton): and self.app_obj.dialogue_move_video_flag: self.app_obj.set_dialogue_move_video_flag(False) - + def on_moviepy_button_toggled(self, checkbutton): """Called from callback in self.setup_general_modules_tab(). diff --git a/tartube/downloads.py b/tartube/downloads.py index 14c75c1..9c0ae1f 100644 --- a/tartube/downloads.py +++ b/tartube/downloads.py @@ -2296,7 +2296,6 @@ def __init__(self, app_obj, operation_type, media_data_list, \ if not dbid in check_dict: obj = self.app_obj.media_reg_dict[dbid] - self.create_item( obj, scheduled_obj, @@ -2577,20 +2576,23 @@ def create_item(self, media_data_obj, scheduled_obj=None, Return values: - The downloads.DownloadItem object created (or None if no object is - created; only required by calls from - mainapp.TartubeApp.download_watch_videos() ) + A list of downloads.DownloadItem objects created (an empty list if + none are created) """ if DEBUG_FUNC_FLAG: utils.debug_time('dld 2592 create_item') + # (Use two lists for code clarity) + return_list = [] + empty_list = [] + # Sanity check - if no URL is specified, then there is nothing to # download if not isinstance(media_data_obj, media.Folder) \ and media_data_obj.source is None: - return None + return empty_list # Apply the operation_type override, if specified if override_operation_type is not None: @@ -2604,7 +2606,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, 'Invalid argument in Classic Mode tab download operation', ) - return None + return empty_list else: @@ -2644,7 +2646,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, # (because they are all children of some other non-private folder) if isinstance(media_data_obj, media.Folder) \ and media_data_obj.priv_flag: - return None + return empty_list # Don't download videos that we already have # Don't download videos if they're in a channel or playlist (since @@ -2667,7 +2669,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, and not media_data_obj.dbid \ in self.app_obj.temp_stamp_buffer_dict \ and not media_data_obj.dbid in self.app_obj.temp_slice_buffer_dict: - return + return empty_list if ( not isinstance(media_data_obj.parent_obj, media.Folder) \ @@ -2680,7 +2682,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, ) or media_data_obj.dl_flag ) ): - return None + return empty_list if isinstance(media_data_obj.parent_obj, media.Folder) \ and ( @@ -2692,7 +2694,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, and media_data_obj.file_name \ and not media_data_obj.live_mode \ and utils.find_thumbnail(self.app_obj, media_data_obj): - return None + return empty_list if custom_flag \ and self.custom_dl_obj \ @@ -2710,7 +2712,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, ) ) ): - return None + return empty_list elif ( self.custom_dl_obj.ignore_stream_flag \ @@ -2725,7 +2727,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, self.custom_dl_obj.dl_if_old_stream_flag \ and not media_data_obj.was_live_flag ): - return + return empty_list # Don't download videos in channels/playlists/folders which have been # marked unavailable, because their external directory is not @@ -2733,11 +2735,11 @@ def create_item(self, media_data_obj, scheduled_obj=None, if isinstance(media_data_obj, media.Video): if media_data_obj.parent_obj.dbid \ in self.app_obj.container_unavailable_dict: - return None + return empty_list elif not isinstance(media_data_obj, media.Video) \ and media_data_obj.dbid in self.app_obj.container_unavailable_dict: - return None + return empty_list # Don't simulated downloads of video in channels/playlists/folders # whose whose .dl_no_db_flag is set @@ -2751,21 +2753,19 @@ def create_item(self, media_data_obj, scheduled_obj=None, and media_data_obj.dl_no_db_flag ) ): - return None + return empty_list # Don't create a download.DownloadItem object if checking/download is # disabled for the media data object if not isinstance(media_data_obj, media.Video) \ and media_data_obj.dl_disable_flag: - return None + return empty_list # Don't create a download.DownloadItem object for a media.Folder, # obviously # Don't create a download.DownloadItem object for a media.Channel or # media.Playlist during a custom download in which videos are to be # downloaded independently - download_item_obj = None - if ( isinstance(media_data_obj, media.Video) and custom_flag @@ -2822,7 +2822,9 @@ def create_item(self, media_data_obj, scheduled_obj=None, ignore_limits_flag, ) - # ...and add it to our list + # ...and add it to our lists + return_list.append(download_item_obj) + if broadcast_flag: self.download_item_list.insert(0, download_item_obj.item_id) elif priority_flag: @@ -2853,7 +2855,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, and self.custom_dl_obj.dl_by_video_flag ): for child_obj in media_data_obj.child_list: - self.create_item( + return_list += self.create_item( child_obj, scheduled_obj, operation_type, @@ -2863,7 +2865,7 @@ def create_item(self, media_data_obj, scheduled_obj=None, ) # Procedure complete - return download_item_obj + return return_list def create_dummy_item(self, media_data_obj): @@ -3461,6 +3463,12 @@ def __init__(self, download_manager_obj, download_worker_obj, \ # media.Video object, but a channel/playlist is detected (regardless # of the value of mainapp.TartubeApp.operation_convert_mode) self.url_is_not_video_flag = False + # Flag which specifies whether formats.ACTIVE_STAGE_PRE_PROCESS or + # formats.ACTIVE_STAGE_POST_PROCESS currently applies + # Set to True by self.extract_stdout_data() when + # formats.ACTIVE_STAGE_DOWNLOAD is detected; set back to False by the + # same function when the start of a new video download is detected + self.video_download_started_flag = False # Buffer for youtube-dl error/warning messages that can be associated # with a particular video ID @@ -5167,7 +5175,7 @@ def convert_video_to_container(self): # Add the new channel/playlist to the download manager's list of # things to download... - new_download_item_obj \ + return_list \ = self.download_manager_obj.download_list_obj.create_item( new_container_obj, self.download_item_obj.scheduled_obj, @@ -5175,13 +5183,15 @@ def convert_video_to_container(self): False, # priority_flag self.download_item_obj.ignore_limits_flag, ) - # ...and add a row the Progress List - GObject.timeout_add( - 0, - app_obj.main_win_obj.progress_list_add_row, - new_download_item_obj.item_id, - new_download_item_obj.media_data_obj, - ) + + # ...and add rows in the Progress List + for new_download_item_obj in return_list: + GObject.timeout_add( + 0, + app_obj.main_win_obj.progress_list_add_row, + new_download_item_obj.item_id, + new_download_item_obj.media_data_obj, + ) # Stop this download job, allowing the replacement one to start self.stop() @@ -5366,7 +5376,7 @@ def extract_stdout_data(self, stdout): self.confirm_archived_video(match.group(1)) self.download_manager_obj.register_video('other') return dl_stat_dict - + # Likewise for the frame messages from youtube-dl direct downloads match = re.search( r'^frame.*size\=\s*([\S]+).*bitrate\=\s*([\S]+)', @@ -5377,6 +5387,10 @@ def extract_stdout_data(self, stdout): dl_stat_dict['speed'] = match.groups()[1] return dl_stat_dict + # Detect the start of a new channel/playlist/video download + if stdout_list[1] == 'Extracting' and stdout_list[2] == 'URL:': + self.video_download_started_flag = False + # Extract the data. Because of the (small) possibility of a Python # IndexError, we need to wrap the whole thing in a try..except try: @@ -5385,6 +5399,8 @@ def extract_stdout_data(self, stdout): if stdout_list[0] == '[download]': dl_stat_dict['status'] = formats.ACTIVE_STAGE_DOWNLOAD + self.video_download_started_flag = True + if self.network_error_time is not None: self.network_error_time = None @@ -5515,6 +5531,7 @@ def extract_stdout_data(self, stdout): # https://github.com/rg3/youtube-dl/blob/master/youtube_dl/ # downloader/hls.py#L54 dl_stat_dict['status'] = formats.ACTIVE_STAGE_DOWNLOAD + self.video_download_started_flag = True if len(stdout_list) == 7: segment_no = float(stdout_list[6]) @@ -5688,9 +5705,14 @@ def extract_stdout_data(self, stdout): # (Just ignore this output) return dl_stat_dict + elif self.video_download_started_flag: + + # The download has already started + dl_stat_dict['status'] = formats.ACTIVE_STAGE_POST_PROCESS + else: - # The download has started + # The download is about to start dl_stat_dict['status'] = formats.ACTIVE_STAGE_PRE_PROCESS except: @@ -11205,7 +11227,10 @@ def run(self): # then the mainapp.TartubeApp function has already been called if self.running_flag: self.running_flag = False - self.app_obj.livestream_manager_finished() + GObject.timeout_add( + 0, + self.app_obj.livestream_manager_finished, + ) def stop_livestream_operation(self): @@ -11231,7 +11256,10 @@ def stop_livestream_operation(self): # Call the mainapp.TartubeApp function to update everything (it's not # called from self.run(), in this situation) - self.app_obj.livestream_manager_finished() + GObject.timeout_add( + 0, + self.app_obj.livestream_manager_finished, + ) class MiniJSONFetcher(object): diff --git a/tartube/formats.py b/tartube/formats.py index cd6d463..946d111 100644 --- a/tartube/formats.py +++ b/tartube/formats.py @@ -47,6 +47,7 @@ 'tr', 'Türkçe', 'vi', 'Tiếng Việt', 'zh_CN', '中文简体', + 'zh_Hant', '正體字', ] LOCALE_DEFAULT = locale_setup_list[0] diff --git a/tartube/mainapp.py b/tartube/mainapp.py index a9ad4bb..3d91403 100644 --- a/tartube/mainapp.py +++ b/tartube/mainapp.py @@ -2002,7 +2002,7 @@ def __init__(self, *args, **kwargs): # Applies only to the Videos tab; the Classic Mode tab has a button # near the bottom, which the user can use to ignore the archive file self.block_ytdl_archive_flag = False - + # Flag set to True if, when checking videos/channels/playlists, we # should apply a timeout (in case youtube-dl gets stuck downloading # the JSON data) @@ -4265,7 +4265,7 @@ def system_error(self, error_code, msg): currently assigned thus: 100-199: mainapp.py (in use: 101-197) - 200-299: mainwin.py (in use: 201-276) + 200-299: mainwin.py (in use: 201-277) 300-399: downloads.py (in use: 301-310) 400-499: config.py (in use: 401-406) 500-599: utils.py (in use: 501-503) @@ -5691,7 +5691,7 @@ def load_config_ytdl_update(self, version, json_dict): self.ytdl_update_list = ytdl_update_list - + def load_config_import_scheduled(self, version, json_dict): """"Called by self.load_config(). @@ -8339,7 +8339,7 @@ def update_db(self, version): natname = re.sub(r'^[\s]+', ' ', natname) media_data_obj.natname = natname - + # --- Do this last, or the call to .check_integrity_db() fails ------- # -------------------------------------------------------------------- @@ -11944,7 +11944,7 @@ def download_manager_finished(self): orig_media_data_list \ = self.download_manager_obj.download_list_obj.orig_media_data_list # For Classic Mode tab custom downloads, get the list of videos which - # were extrascted, along with their metadata + # were extracted, along with their metadata classic_extract_list = self.download_manager_obj.classic_extract_list # Get the number of videos downloaded (real and simulated), as well as @@ -12033,7 +12033,7 @@ def download_manager_finished(self): # If the youtube-dl archive file(s) were temporarily blocked for a # video re-download, re-enable them self.block_ytdl_archive_flag = False - + # If Tartube is due to shut down, then shut it down show_newbie_dialogue_flag = False @@ -13417,7 +13417,8 @@ def livestream_manager_start(self): def livestream_manager_finished(self): - """Called by downloads.StreamManager.run(). + """Called by downloads.StreamManager.run() and + .stop_livestream_operation(). The livestream operation has finished, so update IVs and main window widgets. @@ -13447,15 +13448,11 @@ def livestream_manager_finished(self): # Any videos whose livestream status has changed must be redrawn in # the Video catalogue - # (This function is called from the downloads.StreamManager object, so - # to prevent a crash, its calls must be wrapped in a timer) if self.main_win_obj.video_index_current_dbid \ == self.fixed_live_folder.dbid: # Livestreams folder visible; just redraw it - GObject.timeout_add( - 0, - self.main_win_obj.video_catalogue_redraw_all, + self.main_win_obj.video_catalogue_redraw_all( self.fixed_live_folder.dbid, ) @@ -13471,12 +13468,7 @@ def livestream_manager_finished(self): temp_dict[this_obj.dbid] = this_obj for video_obj in temp_dict.values(): - - GObject.timeout_add( - 0, - self.main_win_obj.video_catalogue_update_video, - video_obj, - ) + self.main_win_obj.video_catalogue_update_video(video_obj) # Notify the user and/or open videos in the system's web browser, if # a waiting livestream has just gone live (and if allowed to do so) @@ -13548,10 +13540,11 @@ def livestream_manager_finished(self): else: # Download operation already in progress + return_list = [] for video_obj in dl_dict.values(): - download_item_obj \ - = self.download_manager_obj.download_list_obj.create_item( + return_list \ + += self.download_manager_obj.download_list_obj.create_item( video_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -13559,16 +13552,16 @@ def livestream_manager_finished(self): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: - # Add a row to the Progress List - self.main_win_obj.progress_list_add_row( - download_item_obj.item_id, - video_obj, - ) + # Add a row to the Progress List + self.main_win_obj.progress_list_add_row( + download_item_obj.item_id, + download_item_obj.media_data_obj, + ) - # Update the main window's progress bar - self.download_manager_obj.nudge_progress_bar() + # Update the main window's progress bar + self.download_manager_obj.nudge_progress_bar() def process_manager_start(self, options_obj, video_list): @@ -15210,7 +15203,7 @@ def move_container_to_top(self, media_data_obj): dialogue_move_select_flag = True else: dialogue_move_select_flag = False - + if dialogue_win.button2.get_active(): dialogue_move_container_flag = True else: @@ -15230,7 +15223,7 @@ def move_container_to_top(self, media_data_obj): if response == Gtk.ResponseType.YES: self.move_container_to_top_continue(media_data_obj) - + # Don't prompt, just move else: self.move_container_to_top_continue(media_data_obj) @@ -15439,7 +15432,7 @@ def move_container(self, source_obj, dest_obj): dialogue_move_select_flag = True else: dialogue_move_select_flag = False - + if dialogue_win.button2.get_active(): dialogue_move_container_flag = True else: @@ -15459,7 +15452,7 @@ def move_container(self, source_obj, dest_obj): if response == Gtk.ResponseType.YES: self.move_container_continue(source_obj, dest_obj) - + # Don't prompt, just move else: self.move_container_continue(source_obj, dest_obj) @@ -15586,7 +15579,7 @@ def move_videos(self, dest_obj, video_list): dialogue_move_select_flag = True else: dialogue_move_select_flag = False - + if dialogue_win.button2.get_active(): dialogue_move_video_flag = True else: @@ -15605,7 +15598,7 @@ def move_videos(self, dest_obj, video_list): if response == Gtk.ResponseType.YES: self.move_videos_continue(dest_obj, video_list) - + # Don't prompt, just move else: self.move_videos_continue(dest_obj, video_list) @@ -15766,7 +15759,7 @@ def move_videos_continue(self, dest_obj, video_list): self.main_win_obj.video_catalogue_redraw_all( self.main_win_obj.video_index_current_dbid, ) - + # Append video IDs to the archive file if archive_path is not None and id_list: @@ -15787,7 +15780,7 @@ def move_videos_continue(self, dest_obj, video_list): # Show confirmation dialogue, if required (but always show one on # failure) if self.dialogue_move_video_flag or fail_count: - + msg = _('Videos moved') + ': ' + str(success_count) \ + '\n' + _('Videos not moved') + ': ' \ + str(fail_count + already_count) @@ -20916,9 +20909,11 @@ def download_watch_videos(self, video_list, watch_flag=True): # Download operation already in progress. Add these videos to its # list + return_list = [] for video_obj in video_list: - download_item_obj \ - = self.download_manager_obj.download_list_obj.create_item( + + return_list \ + += self.download_manager_obj.download_list_obj.create_item( video_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -20926,16 +20921,16 @@ def download_watch_videos(self, video_list, watch_flag=True): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: - # Add a row to the Progress List - self.main_win_obj.progress_list_add_row( - download_item_obj.item_id, - video_obj, - ) + # Add a row to the Progress List + self.main_win_obj.progress_list_add_row( + download_item_obj.item_id, + download_item_obj.media_data_obj, + ) - # Update the main window's progress bar - self.download_manager_obj.nudge_progress_bar() + # Update the main window's progress bar + self.download_manager_obj.nudge_progress_bar() else: @@ -23033,7 +23028,7 @@ def script_slow_timer_insert_download(self, media_data_obj, scheduled_obj, else: priority_flag = False - download_item_obj \ + return_list \ = self.download_manager_obj.download_list_obj.create_item( media_data_obj, scheduled_obj, @@ -23042,12 +23037,12 @@ def script_slow_timer_insert_download(self, media_data_obj, scheduled_obj, ignore_limits_flag, ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.main_win_obj.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -23118,15 +23113,19 @@ def script_fast_timer_callback(self): # If a list of videos, rather than a grid, is visible, then insert any # rows that were to be inserted, but which could not be a few moments # ago - GObject.timeout_add( - 0, - self.main_win_obj.video_catalogue_retry_insert_items, - ) + if self.main_win_obj.video_catalogue_temp_list: + GObject.timeout_add( + 0, + self.main_win_obj.video_catalogue_retry_insert_items, + ) # Reset confirmation messages in the Drag and Drop tab, if it's time # to reset them for wrapper_obj in self.main_win_obj.drag_drop_dict.values(): - wrapper_obj.check_reset() + + if wrapper_obj.reset_time is not None \ + and wrapper_obj.reset_time < time.time(): + wrapper_obj.do_reset() # Return 1 to keep the timer going return 1 @@ -27304,7 +27303,7 @@ def set_block_ytdl_archive_flag(self, flag): else: self.block_ytdl_archive_flag = True - + def set_catalogue_draw_blocked_flag(self, flag): if not flag: @@ -27776,7 +27775,7 @@ def set_dialogue_move_select_flag(self, flag): else: self.dialogue_move_select_flag = True - + def set_dialogue_move_video_flag(self, flag): if not flag: diff --git a/tartube/mainwin.py b/tartube/mainwin.py index 06cf9d2..2e7c8da 100644 --- a/tartube/mainwin.py +++ b/tartube/mainwin.py @@ -11464,25 +11464,23 @@ def video_catalogue_retry_insert_items(self): if DEBUG_FUNC_FLAG: utils.debug_time('mwn 11462 video_catalogue_retry_insert_items') - if self.video_catalogue_temp_list: + while self.video_catalogue_temp_list: - while self.video_catalogue_temp_list: + wrapper_obj = self.video_catalogue_temp_list.pop() - wrapper_obj = self.video_catalogue_temp_list.pop() - - try: - self.catalogue_listbox.add(wrapper_obj) - except: - # Still can't add the row; try again later - self.video_catalogue_temp_list.append(wrapper_obj) - return + try: + self.catalogue_listbox.add(wrapper_obj) + except: + # Still can't add the row; try again later + self.video_catalogue_temp_list.append(wrapper_obj) + return - # All items added. Force the Gtk.ListBox to sort its rows, so that - # videos are displayed in the correct order - self.catalogue_listbox.invalidate_sort() + # All items added. Force the Gtk.ListBox to sort its rows, so that + # videos are displayed in the correct order + self.catalogue_listbox.invalidate_sort() - # Procedure complete - self.catalogue_listbox.show_all() + # Procedure complete + self.catalogue_listbox.show_all() def video_catalogue_delete_video(self, video_obj): @@ -16334,7 +16332,7 @@ def on_video_index_check(self, menu_item, media_data_obj): return # Add the channel/playlist/folder to the download list - download_item_obj = download_manager_obj.download_list_obj.create_item( + return_list = download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'sim', # override_operation_type @@ -16342,12 +16340,12 @@ def on_video_index_check(self, menu_item, media_data_obj): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -16626,7 +16624,7 @@ def on_video_index_download(self, menu_item, media_data_obj): return # Add the channel/playlist/folder to the download list - download_item_obj = download_manager_obj.download_list_obj.create_item( + return_list = download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -16634,12 +16632,12 @@ def on_video_index_download(self, menu_item, media_data_obj): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -18364,8 +18362,7 @@ def on_video_catalogue_check(self, menu_item, media_data_obj): # Download operation already in progress. Add this video to its # list - download_item_obj \ - = download_manager_obj.download_list_obj.create_item( + return_list = download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'sim', # override_operation_type @@ -18373,12 +18370,12 @@ def on_video_catalogue_check(self, menu_item, media_data_obj): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -18429,9 +18426,11 @@ def on_video_catalogue_check_multi(self, menu_item, media_data_list): # Download operation already in progress. Add these video to its # list + return_list = [] for media_data_obj in media_data_list: - download_item_obj \ - = download_manager_obj.download_list_obj.create_item( + + return_list \ + += download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'sim', # override_operation_type @@ -18439,16 +18438,16 @@ def on_video_catalogue_check_multi(self, menu_item, media_data_list): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: - # Add a row to the Progress List - self.progress_list_add_row( - download_item_obj.item_id, - media_data_obj, - ) + # Add a row to the Progress List + self.progress_list_add_row( + download_item_obj.item_id, + download_item_obj.media_data_obj, + ) - # Update the main window's progress bar - self.app_obj.download_manager_obj.nudge_progress_bar() + # Update the main window's progress bar + self.app_obj.download_manager_obj.nudge_progress_bar() else: @@ -18783,8 +18782,7 @@ def on_video_catalogue_download(self, menu_item, media_data_obj): # Download operation already in progress. Add this video to its # list - download_item_obj \ - = download_manager_obj.download_list_obj.create_item( + return_list = download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -18792,12 +18790,12 @@ def on_video_catalogue_download(self, menu_item, media_data_obj): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -18852,9 +18850,11 @@ def on_video_catalogue_download_multi(self, menu_item, media_data_list, # Download operation already in progress. Add these videos to its # list + return_list = [] for media_data_obj in media_data_list: - download_item_obj \ - = download_manager_obj.download_list_obj.create_item( + + return_list \ + += download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -18862,16 +18862,16 @@ def on_video_catalogue_download_multi(self, menu_item, media_data_list, False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: - # Add a row to the Progress List - self.progress_list_add_row( - download_item_obj.item_id, - media_data_obj, - ) + # Add a row to the Progress List + self.progress_list_add_row( + download_item_obj.item_id, + download_item_obj.media_data_obj, + ) - # Update the main window's progress bar - self.app_obj.download_manager_obj.nudge_progress_bar() + # Update the main window's progress bar + self.app_obj.download_manager_obj.nudge_progress_bar() else: @@ -19405,8 +19405,7 @@ def on_video_catalogue_output_override(self, menu_item, media_data_obj): # Download operation already in progress. Add this video to its # list - download_item_obj \ - = download_manager_obj.download_list_obj.create_item( + return_list = download_manager_obj.download_list_obj.create_item( media_data_obj, None, # media.Scheduled object 'real', # override_operation_type @@ -19414,12 +19413,12 @@ def on_video_catalogue_output_override(self, menu_item, media_data_obj): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.progress_list_add_row( download_item_obj.item_id, - media_data_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -20121,7 +20120,7 @@ def on_video_catalogue_re_download(self, menu_item, media_data_obj): # re-downloading of the video # Temporarily block usage of the archive file self.app_obj.set_block_ytdl_archive_flag(True) - + # Now we're ready to start the download operation self.app_obj.download_manager_start('real', False, [media_data_obj] ) @@ -27506,7 +27505,7 @@ def on_click_watch_player_label(self, label, uri): else: # Download operation already in progress - download_item_obj \ + return_list \ = app_obj.download_manager_obj.download_list_obj.create_item( self.video_obj, None, # media.Scheduled object @@ -27515,12 +27514,12 @@ def on_click_watch_player_label(self, label, uri): False, # ignore_limits_flag ) - if download_item_obj: + for download_item_obj in return_list: # Add a row to the Progress List self.main_win_obj.progress_list_add_row( download_item_obj.item_id, - self.video_obj, + download_item_obj.media_data_obj, ) # Update the main window's progress bar @@ -29815,23 +29814,21 @@ def update_widgets(self): ) - def check_reset(self): + def do_reset(self): """Called (several times a second) by mainapp.TartubeApp.script_fast_timer_callback(). - If it's time to remove the message displayed in the dropzone, then - remove it and update IVs. + It's time to remove the message displayed in the dropzone, so remove it + and update IVs. """ if DEBUG_FUNC_FLAG: - utils.debug_time('mwn 29811 check_reset') + utils.debug_time('mwn 29811 do_reset') - if self.reset_time is not None \ - and self.reset_time < time.time(): - self.update_text = None - self.reset_time = None - self.update_widgets() + self.update_text = None + self.reset_time = None + self.update_widgets() # Callback class methods @@ -30081,15 +30078,40 @@ def update_icon(self): else: icon = formats.STATUS_ICON_DICT['default_icon'] - self.set_from_file( - os.path.abspath( - os.path.join( - self.app_obj.main_win_obj.icon_dir_path, - 'status', - icon, - ), + # DEBUG: Git #577: this seems to be the source of the + # 'cairo_surface_reference' crashes, but they are difficult to + # reproduce; perhaps this will work +# self.set_from_file( +# os.path.abspath( +# os.path.join( +# self.app_obj.main_win_obj.icon_dir_path, +# 'status', +# icon, +# ), +# ) +# ) + + try: + self.set_from_file( + os.path.abspath( + os.path.join( + self.app_obj.main_win_obj.icon_dir_path, + 'status', + icon, + ), + ) ) - ) + + except Exception as e: + self.app_obj.system_error( + 277, + 'Disabling system tray icon after Gtk error: ' + str(e) + ) + + self.app_obj.set_show_status_icon_flag(False) + self.app_obj.set_open_in_tray_flag(False) + self.app_obj.set_close_to_tray_flag(False) + self.app_obj.set_restore_posn_from_tray_flag(False) # Callback class methods @@ -33794,7 +33816,7 @@ def __init__(self, main_win_obj, media_data_obj, empty_flag): self.button = None # Gtk.RadioButton self.button2 = None # Gtk.RadioButton self.button3 = None # Gtk.CheckButton - + # IV list - other # --------------- @@ -36054,7 +36076,7 @@ class MoveContainerDialogue(Gtk.Dialog): Python class handling a dialogue window that prompts the user for confirmation, before a media.Channel, media.Playlist or media.Folder object in the Video Index. - + Args: main_win_obj (mainwin.MainWin): The parent main window @@ -36164,7 +36186,7 @@ def __init__(self, main_win_obj, source_obj, dest_obj): main_win_obj.pixbuf_dict['warning_large'], ) grid.attach(image, 0, 2, 1, 1) - + label2 = Gtk.Label( utils.tidy_up_long_string( _( @@ -36215,7 +36237,7 @@ class MoveVideoDialogue(Gtk.Dialog): dest_obj (media.Channel, media.Playlist or media.Folder): The destination container - + media_list (list): List of media.Video objects to be deleted """ @@ -36306,7 +36328,7 @@ def __init__(self, main_win_obj, dest_obj, media_list): main_win_obj.pixbuf_dict['warning_large'], ) grid.attach(image, 0, 2, 1, 1) - + label2 = Gtk.Label( utils.tidy_up_long_string( _( diff --git a/tartube/po/messages.pot b/tartube/po/messages.pot index 7b589b1..bf00626 100644 --- a/tartube/po/messages.pot +++ b/tartube/po/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-02 18:46+0000\n" +"POT-Creation-Date: 2024-08-31 14:10+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,27 +17,27 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: .././mainapp.py:316 +#: .././mainapp.py:317 msgid "Tiny" msgstr "" -#: .././mainapp.py:317 +#: .././mainapp.py:318 msgid "Small" msgstr "" -#: .././mainapp.py:318 .././config.py:7201 +#: .././mainapp.py:319 .././config.py:7201 msgid "Medium" msgstr "" -#: .././mainapp.py:319 +#: .././mainapp.py:320 msgid "Large" msgstr "" -#: .././mainapp.py:320 +#: .././mainapp.py:321 msgid "Enormous" msgstr "" -#: .././mainapp.py:1109 +#: .././mainapp.py:1116 msgid "" "Failed to convert a thumbnail from .webp to .jpg. No more conversions will " "be attempted until you install FFmpeg on your system, or (if FFmpeg is " @@ -46,68 +46,68 @@ msgid "" "conversions" msgstr "" -#: .././mainapp.py:2392 +#: .././mainapp.py:2413 msgid "" "TRANSLATOR'S NOTE: Videos in the Videos tab can be displayed in one of " "several formats" msgstr "" -#: .././mainapp.py:2399 +#: .././mainapp.py:2420 msgid "_Basic list" msgstr "" -#: .././mainapp.py:2404 +#: .././mainapp.py:2425 msgid "Basic list with _container names" msgstr "" -#: .././mainapp.py:2409 +#: .././mainapp.py:2430 msgid "_Thumbnails" msgstr "" -#: .././mainapp.py:2414 +#: .././mainapp.py:2435 msgid "Thumbnails and _extra labels" msgstr "" -#: .././mainapp.py:2419 +#: .././mainapp.py:2440 msgid "T_humbnails and container names" msgstr "" -#: .././mainapp.py:2424 +#: .././mainapp.py:2445 msgid "Th_umbnails, container names and extra labels" msgstr "" -#: .././mainapp.py:2429 +#: .././mainapp.py:2450 msgid "_Grid" msgstr "" -#: .././mainapp.py:2434 +#: .././mainapp.py:2455 msgid "G_rid with extra labels" msgstr "" -#: .././mainapp.py:3674 +#: .././mainapp.py:3695 msgid "" "Tartube can't create the folder in which its configuration file is saved" msgstr "" #. Load/save has been disabled. Show the error message in a dialogue #. window, then shut down -#: .././mainapp.py:3721 +#: .././mainapp.py:3742 msgid "Tartube failed to start because:" msgstr "" -#: .././mainapp.py:3729 +#: .././mainapp.py:3750 msgid "If you don't know how to resolve this error, please contact the authors" msgstr "" -#: .././mainapp.py:3962 +#: .././mainapp.py:3983 msgid "Because of an error, file load/save has been disabled" msgstr "" -#: .././mainapp.py:3971 +#: .././mainapp.py:3992 msgid "Because of the error, file load/save has been disabled" msgstr "" -#: .././mainapp.py:4076 +#: .././mainapp.py:4097 msgid "" "TRANSLATOR'S NOTE: In Tartube, there is a small set of'operations', each " "with a unique name. Most operations use a separate Python file. Two or more " @@ -116,213 +116,213 @@ msgid "" "Operation literally" msgstr "" -#: .././mainapp.py:4084 +#: .././mainapp.py:4105 msgid "" "TRANSLATOR'S NOTE: Download operations can download videos or fetch a list " "of downloadable videos (usually called 'checking' the videos)" msgstr "" -#: .././mainapp.py:4089 +#: .././mainapp.py:4110 msgid "TRANSLATOR'S NOTE: Update operations update youtube-dl, FFmpeg, etc" msgstr "" -#: .././mainapp.py:4093 +#: .././mainapp.py:4114 msgid "" "TRANSLATOR'S NOTE: Refresh operations examine the files in Tartube's data " "folder, and update the database accordingly" msgstr "" -#: .././mainapp.py:4098 +#: .././mainapp.py:4119 msgid "" "TRANSLATOR'S NOTE: Info operations fetch a list of available formats/" "subtitles for a video" msgstr "" -#: .././mainapp.py:4102 +#: .././mainapp.py:4123 msgid "" "TRANSLATOR'S NOTE: Tidy operations remove or convert files in Tartube's data " "folder" msgstr "" -#: .././mainapp.py:4106 +#: .././mainapp.py:4127 msgid "" "TRANSLATOR'S NOTE: Process operations convert videos using FFmpeg or AVConv" msgstr "" -#: .././mainapp.py:4111 +#: .././mainapp.py:4132 msgid "There is a download operation in progress." msgstr "" -#: .././mainapp.py:4113 +#: .././mainapp.py:4134 msgid "There is an update operation in progress." msgstr "" -#: .././mainapp.py:4115 +#: .././mainapp.py:4136 msgid "There is a refresh operation in progress." msgstr "" -#: .././mainapp.py:4117 +#: .././mainapp.py:4138 msgid "There is an info operation in progress." msgstr "" -#: .././mainapp.py:4119 +#: .././mainapp.py:4140 msgid "There is a tidy operation in progress." msgstr "" -#: .././mainapp.py:4121 +#: .././mainapp.py:4142 msgid "There is a process operation in progress." msgstr "" -#: .././mainapp.py:4126 +#: .././mainapp.py:4147 msgid "Are you sure you want to quit Tartube?" msgstr "" -#: .././mainapp.py:4409 +#: .././mainapp.py:4430 msgid "Failed to load the Tartube config file (failed sanity check)" msgstr "" -#: .././mainapp.py:4432 +#: .././mainapp.py:4453 msgid "Failed to load the Tartube config file (file is locked)" msgstr "" -#: .././mainapp.py:4462 +#: .././mainapp.py:4483 msgid "Failed to load the Tartube config file (JSON load failure)" msgstr "" -#: .././mainapp.py:4480 +#: .././mainapp.py:4501 msgid "Failed to load the Tartube config file (file is invalid)" msgstr "" -#: .././mainapp.py:4498 +#: .././mainapp.py:4519 msgid "" "Failed to load the Tartube config file (file cannot be read by this version " "of Tartube; please install the most recent version)" msgstr "" -#: .././mainapp.py:4514 +#: .././mainapp.py:4535 msgid "Failed to load the Tartube config file (missing file type)" msgstr "" -#: .././mainapp.py:5819 +#: .././mainapp.py:5874 msgid "Failed to save the Tartube config file (failed sanity check)" msgstr "" -#: .././mainapp.py:6289 +#: .././mainapp.py:6346 msgid "Failed to save the Tartube config file (file is locked)" msgstr "" -#: .././mainapp.py:6291 .././mainapp.py:8409 .././mainapp.py:8472 -#: .././mainapp.py:8478 +#: .././mainapp.py:6348 .././mainapp.py:8482 .././mainapp.py:8545 +#: .././mainapp.py:8551 msgid "File load/save has been disabled" msgstr "" -#: .././mainapp.py:6310 +#: .././mainapp.py:6367 msgid "Failed to save the Tartube config file (file already in use)" msgstr "" -#: .././mainapp.py:6329 +#: .././mainapp.py:6386 msgid "Failed to save the Tartube config file" msgstr "" -#: .././mainapp.py:6445 .././mainapp.py:6460 .././mainapp.py:6493 +#: .././mainapp.py:6502 .././mainapp.py:6517 .././mainapp.py:6550 msgid "Failed to load the Tartube database file" msgstr "" -#: .././mainapp.py:6496 +#: .././mainapp.py:6553 msgid "" "If this message is unexpected, the database file may be corrupt. Try " "replacing it with one of the files in the '.backups' folder" msgstr "" -#: .././mainapp.py:6514 +#: .././mainapp.py:6571 msgid "The Tartube database file is invalid" msgstr "" -#: .././mainapp.py:6532 +#: .././mainapp.py:6589 msgid "" "Database file can't be read by this version of Tartube (please install the " "most recent version)" msgstr "" -#: .././mainapp.py:6944 +#: .././mainapp.py:7001 msgid "Tartube is applying an essential database update" msgstr "" -#: .././mainapp.py:6946 +#: .././mainapp.py:7003 msgid "This might take a few minutes, so please be patient" msgstr "" -#: .././mainapp.py:7998 +#: .././mainapp.py:8055 msgid "General (default) download options" msgstr "" -#: .././mainapp.py:8004 +#: .././mainapp.py:8061 msgid "Download options for the Classic Mode tab" msgstr "" -#: .././mainapp.py:8403 .././mainapp.py:8468 .././mainapp.py:8477 +#: .././mainapp.py:8476 .././mainapp.py:8541 .././mainapp.py:8550 msgid "Failed to save the Tartube database file" msgstr "" -#: .././mainapp.py:8406 +#: .././mainapp.py:8479 msgid "(Could not make a backup copy of the existing file)" msgstr "" -#: .././mainapp.py:8448 +#: .././mainapp.py:8521 msgid "Failed to save the Tartube database file (file already in use)" msgstr "" -#: .././mainapp.py:8470 +#: .././mainapp.py:8543 msgid "A backup of the previous file can be found at:" msgstr "" -#: .././mainapp.py:8654 .././mainapp.py:8664 +#: .././mainapp.py:8727 .././mainapp.py:8737 msgid "Database file created" msgstr "" -#: .././mainapp.py:9071 +#: .././mainapp.py:9144 msgid "Tartube's database can't be checked while an operation is in progress" msgstr "" -#: .././mainapp.py:9325 +#: .././mainapp.py:9398 msgid "Database check complete, no inconsistencies found" msgstr "" -#: .././mainapp.py:9360 +#: .././mainapp.py:9433 msgid "Database check complete, problems found:" msgstr "" -#: .././mainapp.py:9364 +#: .././mainapp.py:9437 msgid "" "Do you want to repair these problems? (The database will be fixed, but no " "files will be deleted)" msgstr "" -#: .././mainapp.py:9580 +#: .././mainapp.py:9653 msgid "Database inconsistencies repaired" msgstr "" -#: .././mainapp.py:11038 .././config.py:29902 +#: .././mainapp.py:11124 .././config.py:29944 msgid "Please select Tartube's data folder" msgstr "" -#: .././mainapp.py:11513 +#: .././mainapp.py:11599 msgid "" "A download operation cannot start if one or more configuration windows are " "still open" msgstr "" -#: .././mainapp.py:11537 .././mainapp.py:11562 +#: .././mainapp.py:11623 .././mainapp.py:11648 #, python-brace-format msgid "You only have {0} / {1} Gb remaining on your device" msgstr "" -#: .././mainapp.py:11565 .././mainapp.py:18305 .././mainapp.py:18429 -#: .././mainapp.py:18619 .././mainwin.py:24136 +#: .././mainapp.py:11651 .././mainapp.py:18421 .././mainapp.py:18545 +#: .././mainapp.py:18735 .././mainwin.py:24143 msgid "Are you sure you want to continue?" msgstr "" -#: .././mainapp.py:11660 +#: .././mainapp.py:11746 msgid "" "1. Copy URLs into the box at the top\n" "2. Select a destination and a format\n" @@ -330,620 +330,577 @@ msgid "" "4. Click 'Download all'" msgstr "" -#: .././mainapp.py:11668 +#: .././mainapp.py:11754 msgid "There is nothing to check!" msgstr "" -#: .././mainapp.py:11672 +#: .././mainapp.py:11758 msgid "There is nothing to download!" msgstr "" -#: .././mainapp.py:11972 +#: .././mainapp.py:12062 msgid "Download operation complete" msgstr "" -#: .././mainapp.py:11974 +#: .././mainapp.py:12064 msgid "Download operation halted" msgstr "" -#: .././mainapp.py:11978 +#: .././mainapp.py:12068 msgid "Videos downloaded:" msgstr "" -#: .././mainapp.py:11979 .././config.py:31209 .././config.py:31271 +#: .././mainapp.py:12069 .././config.py:31251 .././config.py:31313 msgid "Videos checked:" msgstr "" -#: .././mainapp.py:11986 +#: .././mainapp.py:12076 msgid "Clips downloaded:" msgstr "" -#: .././mainapp.py:11989 +#: .././mainapp.py:12079 msgid "Video slices removed:" msgstr "" -#: .././mainapp.py:11994 +#: .././mainapp.py:12084 msgid "Total download:" msgstr "" -#: .././mainapp.py:11999 .././mainapp.py:12719 .././mainapp.py:13252 -#: .././mainapp.py:13671 +#: .././mainapp.py:12089 .././mainapp.py:12809 .././mainapp.py:13342 +#: .././mainapp.py:13754 msgid "Time taken:" msgstr "" -#: .././mainapp.py:12198 +#: .././mainapp.py:12288 msgid "" "An update operation cannot start if one or more configuration windows are " "still open" msgstr "" -#: .././mainapp.py:12410 +#: .././mainapp.py:12500 msgid "Installation failed" msgstr "" -#: .././mainapp.py:12412 +#: .././mainapp.py:12502 msgid "Installation complete" msgstr "" -#: .././mainapp.py:12416 +#: .././mainapp.py:12506 msgid "Update operation failed" msgstr "" -#: .././mainapp.py:12418 +#: .././mainapp.py:12508 msgid "Update operation halted" msgstr "" -#: .././mainapp.py:12420 +#: .././mainapp.py:12510 msgid "Update operation complete" msgstr "" -#: .././mainapp.py:12422 +#: .././mainapp.py:12512 msgid "version:" msgstr "" -#: .././mainapp.py:12426 +#: .././mainapp.py:12516 msgid "(unknown)" msgstr "" -#: .././mainapp.py:12531 +#: .././mainapp.py:12621 msgid "" "A refresh operation cannot start if one or more configuration windows are " "still open" msgstr "" -#: .././mainapp.py:12544 +#: .././mainapp.py:12634 msgid "" "During a refresh operation, Tartube analyses its data folder, looking for " "videos that haven't yet been added to its database" msgstr "" -#: .././mainapp.py:12548 +#: .././mainapp.py:12638 msgid "" "You only need to perform a refresh operation if you have manually copied " "videos into Tartube's data folder" msgstr "" -#: .././mainapp.py:12555 +#: .././mainapp.py:12645 msgid "" "Before starting a refresh operation, you should click the 'Check all' button " "in the main window" msgstr "" -#: .././mainapp.py:12562 +#: .././mainapp.py:12652 msgid "" "Before starting a refresh operation, you should right-click the channel and " "select 'Check channel'" msgstr "" -#: .././mainapp.py:12569 +#: .././mainapp.py:12659 msgid "" "Before starting a refresh operation, you should right-click the playlist and " "select 'Check playlist'" msgstr "" -#: .././mainapp.py:12576 +#: .././mainapp.py:12666 msgid "" "Before starting a refresh operation, you should right-click the folder and " "select 'Check folder'" msgstr "" -#: .././mainapp.py:12581 +#: .././mainapp.py:12671 msgid "Are you sure you want to proceed with the refresh operation?" msgstr "" -#: .././mainapp.py:12714 +#: .././mainapp.py:12804 msgid "Refresh operation complete" msgstr "" -#: .././mainapp.py:12716 +#: .././mainapp.py:12806 msgid "Refresh operation halted" msgstr "" -#: .././mainapp.py:12833 +#: .././mainapp.py:12923 msgid "" "An info operation cannot start if one or more configuration windows are " "still open" msgstr "" -#: .././mainapp.py:12964 +#: .././mainapp.py:13054 msgid "Operation failed" msgstr "" -#: .././mainapp.py:12966 .././mainwin.py:34877 .././downloads.py:547 +#: .././mainapp.py:13056 .././mainwin.py:34908 .././downloads.py:547 msgid "Operation complete" msgstr "" -#: .././mainapp.py:12968 +#: .././mainapp.py:13058 msgid "Click the Output tab to see the results" msgstr "" -#: .././mainapp.py:12981 +#: .././mainapp.py:13071 msgid "A new release is available!" msgstr "" -#: .././mainapp.py:12983 +#: .././mainapp.py:13073 msgid "Your installation is up to date!" msgstr "" -#: .././mainapp.py:12985 +#: .././mainapp.py:13075 msgid "Installed version:" msgstr "" -#: .././mainapp.py:12990 +#: .././mainapp.py:13080 msgid "Stable release:" msgstr "" -#: .././mainapp.py:12995 +#: .././mainapp.py:13085 msgid "Stable release: not found" msgstr "" -#: .././mainapp.py:12998 +#: .././mainapp.py:13088 msgid "Development release:" msgstr "" -#: .././mainapp.py:13000 +#: .././mainapp.py:13090 msgid "Development release: not found" msgstr "" -#: .././mainapp.py:13139 +#: .././mainapp.py:13229 msgid "" "A tidy operation cannot start if one or more configuration windows are still " "open" msgstr "" -#: .././mainapp.py:13247 +#: .././mainapp.py:13337 msgid "Tidy operation complete" msgstr "" -#: .././mainapp.py:13249 +#: .././mainapp.py:13339 msgid "Tidy operation halted" msgstr "" -#: .././mainapp.py:13403 .././mainwin.py:24880 .././config.py:14948 +#: .././mainapp.py:13485 .././mainwin.py:24887 .././config.py:14948 msgid "Livestream has started" msgstr "" -#: .././mainapp.py:13660 +#: .././mainapp.py:13743 msgid "Process operation complete" msgstr "" -#: .././mainapp.py:13662 +#: .././mainapp.py:13745 msgid "Process operation halted" msgstr "" -#: .././mainapp.py:13666 +#: .././mainapp.py:13749 msgid "Files processed:" msgstr "" -#: .././mainapp.py:13667 +#: .././mainapp.py:13750 msgid "Errors:" msgstr "" -#: .././mainapp.py:15069 .././mainapp.py:15284 +#: .././mainapp.py:15152 .././mainapp.py:15380 msgid "" "Cannot move the channel/playlist/folder because a container with the same " "name already exists" msgstr "" -#: .././mainapp.py:15091 .././mainapp.py:15305 +#: .././mainapp.py:15174 .././mainapp.py:15401 msgid "Cannot move anything to:" msgstr "" -#: .././mainapp.py:15093 .././mainapp.py:15307 +#: .././mainapp.py:15176 .././mainapp.py:15403 msgid "" "because a file or folder with the same name already exists (although " "Tartube's database doesn't know anything about it)" msgstr "" -#: .././mainapp.py:15097 +#: .././mainapp.py:15180 msgid "" "You probably created that file/folder accidentally, in which case you should " "delete it manually before trying again" msgstr "" -#: .././mainapp.py:15111 .././mainapp.py:15325 -msgid "Are you sure you want to move this channel:" -msgstr "" - -#: .././mainapp.py:15113 .././mainapp.py:15327 -msgid "Are you sure you want to move this playlist:" -msgstr "" - -#: .././mainapp.py:15115 .././mainapp.py:15329 -msgid "Are you sure you want to move this folder:" -msgstr "" - -#: .././mainapp.py:15120 -msgid "" -"This procedure will move all downloaded files to the top level of Tartube's " -"data folder" -msgstr "" - -#: .././mainapp.py:15161 .././mainapp.py:15387 +#: .././mainapp.py:15256 .././mainapp.py:15486 #, python-brace-format msgid "Could not move '{0}' (filesystem error)" msgstr "" -#: .././mainapp.py:15232 +#: .././mainapp.py:15328 msgid "Channels, playlists and folders can only be dragged into a folder" msgstr "" -#: .././mainapp.py:15245 +#: .././mainapp.py:15341 #, python-brace-format msgid "The fixed folder '{0}' cannot be moved (but it can still be hidden)" msgstr "" -#: .././mainapp.py:15258 +#: .././mainapp.py:15354 #, python-brace-format msgid "The folder '{0}' can only contain videos" msgstr "" -#: .././mainapp.py:15270 +#: .././mainapp.py:15366 #, python-brace-format msgid "The folder '{0}' can only contain other folders and videos" msgstr "" -#: .././mainapp.py:15312 +#: .././mainapp.py:15408 msgid "" "You probably created that file/folder accidentally, in which case, you " "should delete it manually before trying again" msgstr "" -#: .././mainapp.py:15331 -msgid "into this folder:" -msgstr "" - -#: .././mainapp.py:15335 -msgid "This procedure will move all downloaded files to the new location" -msgstr "" - -#: .././mainapp.py:15341 .././mainapp.py:15480 -msgid "" -"WARNING: The destination folder is marked as temporary, so everything inside " -"it will be DELETED when Tartube restarts!" -msgstr "" - -#: .././mainapp.py:15458 +#: .././mainapp.py:15558 msgid "Videos cannot be dragged into this folder" msgstr "" -#: .././mainapp.py:15468 -#, python-brace-format -msgid "Are you sure you want to move the video to '{0}'?" -msgstr "" - -#: .././mainapp.py:15474 -#, python-brace-format -msgid "Are you sure you want to move {0} videos to '{1}'?" -msgstr "" - -#. Show confirmation dialogue -#: .././mainapp.py:15668 +#: .././mainapp.py:15784 msgid "Videos moved" msgstr "" -#: .././mainapp.py:15669 +#: .././mainapp.py:15785 msgid "Videos not moved" msgstr "" -#: .././mainapp.py:16079 +#: .././mainapp.py:16195 msgid "" "Are you SURE you want to delete files? This procedure cannot be reversed!" msgstr "" -#: .././mainapp.py:16096 +#: .././mainapp.py:16212 msgid "" "Are you SURE you want to remove these items from your database? This " "procedure cannot be reversed!" msgstr "" -#: .././mainapp.py:18289 .././mainapp.py:18413 .././mainapp.py:18603 +#: .././mainapp.py:18405 .././mainapp.py:18529 .././mainapp.py:18719 #, python-brace-format msgid "The channel contains {0} item(s), so this action may take a while" msgstr "" -#: .././mainapp.py:18295 .././mainapp.py:18419 .././mainapp.py:18609 +#: .././mainapp.py:18411 .././mainapp.py:18535 .././mainapp.py:18725 #, python-brace-format msgid "The playlist contains {0} item(s), so this action may take a while" msgstr "" -#: .././mainapp.py:18301 .././mainapp.py:18425 .././mainapp.py:18615 +#: .././mainapp.py:18417 .././mainapp.py:18541 .././mainapp.py:18731 #, python-brace-format msgid "The folder contains {0} item(s), so this action may take a while" msgstr "" -#: .././mainapp.py:18684 +#: .././mainapp.py:18800 msgid "You did not give the folder a new name" msgstr "" -#: .././mainapp.py:18695 .././mainapp.py:24956 .././mainapp.py:25102 -#: .././mainapp.py:25241 .././mainwin.py:19374 .././config.py:29187 +#: .././mainapp.py:18811 .././mainapp.py:25078 .././mainapp.py:25224 +#: .././mainapp.py:25363 .././mainwin.py:19375 .././config.py:29229 #, python-brace-format msgid "The name '{0}' is not allowed" msgstr "" -#: .././mainapp.py:18712 .././mainapp.py:24985 .././mainapp.py:25118 -#: .././mainapp.py:25270 +#: .././mainapp.py:18828 .././mainapp.py:25107 .././mainapp.py:25240 +#: .././mainapp.py:25392 msgid "That name is not permitted on your system" msgstr "" -#: .././mainapp.py:18743 +#: .././mainapp.py:18859 #, python-brace-format msgid "Failed to rename '{0}'" msgstr "" #. Confirm the result -#: .././mainapp.py:18957 +#: .././mainapp.py:19073 msgid "Search/replace complete" msgstr "" -#: .././mainapp.py:18958 +#: .././mainapp.py:19074 #, python-brace-format msgid "Updated URLs: {0}" msgstr "" -#: .././mainapp.py:18959 +#: .././mainapp.py:19075 #, python-brace-format msgid "Errors: {0}" msgstr "" -#: .././mainapp.py:19252 +#: .././mainapp.py:19368 msgid "Select where to save the database export" msgstr "" -#: .././mainapp.py:19382 +#: .././mainapp.py:19498 msgid "There is nothing to export!" msgstr "" -#: .././mainapp.py:19424 .././mainapp.py:19471 .././mainapp.py:19526 -#: .././config.py:31047 +#: .././mainapp.py:19540 .././mainapp.py:19587 .././mainapp.py:19642 +#: .././config.py:31089 msgid "Failed to save the database export file:" msgstr "" -#: .././mainapp.py:19536 .././config.py:31037 +#: .././mainapp.py:19652 .././config.py:31079 msgid "Database export file saved to:" msgstr "" -#: .././mainapp.py:19810 +#: .././mainapp.py:19926 msgid "Select the database export" msgstr "" -#: .././mainapp.py:19828 .././mainapp.py:19841 .././mainapp.py:19879 +#: .././mainapp.py:19944 .././mainapp.py:19957 .././mainapp.py:19995 msgid "Failed to load the database export file" msgstr "" -#: .././mainapp.py:19860 +#: .././mainapp.py:19976 msgid "The database export file is invalid" msgstr "" -#: .././mainapp.py:19895 +#: .././mainapp.py:20011 msgid "The database export file is invalid (or empty)" msgstr "" -#: .././mainapp.py:19942 +#: .././mainapp.py:20058 msgid "Nothing was imported from the database export file" msgstr "" #. Show a confirmation -#: .././mainapp.py:19956 +#: .././mainapp.py:20072 msgid "Imported into database" msgstr "" -#: .././mainapp.py:19957 .././mainwin.py:1929 .././config.py:740 +#: .././mainapp.py:20073 .././mainwin.py:1929 .././config.py:740 #: .././config.py:1108 .././config.py:18252 .././config.py:22248 msgid "Videos" msgstr "" -#: .././mainapp.py:19958 .././config.py:743 .././config.py:18285 +#: .././mainapp.py:20074 .././config.py:743 .././config.py:18285 #: .././config.py:22281 msgid "Channels" msgstr "" -#: .././mainapp.py:19959 .././config.py:746 .././config.py:18296 +#: .././mainapp.py:20075 .././config.py:746 .././config.py:18296 #: .././config.py:22292 msgid "Playlists" msgstr "" -#: .././mainapp.py:19960 .././config.py:749 +#: .././mainapp.py:20076 .././config.py:749 msgid "Folders" msgstr "" -#: .././mainapp.py:20750 +#: .././mainapp.py:20866 msgid "" "The video file is missing from Tartube's data folder (try downloading the " "video again!)" msgstr "" -#: .././mainapp.py:21132 +#: .././mainapp.py:21250 msgid "Select where to save the custom download export" msgstr "" -#: .././mainapp.py:21189 +#: .././mainapp.py:21307 msgid "Failed to save the custom download export file:" msgstr "" -#: .././mainapp.py:21199 +#: .././mainapp.py:21317 msgid "Custom download exported to:" msgstr "" -#: .././mainapp.py:21230 +#: .././mainapp.py:21348 msgid "Select the custom download export file" msgstr "" -#: .././mainapp.py:21249 +#: .././mainapp.py:21367 msgid "Failed to load the custom download export file" msgstr "" -#: .././mainapp.py:21268 +#: .././mainapp.py:21386 msgid "The custom download export file is invalid" msgstr "" -#: .././mainapp.py:21281 +#: .././mainapp.py:21399 msgid "The custom download export file is invalid (or empty)" msgstr "" -#: .././mainapp.py:21970 .././mainapp.py:22360 +#: .././mainapp.py:22088 .././mainapp.py:22478 msgid "Select where to save the options export" msgstr "" -#: .././mainapp.py:22018 .././mainapp.py:22408 +#: .././mainapp.py:22136 .././mainapp.py:22526 msgid "Failed to save the options export file:" msgstr "" -#: .././mainapp.py:22028 +#: .././mainapp.py:22146 msgid "Download options exported to to:" msgstr "" -#: .././mainapp.py:22059 .././mainapp.py:22449 +#: .././mainapp.py:22177 .././mainapp.py:22567 msgid "Select the options export file" msgstr "" -#: .././mainapp.py:22078 .././mainapp.py:22468 +#: .././mainapp.py:22196 .././mainapp.py:22586 msgid "Failed to load the options export file" msgstr "" -#: .././mainapp.py:22097 .././mainapp.py:22487 +#: .././mainapp.py:22215 .././mainapp.py:22605 msgid "The options export file is invalid" msgstr "" -#: .././mainapp.py:22110 .././mainapp.py:22500 +#: .././mainapp.py:22228 .././mainapp.py:22618 msgid "The options export file is invalid (or empty)" msgstr "" -#: .././mainapp.py:22418 +#: .././mainapp.py:22536 msgid "FFmpeg options exported to to:" msgstr "" -#: .././mainapp.py:23535 +#: .././mainapp.py:23657 msgid "Please select a destination folder" msgstr "" #. Prompt for confirmation -#: .././mainapp.py:23607 +#: .././mainapp.py:23729 msgid "Are you sure you want to clear this list?" msgstr "" #. Prompt for confirmation -#: .././mainapp.py:23654 +#: .././mainapp.py:23776 msgid "Are you sure you want to clear downloaded videos?" msgstr "" -#: .././mainapp.py:23707 +#: .././mainapp.py:23829 msgid "Only downloaded videos can be used to create video clips" msgstr "" -#: .././mainapp.py:23715 +#: .././mainapp.py:23837 msgid "You can create video clips from only one video at a time!" msgstr "" -#: .././mainapp.py:23786 .././mainwin.py:19936 +#: .././mainapp.py:23908 .././mainwin.py:19936 msgid "Only checked/downloaded videos can be processed by FFmpeg" msgstr "" -#: .././mainapp.py:23905 +#: .././mainapp.py:24027 msgid "No destination(s) to show" msgstr "" -#: .././mainapp.py:23955 +#: .././mainapp.py:24077 msgid "No video(s) have been downloaded" msgstr "" #. Prompt for confirmation -#: .././mainapp.py:24088 +#: .././mainapp.py:24210 msgid "Are you sure you want to remove the selected item(s)?" msgstr "" -#: .././mainapp.py:24946 +#: .././mainapp.py:25068 msgid "You must give the channel a name" msgstr "" -#: .././mainapp.py:24966 .././mainapp.py:25251 +#: .././mainapp.py:25088 .././mainapp.py:25373 msgid "You must enter a valid URL" msgstr "" -#: .././mainapp.py:25092 +#: .././mainapp.py:25214 msgid "You must give the folder a name" msgstr "" -#: .././mainapp.py:25231 +#: .././mainapp.py:25353 msgid "You must give the playlist a name" msgstr "" -#: .././mainapp.py:25448 .././mainapp.py:25799 +#: .././mainapp.py:25570 .././mainapp.py:25921 msgid "No channels, playlists or folders are marked for download" msgstr "" -#: .././mainapp.py:25462 .././mainapp.py:25813 +#: .././mainapp.py:25584 .././mainapp.py:25935 #, python-brace-format msgid "The maximum number of profiles permitted is {0}" msgstr "" -#: .././mainapp.py:25487 .././mainapp.py:25838 +#: .././mainapp.py:25609 .././mainapp.py:25960 #, python-brace-format msgid "A profile called '{0}' already exists" msgstr "" -#: .././mainapp.py:25505 .././mainapp.py:25856 +#: .././mainapp.py:25627 .././mainapp.py:25978 #, python-brace-format msgid "Created the profile '{0}'" msgstr "" -#: .././mainapp.py:25568 +#: .././mainapp.py:25690 msgid "There were no livestream alerts to cancel" msgstr "" -#: .././mainapp.py:25570 +#: .././mainapp.py:25692 msgid "Livestream alerts for 1 video were cancelled" msgstr "" -#: .././mainapp.py:25573 +#: .././mainapp.py:25695 #, python-brace-format msgid "Livestream alerts for {0} videos were cancelled" msgstr "" -#: .././mainapp.py:25635 +#: .././mainapp.py:25757 msgid "Restart Tartube to see the new theme!" msgstr "" -#: .././mainapp.py:25636 +#: .././mainapp.py:25758 msgid "Tartube failed to set the new theme" msgstr "" -#: .././mainapp.py:26229 +#: .././mainapp.py:26351 msgid "" "Before trying to reset channel/playlist names, you must check or download at " "one least one video from each!" msgstr "" -#: .././mainapp.py:26309 +#: .././mainapp.py:26431 msgid "All Tartube data has been saved" msgstr "" -#: .././mainapp.py:26339 +#: .././mainapp.py:26461 msgid "Database saved" msgstr "" -#: .././mainapp.py:26669 .././mainwin.py:18169 +#: .././mainapp.py:26791 .././mainwin.py:18168 msgid "" "Files cannot be recovered, after being deleted. Are you sure you want to " "continue?" @@ -952,51 +909,51 @@ msgstr "" #. Because livestream operations run silently in the background, when #. the user goes to the trouble of clicking a menu item in the #. main window's menu, tell them why nothing is happening -#: .././mainapp.py:26749 +#: .././mainapp.py:26871 msgid "Cannot update existing livestreams because" msgstr "" -#: .././mainapp.py:26751 +#: .././mainapp.py:26873 msgid "there is another operation running" msgstr "" -#: .././mainapp.py:26753 +#: .././mainapp.py:26875 msgid "they are currently being updated" msgstr "" -#: .././mainapp.py:26755 +#: .././mainapp.py:26877 msgid "one or more configuration windows are open" msgstr "" -#: .././mainapp.py:26757 +#: .././mainapp.py:26879 msgid "there are no livestreams to update" msgstr "" -#: .././mainapp.py:26838 +#: .././mainapp.py:26960 msgid "There is already a channel with that name" msgstr "" -#: .././mainapp.py:26840 +#: .././mainapp.py:26962 msgid "There is already a playlist with that name" msgstr "" -#: .././mainapp.py:26842 +#: .././mainapp.py:26964 msgid "There is already a folder with that name" msgstr "" -#: .././mainapp.py:26847 +#: .././mainapp.py:26969 msgid "The folder already contains a channel with that name" msgstr "" -#: .././mainapp.py:26851 +#: .././mainapp.py:26973 msgid "The folder already contains a playlist with that name" msgstr "" -#: .././mainapp.py:26856 +#: .././mainapp.py:26978 msgid "The folder already contains another folder with that name" msgstr "" -#: .././mainapp.py:26860 +#: .././mainapp.py:26982 msgid "(so please choose a different name)" msgstr "" @@ -1034,7 +991,7 @@ msgid "Close to _tray" msgstr "" #. Quit -#: .././mainwin.py:1421 .././mainwin.py:30171 +#: .././mainwin.py:1421 .././mainwin.py:30201 msgid "_Quit" msgstr "" @@ -1170,17 +1127,17 @@ msgstr "" #. Operations column #. Add this tab... -#: .././mainwin.py:1715 .././config.py:23987 +#: .././mainwin.py:1715 .././config.py:24026 msgid "_Operations" msgstr "" #. Check all -#: .././mainwin.py:1722 .././mainwin.py:30142 +#: .././mainwin.py:1722 .././mainwin.py:30172 msgid "_Check all" msgstr "" #. Download all -#: .././mainwin.py:1728 .././mainwin.py:30149 +#: .././mainwin.py:1728 .././mainwin.py:30179 msgid "_Download all" msgstr "" @@ -1216,7 +1173,7 @@ msgstr "" msgid "Tidy up _files..." msgstr "" -#: .././mainwin.py:1808 .././mainwin.py:30160 +#: .././mainwin.py:1808 .././mainwin.py:30190 msgid "_Stop current operation" msgstr "" @@ -1274,7 +1231,7 @@ msgstr "" msgid "Add new videos" msgstr "" -#: .././mainwin.py:1948 .././mainwin.py:28391 .././media.py:104 +#: .././mainwin.py:1948 .././mainwin.py:28398 .././media.py:110 msgid "Channel" msgstr "" @@ -1282,7 +1239,7 @@ msgstr "" msgid "Add a new channel" msgstr "" -#: .././mainwin.py:1969 .././mainwin.py:28393 .././media.py:106 +#: .././mainwin.py:1969 .././mainwin.py:28400 .././media.py:112 msgid "Playlist" msgstr "" @@ -1290,7 +1247,7 @@ msgstr "" msgid "Add a new playlist" msgstr "" -#: .././mainwin.py:1990 .././mainwin.py:28395 .././media.py:108 +#: .././mainwin.py:1990 .././mainwin.py:28402 .././media.py:114 msgid "Folder" msgstr "" @@ -1298,7 +1255,7 @@ msgstr "" msgid "Add a new folder" msgstr "" -#: .././mainwin.py:2014 .././mainwin.py:13114 .././config.py:23781 +#: .././mainwin.py:2014 .././mainwin.py:13113 .././config.py:23820 msgid "Check" msgstr "" @@ -1313,11 +1270,11 @@ msgstr "" #. then use a Glib timer to restore it (after some small fraction of a #. second) #. Link not clickable -#: .././mainwin.py:2035 .././mainwin.py:26148 .././mainwin.py:26160 -#: .././mainwin.py:26165 .././mainwin.py:26173 .././mainwin.py:26468 -#: .././mainwin.py:26480 .././mainwin.py:27215 .././mainwin.py:28580 -#: .././mainwin.py:28592 .././mainwin.py:28618 .././config.py:23657 -#: .././config.py:23783 +#: .././mainwin.py:2035 .././mainwin.py:26155 .././mainwin.py:26167 +#: .././mainwin.py:26172 .././mainwin.py:26180 .././mainwin.py:26475 +#: .././mainwin.py:26487 .././mainwin.py:27222 .././mainwin.py:28587 +#: .././mainwin.py:28599 .././mainwin.py:28625 .././config.py:23696 +#: .././config.py:23822 msgid "Download" msgstr "" @@ -1326,7 +1283,7 @@ msgstr "" msgid "Download all videos, channels, playlists and folders" msgstr "" -#: .././mainwin.py:2061 .././mainwin.py:36898 .././mainwin.py:38009 +#: .././mainwin.py:2061 .././mainwin.py:37226 .././mainwin.py:38337 #: .././config.py:11735 .././config.py:11920 .././config.py:12383 #: .././config.py:12594 .././config.py:15151 .././config.py:15336 msgid "Stop" @@ -1417,12 +1374,12 @@ msgid "Check all" msgstr "" #: .././mainwin.py:2330 .././mainwin.py:3985 .././mainwin.py:4717 -#: .././mainwin.py:22250 +#: .././mainwin.py:22257 msgid "Download all" msgstr "" #: .././mainwin.py:2345 .././mainwin.py:3989 .././mainwin.py:4738 -#: .././mainwin.py:22241 +#: .././mainwin.py:22248 msgid "Custom download all" msgstr "" @@ -1440,7 +1397,7 @@ msgid "Set visible page" msgstr "" #: .././mainwin.py:2448 .././mainwin.py:2996 .././mainwin.py:3096 -#: .././mainwin.py:3729 .././mainwin.py:13123 +#: .././mainwin.py:3729 .././mainwin.py:13122 msgid "Size" msgstr "" @@ -1484,10 +1441,10 @@ msgstr "" msgid "Upload time" msgstr "" -#: .././mainwin.py:2599 .././mainwin.py:30584 .././mainwin.py:33682 -#: .././mainwin.py:35169 .././config.py:3117 .././config.py:12836 -#: .././config.py:21974 .././config.py:23657 .././config.py:24765 -#: .././config.py:27090 .././config.py:27373 +#: .././mainwin.py:2599 .././mainwin.py:30614 .././mainwin.py:33712 +#: .././mainwin.py:35200 .././config.py:3117 .././config.py:12836 +#: .././config.py:21974 .././config.py:23696 .././config.py:24804 +#: .././config.py:27132 .././config.py:27415 msgid "Name" msgstr "" @@ -1607,7 +1564,7 @@ msgstr "" msgid "Ext" msgstr "" -#: .././mainwin.py:2995 .././mainwin.py:3728 .././mainwin.py:13125 +#: .././mainwin.py:2995 .././mainwin.py:3728 .././mainwin.py:13124 msgid "Speed" msgstr "" @@ -1699,26 +1656,26 @@ msgid "Format:" msgstr "" #. (Dummy items in the combo) -#: .././mainwin.py:3506 .././mainwin.py:21999 .././config.py:24765 +#: .././mainwin.py:3506 .././mainwin.py:22006 .././config.py:24804 msgid "Default" msgstr "" -#: .././mainwin.py:3506 .././mainwin.py:22000 +#: .././mainwin.py:3506 .././mainwin.py:22007 msgid "Video:" msgstr "" -#: .././mainwin.py:3510 .././mainwin.py:22001 +#: .././mainwin.py:3510 .././mainwin.py:22008 msgid "Audio:" msgstr "" #. Video resolution -#: .././mainwin.py:3540 .././mainwin.py:22636 +#: .././mainwin.py:3540 .././mainwin.py:22643 msgid "Highest" msgstr "" #. (Update the IV) -#: .././mainwin.py:3571 .././mainwin.py:14098 .././mainwin.py:19771 -#: .././mainwin.py:21936 +#: .././mainwin.py:3571 .././mainwin.py:14097 .././mainwin.py:19771 +#: .././mainwin.py:21943 msgid "Convert to this format" msgstr "" @@ -1775,7 +1732,7 @@ msgid "" "downloading channels and playlists)" msgstr "" -#: .././mainwin.py:3905 .././mainwin.py:36696 +#: .././mainwin.py:3905 .././mainwin.py:37024 msgid "Create video clips" msgstr "" @@ -1785,13 +1742,13 @@ msgstr "" #. (Signal connect appears below) #: .././mainwin.py:3944 .././config.py:6852 .././config.py:21249 -#: .././config.py:23722 +#: .././config.py:23761 msgid "Move up" msgstr "" #. (Signal connect appears below) #: .././mainwin.py:3960 .././config.py:6856 .././config.py:21258 -#: .././config.py:23731 +#: .././config.py:23770 msgid "Move down" msgstr "" @@ -1799,11 +1756,11 @@ msgstr "" msgid "Remove from list" msgstr "" -#: .././mainwin.py:3997 .././mainwin.py:22253 +#: .././mainwin.py:3997 .././mainwin.py:22260 msgid "Download the URLs above" msgstr "" -#: .././mainwin.py:4001 .././mainwin.py:22244 +#: .././mainwin.py:4001 .././mainwin.py:22251 msgid "Perform a custom download on the URLs above" msgstr "" @@ -1851,35 +1808,35 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Main window's Errors / Warnings tab" msgstr "" -#: .././mainwin.py:4244 .././config.py:23402 +#: .././mainwin.py:4244 .././config.py:23441 msgid "Show Tartube errors" msgstr "" -#: .././mainwin.py:4257 .././config.py:23410 +#: .././mainwin.py:4257 .././config.py:23449 msgid "Show Tartube warnings" msgstr "" -#: .././mainwin.py:4270 .././config.py:23418 +#: .././mainwin.py:4270 .././config.py:23457 msgid "Show operation errors" msgstr "" -#: .././mainwin.py:4288 .././config.py:23429 +#: .././mainwin.py:4288 .././config.py:23468 msgid "Show operation warnings" msgstr "" -#: .././mainwin.py:4311 .././config.py:23440 +#: .././mainwin.py:4311 .././config.py:23479 msgid "Show dates" msgstr "" -#: .././mainwin.py:4329 .././config.py:23451 +#: .././mainwin.py:4329 .././config.py:23490 msgid "Show channel/playlist/folder names" msgstr "" -#: .././mainwin.py:4347 .././config.py:23462 +#: .././mainwin.py:4347 .././config.py:23501 msgid "Show video names" msgstr "" -#: .././mainwin.py:4365 .././config.py:23473 +#: .././mainwin.py:4365 .././config.py:23512 msgid "Show full messages" msgstr "" @@ -1895,7 +1852,7 @@ msgstr "" msgid "Filter messages" msgstr "" -#: .././mainwin.py:4465 .././mainwin.py:36955 .././mainwin.py:38130 +#: .././mainwin.py:4465 .././mainwin.py:37283 .././mainwin.py:38458 #: .././config.py:11832 .././config.py:12036 .././config.py:12480 #: .././config.py:12711 .././config.py:15239 .././config.py:15435 #: .././config.py:17301 .././config.py:19521 @@ -1972,7 +1929,7 @@ msgstr "" msgid "Checking..." msgstr "" -#: .././mainwin.py:5500 .././mainwin.py:6127 .././formats.py:1204 +#: .././mainwin.py:5500 .././mainwin.py:6127 .././formats.py:1211 msgid "Checking" msgstr "" @@ -1980,7 +1937,7 @@ msgstr "" msgid "Downloading..." msgstr "" -#: .././mainwin.py:5505 .././mainwin.py:6129 .././formats.py:1201 +#: .././mainwin.py:5505 .././mainwin.py:6129 .././formats.py:1208 msgid "Downloading" msgstr "" @@ -2883,17 +2840,17 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:12851 .././mainwin.py:13913 .././mainwin.py:26574 -#: .././mainwin.py:26578 .././mainwin.py:27158 .././mainwin.py:28746 -#: .././mainwin.py:28750 .././mainwin.py:28992 +#: .././mainwin.py:12850 .././mainwin.py:13912 .././mainwin.py:26581 +#: .././mainwin.py:26585 .././mainwin.py:27165 .././mainwin.py:28753 +#: .././mainwin.py:28757 .././mainwin.py:28999 msgid "Waiting" msgstr "" -#: .././mainwin.py:13108 +#: .././mainwin.py:13107 msgid "TRANSLATOR'S NOTE: D/L = download" msgstr "" -#: .././mainwin.py:13116 +#: .././mainwin.py:13115 msgid "D/L" msgstr "" @@ -2901,90 +2858,90 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:13120 .././mainwin.py:26306 .././mainwin.py:27447 +#: .././mainwin.py:13119 .././mainwin.py:26313 .././mainwin.py:27454 #: .././config.py:18274 .././config.py:22270 msgid "Other" msgstr "" -#: .././mainwin.py:15020 +#: .././mainwin.py:15019 msgid "" "TRANSLATOR'S NOTE: 'Thread' means a computer processor thread. If you're not " "sure how to translate it, just use 'Page #', as in Page #1, Page #2, etc" msgstr "" -#: .././mainwin.py:15027 +#: .././mainwin.py:15026 msgid "Thread" msgstr "" -#: .././mainwin.py:15030 +#: .././mainwin.py:15029 msgid "_Summary" msgstr "" -#: .././mainwin.py:15454 +#: .././mainwin.py:15453 msgid "TRANSLATOR'S NOTE: Extra items for the Errors/Warnings tab" msgstr "" -#: .././mainwin.py:15513 .././config.py:15722 .././config.py:23657 +#: .././mainwin.py:15512 .././config.py:15722 .././config.py:23696 msgid "Time" msgstr "" -#: .././mainwin.py:15513 +#: .././mainwin.py:15512 msgid "Container" msgstr "" -#: .././mainwin.py:15513 .././config.py:12836 .././downloads.py:8149 -#: .././media.py:110 +#: .././mainwin.py:15512 .././config.py:12836 .././downloads.py:8179 +#: .././media.py:116 msgid "Video" msgstr "" -#: .././mainwin.py:15513 .././mainwin.py:15514 +#: .././mainwin.py:15512 .././mainwin.py:15513 msgid "Message" msgstr "" -#: .././mainwin.py:15773 +#: .././mainwin.py:15772 msgid "Tartube error" msgstr "" -#: .././mainwin.py:15777 +#: .././mainwin.py:15776 msgid "Tartube warning" msgstr "" -#: .././mainwin.py:16020 +#: .././mainwin.py:16019 msgid "_Errors" msgstr "" -#: .././mainwin.py:16024 +#: .././mainwin.py:16023 msgid "Warnings" msgstr "" -#: .././mainwin.py:16144 +#: .././mainwin.py:16143 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " "tab, right-click a channel and select Downloads > Add to scheduled " "download..." msgstr "" -#: .././mainwin.py:16159 +#: .././mainwin.py:16158 msgid "" "There are no scheduled downloads that don't already contain the channel/" "playlist/folder" msgstr "" -#: .././mainwin.py:17806 +#: .././mainwin.py:17805 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " "tab, right-click a channel and select Downloads > Set download destination..." msgstr "" -#: .././mainwin.py:17859 +#: .././mainwin.py:17858 msgid "The external folder is not available" msgstr "" -#: .././mainwin.py:17861 +#: .././mainwin.py:17860 msgid "The external directory is not available" msgstr "" -#: .././mainwin.py:17967 +#: .././mainwin.py:17966 msgid "The URL is not valid" msgstr "" @@ -2993,7 +2950,7 @@ msgstr "" msgid "Invalid timestamp(s)" msgstr "" -#: .././mainwin.py:19723 .././mainwin.py:29909 +#: .././mainwin.py:19723 .././mainwin.py:29914 msgid "Invalid URL" msgstr "" @@ -3003,198 +2960,198 @@ msgid "" "tab, right-click a video and select Special > Process with FFmpeg..." msgstr "" -#: .././mainwin.py:20014 .././mainwin.py:20023 .././mainwin.py:38355 -#: .././mainwin.py:38365 .././config.py:13092 .././config.py:13102 +#: .././mainwin.py:20014 .././mainwin.py:20023 .././mainwin.py:38683 +#: .././mainwin.py:38693 .././config.py:13092 .././config.py:13102 #: .././config.py:16228 .././config.py:16238 msgid "Invalid start/stop times" msgstr "" -#: .././mainwin.py:20140 +#: .././mainwin.py:20147 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by a popup menu. In the Videos " "tab, right-click a video and select Special > Reload metadata..." msgstr "" -#: .././mainwin.py:20186 .././mainwin.py:20255 +#: .././mainwin.py:20193 .././mainwin.py:20262 #, python-brace-format msgid "Files reloaded: {0}, not reloaded: {1}" msgstr "" -#: .././mainwin.py:21798 .././mainwin.py:21882 .././mainwin.py:24184 +#: .././mainwin.py:21805 .././mainwin.py:21889 .././mainwin.py:24191 msgid "unknown path" msgstr "" -#: .././mainwin.py:21804 .././mainwin.py:21888 .././mainwin.py:24191 +#: .././mainwin.py:21811 .././mainwin.py:21895 .././mainwin.py:24198 msgid "unknown URL" msgstr "" -#: .././mainwin.py:21821 .././mainwin.py:21905 +#: .././mainwin.py:21828 .././mainwin.py:21912 msgid "unknown message" msgstr "" -#: .././mainwin.py:21990 +#: .././mainwin.py:21997 msgid "" "TRANSLATOR'S NOTE: Extra items for the 'Format' drop-down box in the Classic " "Mode tab" msgstr "" -#: .././mainwin.py:22227 +#: .././mainwin.py:22234 msgid "" "TRANSLATOR'S NOTE: Extra items for the buttons at the bottom of the Classic " "Mode tab" msgstr "" -#: .././mainwin.py:22633 +#: .././mainwin.py:22640 msgid "TRANSLATOR'S NOTE: Highest video resolution" msgstr "" -#: .././mainwin.py:22886 +#: .././mainwin.py:22893 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by main window menu, Media > " "Profiles > Delete profile" msgstr "" -#: .././mainwin.py:22893 +#: .././mainwin.py:22900 #, python-brace-format msgid "Are you sure you want to delete the profile '{0}'" msgstr "" -#: .././mainwin.py:23870 +#: .././mainwin.py:23877 msgid "" "TRANSLATOR'S NOTE: Duplicate URLs dragged into the main window's Videos tab" msgstr "" -#: .././mainwin.py:23874 +#: .././mainwin.py:23881 msgid "The following items are duplicates:" msgstr "" -#: .././mainwin.py:24118 +#: .././mainwin.py:24125 #, python-brace-format msgid "The channel contains {0} items, so this action may take a while" msgstr "" -#: .././mainwin.py:24125 +#: .././mainwin.py:24132 #, python-brace-format msgid "The playlist contains {0} items, so this action may take a while" msgstr "" -#: .././mainwin.py:24132 +#: .././mainwin.py:24139 #, python-brace-format msgid "The folder contains {0} items, so this action may take a while" msgstr "" -#: .././mainwin.py:24203 +#: .././mainwin.py:24210 msgid "no errors/warnings" msgstr "" #. (Existing code won't be able to find the thumbnail, #. even if the file has been downloaded) -#: .././mainwin.py:24216 .././mainwin.py:24229 +#: .././mainwin.py:24223 .././mainwin.py:24236 msgid "unknown thumbnail path" msgstr "" -#: .././mainwin.py:24388 +#: .././mainwin.py:24395 msgid "" "TRANSLATOR'S NOTE: This section specifies text used to display videos in the " "Videos tab. Videos are displayed in several different formats. To switch " "format, in the main menu click Media > Switch between views" msgstr "" -#: .././mainwin.py:24834 .././mainwin.py:25909 +#: .././mainwin.py:24841 .././mainwin.py:25916 msgid "Originally from:" msgstr "" -#: .././mainwin.py:24847 .././mainwin.py:25923 +#: .././mainwin.py:24854 .././mainwin.py:25930 msgid "From channel" msgstr "" -#: .././mainwin.py:24849 .././mainwin.py:25925 +#: .././mainwin.py:24856 .././mainwin.py:25932 msgid "From playlist" msgstr "" -#: .././mainwin.py:24851 .././mainwin.py:25927 +#: .././mainwin.py:24858 .././mainwin.py:25934 msgid "From folder" msgstr "" -#: .././mainwin.py:24882 +#: .././mainwin.py:24889 msgid "Livestream has not started yet" msgstr "" -#: .././mainwin.py:24889 +#: .././mainwin.py:24896 msgid "Debut has started" msgstr "" -#: .././mainwin.py:24891 +#: .././mainwin.py:24898 msgid "Debut has not started yet" msgstr "" -#: .././mainwin.py:24898 .././mainwin.py:24904 .././mainwin.py:25977 -#: .././mainwin.py:25984 +#: .././mainwin.py:24905 .././mainwin.py:24911 .././mainwin.py:25984 +#: .././mainwin.py:25991 msgid "Duration:" msgstr "" -#: .././mainwin.py:24904 .././mainwin.py:24910 .././mainwin.py:24921 -#: .././mainwin.py:25984 .././mainwin.py:25991 .././mainwin.py:26007 -#: .././mainwin.py:28447 .././mainwin.py:28453 .././mainwin.py:28464 -#: .././media.py:644 .././media.py:654 .././media.py:2253 .././media.py:2259 -#: .././media.py:2269 +#: .././mainwin.py:24911 .././mainwin.py:24917 .././mainwin.py:24928 +#: .././mainwin.py:25991 .././mainwin.py:25998 .././mainwin.py:26014 +#: .././mainwin.py:28454 .././mainwin.py:28460 .././mainwin.py:28471 +#: .././media.py:650 .././media.py:660 .././media.py:2260 .././media.py:2266 +#: .././media.py:2276 msgid "unknown" msgstr "" -#: .././mainwin.py:24908 .././mainwin.py:24910 .././mainwin.py:25988 -#: .././mainwin.py:25990 +#: .././mainwin.py:24915 .././mainwin.py:24917 .././mainwin.py:25995 +#: .././mainwin.py:25997 msgid "Size:" msgstr "" -#: .././mainwin.py:24919 .././mainwin.py:24921 .././mainwin.py:26002 +#: .././mainwin.py:24926 .././mainwin.py:24928 .././mainwin.py:26009 msgid "Date:" msgstr "" -#: .././mainwin.py:25269 +#: .././mainwin.py:25276 msgid "Watch:" msgstr "" -#: .././mainwin.py:25338 +#: .././mainwin.py:25345 msgid "Temporary:" msgstr "" -#: .././mainwin.py:25381 +#: .././mainwin.py:25388 msgid "Marked:" msgstr "" -#: .././mainwin.py:25881 .././mainwin.py:25944 +#: .././mainwin.py:25888 .././mainwin.py:25951 msgid "Show the full description" msgstr "" -#: .././mainwin.py:25882 .././mainwin.py:25945 +#: .././mainwin.py:25889 .././mainwin.py:25952 msgid "More" msgstr "" -#: .././mainwin.py:25894 .././mainwin.py:25953 +#: .././mainwin.py:25901 .././mainwin.py:25960 msgid "Show the short description" msgstr "" -#: .././mainwin.py:25895 .././mainwin.py:25954 +#: .././mainwin.py:25902 .././mainwin.py:25961 msgid "Less" msgstr "" -#: .././mainwin.py:25997 +#: .././mainwin.py:26004 msgid "Received:" msgstr "" -#: .././mainwin.py:26026 +#: .././mainwin.py:26033 msgid "Live now:" msgstr "" -#: .././mainwin.py:26028 .././mainwin.py:28600 +#: .././mainwin.py:26035 .././mainwin.py:28607 msgid "Live soon:" msgstr "" -#: .././mainwin.py:26037 +#: .././mainwin.py:26044 msgid "Debut now:" msgstr "" -#: .././mainwin.py:26039 .././mainwin.py:28602 +#: .././mainwin.py:26046 .././mainwin.py:28609 msgid "Debut soon:" msgstr "" @@ -3202,14 +3159,14 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26046 .././mainwin.py:26048 .././mainwin.py:26052 -#: .././mainwin.py:26354 .././mainwin.py:26356 .././mainwin.py:26360 -#: .././mainwin.py:26862 .././mainwin.py:28478 .././mainwin.py:28480 -#: .././mainwin.py:28484 +#: .././mainwin.py:26053 .././mainwin.py:26055 .././mainwin.py:26059 +#: .././mainwin.py:26361 .././mainwin.py:26363 .././mainwin.py:26367 +#: .././mainwin.py:26869 .././mainwin.py:28485 .././mainwin.py:28487 +#: .././mainwin.py:28491 msgid "Notify" msgstr "" -#: .././mainwin.py:26056 .././mainwin.py:26364 .././mainwin.py:28488 +#: .././mainwin.py:26063 .././mainwin.py:26371 .././mainwin.py:28495 msgid "When the livestream starts, notify the user" msgstr "" @@ -3217,13 +3174,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26067 .././mainwin.py:26069 .././mainwin.py:26370 -#: .././mainwin.py:26372 .././mainwin.py:26375 .././mainwin.py:26744 -#: .././mainwin.py:28499 .././mainwin.py:28501 +#: .././mainwin.py:26074 .././mainwin.py:26076 .././mainwin.py:26377 +#: .././mainwin.py:26379 .././mainwin.py:26382 .././mainwin.py:26751 +#: .././mainwin.py:28506 .././mainwin.py:28508 msgid "Alarm" msgstr "" -#: .././mainwin.py:26073 .././mainwin.py:26379 .././mainwin.py:28505 +#: .././mainwin.py:26080 .././mainwin.py:26386 .././mainwin.py:28512 msgid "When the livestream starts, sound an alarm" msgstr "" @@ -3231,13 +3188,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26078 .././mainwin.py:26080 .././mainwin.py:26385 -#: .././mainwin.py:26387 .././mainwin.py:26390 .././mainwin.py:26902 -#: .././mainwin.py:28510 .././mainwin.py:28512 +#: .././mainwin.py:26085 .././mainwin.py:26087 .././mainwin.py:26392 +#: .././mainwin.py:26394 .././mainwin.py:26397 .././mainwin.py:26909 +#: .././mainwin.py:28517 .././mainwin.py:28519 msgid "Open" msgstr "" -#: .././mainwin.py:26084 .././mainwin.py:26394 .././mainwin.py:28516 +#: .././mainwin.py:26091 .././mainwin.py:26401 .././mainwin.py:28523 msgid "When the livestream starts, open it" msgstr "" @@ -3247,14 +3204,14 @@ msgstr "" #. then use a Glib timer to restore it (after some small fraction of a #. second) #. (Livestream already broadcasting) -#: .././mainwin.py:26092 .././mainwin.py:26097 .././mainwin.py:26099 -#: .././mainwin.py:26400 .././mainwin.py:26402 .././mainwin.py:26405 -#: .././mainwin.py:26783 .././mainwin.py:28524 .././mainwin.py:28529 -#: .././mainwin.py:28531 +#: .././mainwin.py:26099 .././mainwin.py:26104 .././mainwin.py:26106 +#: .././mainwin.py:26407 .././mainwin.py:26409 .././mainwin.py:26412 +#: .././mainwin.py:26790 .././mainwin.py:28531 .././mainwin.py:28536 +#: .././mainwin.py:28538 msgid "D/L on start" msgstr "" -#: .././mainwin.py:26103 .././mainwin.py:26409 .././mainwin.py:28535 +#: .././mainwin.py:26110 .././mainwin.py:26416 .././mainwin.py:28542 msgid "When the livestream starts, download it" msgstr "" @@ -3262,18 +3219,18 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26109 .././mainwin.py:26114 .././mainwin.py:26116 -#: .././mainwin.py:26415 .././mainwin.py:26417 .././mainwin.py:26420 -#: .././mainwin.py:26823 .././mainwin.py:28541 .././mainwin.py:28546 -#: .././mainwin.py:28548 +#: .././mainwin.py:26116 .././mainwin.py:26121 .././mainwin.py:26123 +#: .././mainwin.py:26422 .././mainwin.py:26424 .././mainwin.py:26427 +#: .././mainwin.py:26830 .././mainwin.py:28548 .././mainwin.py:28553 +#: .././mainwin.py:28555 msgid "D/L on stop" msgstr "" -#: .././mainwin.py:26120 .././mainwin.py:26424 .././mainwin.py:28552 +#: .././mainwin.py:26127 .././mainwin.py:26431 .././mainwin.py:28559 msgid "When the livestream stops, download it" msgstr "" -#: .././mainwin.py:26139 .././mainwin.py:28571 +#: .././mainwin.py:26146 .././mainwin.py:28578 msgid "Watch in your media player" msgstr "" @@ -3281,54 +3238,54 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26140 .././mainwin.py:27552 .././mainwin.py:28572 +#: .././mainwin.py:26147 .././mainwin.py:27559 .././mainwin.py:28579 msgid "Player" msgstr "" -#: .././mainwin.py:26172 .././mainwin.py:28617 +#: .././mainwin.py:26179 .././mainwin.py:28624 msgid "Download this video" msgstr "" -#: .././mainwin.py:26187 .././mainwin.py:28632 +#: .././mainwin.py:26194 .././mainwin.py:28639 msgid "" "TRANSLATOR'S NOTE: If you want to use &, use & - if you want to use a " "different word (e.g. French et), then just use that word" msgstr "" -#: .././mainwin.py:26195 .././mainwin.py:28640 +#: .././mainwin.py:26202 .././mainwin.py:28647 msgid "Download and watch in your media player" msgstr "" -#: .././mainwin.py:26196 +#: .././mainwin.py:26203 msgid "Download & watch" msgstr "" -#: .././mainwin.py:26203 +#: .././mainwin.py:26210 msgid "Not downloaded" msgstr "" -#: .././mainwin.py:26230 +#: .././mainwin.py:26237 msgid "Watch on website" msgstr "" -#: .././mainwin.py:26231 .././mainwin.py:27598 +#: .././mainwin.py:26238 .././mainwin.py:27605 msgid "Website" msgstr "" -#: .././mainwin.py:26246 +#: .././mainwin.py:26253 #, python-brace-format msgid "Watch on {0}" msgstr "" -#: .././mainwin.py:26260 +#: .././mainwin.py:26267 msgid "Watch on YouTube" msgstr "" -#: .././mainwin.py:26261 +#: .././mainwin.py:26268 msgid "YouTube" msgstr "" -#: .././mainwin.py:26273 +#: .././mainwin.py:26280 msgid "Watch on HookTube" msgstr "" @@ -3336,11 +3293,11 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26274 .././mainwin.py:27358 +#: .././mainwin.py:26281 .././mainwin.py:27365 msgid "HookTube" msgstr "" -#: .././mainwin.py:26286 +#: .././mainwin.py:26293 msgid "Watch on Invidious" msgstr "" @@ -3348,16 +3305,16 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26287 .././mainwin.py:27402 +#: .././mainwin.py:26294 .././mainwin.py:27409 msgid "Invidious" msgstr "" #. Links not clickable -#: .././mainwin.py:26324 +#: .././mainwin.py:26331 msgid "No link" msgstr "" -#: .././mainwin.py:26461 +#: .././mainwin.py:26468 msgid "Download to a temporary folder later" msgstr "" @@ -3365,19 +3322,19 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26462 .././mainwin.py:26479 .././mainwin.py:27314 +#: .././mainwin.py:26469 .././mainwin.py:26486 .././mainwin.py:27321 msgid "Mark for download" msgstr "" -#: .././mainwin.py:26467 +#: .././mainwin.py:26474 msgid "Download to a temporary folder" msgstr "" -#: .././mainwin.py:26473 +#: .././mainwin.py:26480 msgid "Download to a temporary folder, then watch" msgstr "" -#: .././mainwin.py:26474 .././mainwin.py:28641 +#: .././mainwin.py:26481 .././mainwin.py:28648 msgid "D/L & watch" msgstr "" @@ -3385,12 +3342,12 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26481 .././mainwin.py:27270 +#: .././mainwin.py:26488 .././mainwin.py:27277 msgid "D/L and watch" msgstr "" #. Archived/not archived -#: .././mainwin.py:26505 .././mainwin.py:28679 +#: .././mainwin.py:26512 .././mainwin.py:28686 msgid "Prevent automatic deletion of the video" msgstr "" @@ -3398,13 +3355,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26509 .././mainwin.py:26513 .././mainwin.py:26940 -#: .././mainwin.py:28683 .././mainwin.py:28687 .././mainwin.py:28902 +#: .././mainwin.py:26516 .././mainwin.py:26520 .././mainwin.py:26947 +#: .././mainwin.py:28690 .././mainwin.py:28694 .././mainwin.py:28909 msgid "Archived" msgstr "" #. Bookmarked/not bookmarked -#: .././mainwin.py:26518 .././mainwin.py:28692 +#: .././mainwin.py:26525 .././mainwin.py:28699 msgid "Show video in Bookmarks folder" msgstr "" @@ -3414,13 +3371,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26523 .././mainwin.py:26528 .././mainwin.py:28696 -#: .././mainwin.py:28700 .././mainwin.py:28947 +#: .././mainwin.py:26530 .././mainwin.py:26535 .././mainwin.py:28703 +#: .././mainwin.py:28707 .././mainwin.py:28954 msgid "B/mark" msgstr "" #. Favourite/not favourite -#: .././mainwin.py:26533 .././mainwin.py:28705 +#: .././mainwin.py:26540 .././mainwin.py:28712 msgid "Show in Favourite Videos folder" msgstr "" @@ -3428,13 +3385,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26537 .././mainwin.py:26541 .././mainwin.py:27030 -#: .././mainwin.py:28709 .././mainwin.py:28713 .././config.py:15723 +#: .././mainwin.py:26544 .././mainwin.py:26548 .././mainwin.py:27037 +#: .././mainwin.py:28716 .././mainwin.py:28720 .././config.py:15723 msgid "Favourite" msgstr "" #. Missing/not missing -#: .././mainwin.py:26545 .././mainwin.py:28717 +#: .././mainwin.py:26552 .././mainwin.py:28724 msgid "Mark video as removed by creator" msgstr "" @@ -3442,13 +3399,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26549 .././mainwin.py:26553 .././mainwin.py:27075 -#: .././mainwin.py:28721 .././mainwin.py:28725 +#: .././mainwin.py:26556 .././mainwin.py:26560 .././mainwin.py:27082 +#: .././mainwin.py:28728 .././mainwin.py:28732 msgid "Missing" msgstr "" #. New/not new -#: .././mainwin.py:26558 .././mainwin.py:28730 +#: .././mainwin.py:26565 .././mainwin.py:28737 msgid "Mark video as never watched" msgstr "" @@ -3456,13 +3413,13 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26562 .././mainwin.py:26566 .././mainwin.py:27113 -#: .././mainwin.py:28734 .././mainwin.py:28738 +#: .././mainwin.py:26569 .././mainwin.py:26573 .././mainwin.py:27120 +#: .././mainwin.py:28741 .././mainwin.py:28745 msgid "New" msgstr "" #. In waiting list/not in waiting list -#: .././mainwin.py:26571 .././mainwin.py:28743 +#: .././mainwin.py:26578 .././mainwin.py:28750 msgid "Show in Waiting Videos folder" msgstr "" @@ -3470,1573 +3427,1647 @@ msgstr "" #. this function returns. Workaround is to make the label unclickable, #. then use a Glib timer to restore it (after some small fraction of a #. second) -#: .././mainwin.py:26985 +#: .././mainwin.py:26992 msgid "Bookmarked" msgstr "" -#: .././mainwin.py:28418 +#: .././mainwin.py:28425 msgid "Click to open" msgstr "" -#: .././mainwin.py:28612 +#: .././mainwin.py:28619 msgid "TRANSLATOR'S NOTE: D/L means download" msgstr "" -#: .././mainwin.py:28648 +#: .././mainwin.py:28655 msgid "Can't D/L" msgstr "" -#: .././mainwin.py:28672 +#: .././mainwin.py:28679 msgid "" "TRANSLATOR'S NOTE: This section contains shortened labels: Archive = " "Archived, B/Mark = Bookmarked, Waiting: In waiting list" msgstr "" -#: .././mainwin.py:29920 +#: .././mainwin.py:29925 msgid "Duplicate URL" msgstr "" -#: .././mainwin.py:29926 +#: .././mainwin.py:29931 msgid "Failed to add URL" msgstr "" -#: .././mainwin.py:30397 +#: .././mainwin.py:30427 msgid "" "TRANSLATOR'S NOTE: 'Add many channels/playlists' dialogue starts here. In " "the main window menu, click Media > Add many channels/playlists..." msgstr "" -#: .././mainwin.py:30447 +#: .././mainwin.py:30477 msgid "Add many channels/playlists" msgstr "" #. Initial widgets -#: .././mainwin.py:30470 +#: .././mainwin.py:30500 msgid "Enter URLs below" msgstr "" -#: .././mainwin.py:30476 .././mainwin.py:31342 .././mainwin.py:32267 -#: .././mainwin.py:32836 .././mainwin.py:35606 +#: .././mainwin.py:30506 .././mainwin.py:31372 .././mainwin.py:32297 +#: .././mainwin.py:32866 .././mainwin.py:35637 msgid "Enable automatic copy/paste" msgstr "" #. Buttons to add URLs as channels/playlists -#: .././mainwin.py:30531 +#: .././mainwin.py:30561 msgid "Add channels" msgstr "" -#: .././mainwin.py:30535 +#: .././mainwin.py:30565 msgid "Add playlists" msgstr "" -#: .././mainwin.py:30548 +#: .././mainwin.py:30578 msgid "Double-click the names/URLs to customise them" msgstr "" -#: .././mainwin.py:30556 +#: .././mainwin.py:30586 msgid "" "HINT: You can also click Media > Reset channel/playlist names..." msgstr "" -#: .././mainwin.py:30584 .././mainwin.py:33674 .././mainwin.py:35161 -#: .././mainwin.py:39312 .././config.py:3461 .././config.py:5655 +#: .././mainwin.py:30614 .././mainwin.py:33704 .././mainwin.py:35192 +#: .././mainwin.py:39640 .././config.py:3461 .././config.py:5655 #: .././config.py:5790 msgid "Type" msgstr "" -#: .././mainwin.py:30584 .././config.py:21974 +#: .././mainwin.py:30614 .././config.py:21974 msgid "URL" msgstr "" #. Add more buttons -#: .././mainwin.py:30626 +#: .././mainwin.py:30656 msgid "Toggle channel/playlist" msgstr "" -#: .././mainwin.py:30630 +#: .././mainwin.py:30660 msgid "Delete selected lines" msgstr "" -#: .././mainwin.py:30670 +#: .././mainwin.py:30700 msgid "Add to this folder:" msgstr "" -#: .././mainwin.py:30679 .././mainwin.py:31292 .././mainwin.py:31988 -#: .././mainwin.py:32217 .././mainwin.py:32778 +#: .././mainwin.py:30709 .././mainwin.py:31322 .././mainwin.py:32018 +#: .././mainwin.py:32247 .././mainwin.py:32808 msgid "No parent folder" msgstr "" -#: .././mainwin.py:31122 +#: .././mainwin.py:31152 msgid "" "TRANSLATOR'S NOTE: 'Add channel' dialogue starts here. In the main window " "toolbar, click the Channel button" msgstr "" -#: .././mainwin.py:31160 +#: .././mainwin.py:31190 msgid "Add channel" msgstr "" -#: .././mainwin.py:31179 +#: .././mainwin.py:31209 msgid "Enter the channel name" msgstr "" -#: .././mainwin.py:31184 +#: .././mainwin.py:31214 msgid "(Use the channel's real name or a customised name)" msgstr "" -#: .././mainwin.py:31192 +#: .././mainwin.py:31222 msgid "Copy and paste a link to the channel" msgstr "" -#: .././mainwin.py:31216 +#: .././mainwin.py:31246 msgid "" "Before adding the URL for a YouTube channel, first click the Videos tab in " "your browser!" msgstr "" -#: .././mainwin.py:31283 +#: .././mainwin.py:31313 msgid "(Optional) Add this channel inside a folder" msgstr "" -#: .././mainwin.py:31325 +#: .././mainwin.py:31355 msgid "Enable video downloads for this channel" msgstr "" -#: .././mainwin.py:31332 .././mainwin.py:32027 .././mainwin.py:32257 -#: .././mainwin.py:32827 +#: .././mainwin.py:31362 .././mainwin.py:32057 .././mainwin.py:32287 +#: .././mainwin.py:32857 msgid "Don't download the videos, just check them" msgstr "" -#: .././mainwin.py:31533 +#: .././mainwin.py:31563 msgid "" "TRANSLATOR'S NOTE: 'Add dropzone dialogue starts here. In the Drag and Drop " "tab, click the button in the top-right corner" msgstr "" -#: .././mainwin.py:31562 +#: .././mainwin.py:31592 msgid "Add dropzone" msgstr "" -#: .././mainwin.py:31584 +#: .././mainwin.py:31614 msgid "Create new download options called" msgstr "" -#: .././mainwin.py:31596 .././mainwin.py:33059 +#: .././mainwin.py:31626 .././mainwin.py:33089 msgid "Use these download options" msgstr "" -#: .././mainwin.py:31633 .././mainwin.py:33093 +#: .././mainwin.py:31663 .././mainwin.py:33123 msgid "Clone these download options" msgstr "" -#: .././mainwin.py:31887 +#: .././mainwin.py:31917 msgid "" "TRANSLATOR'S NOTE: 'Add folder' dialogue starts here. In the main window " "toolbar, click the Folder button" msgstr "" -#: .././mainwin.py:31918 +#: .././mainwin.py:31948 msgid "Add folder" msgstr "" -#: .././mainwin.py:31937 +#: .././mainwin.py:31967 msgid "Enter the folder name" msgstr "" -#: .././mainwin.py:31978 +#: .././mainwin.py:32008 msgid "(Optional) Add this folder inside another folder" msgstr "" -#: .././mainwin.py:32021 +#: .././mainwin.py:32051 msgid "Enable video downloads for this folder" msgstr "" -#: .././mainwin.py:32091 +#: .././mainwin.py:32121 msgid "" "TRANSLATOR'S NOTE: 'Add playlist' dialogue starts here. In the main window " "toolbar, click the Playlist button" msgstr "" -#: .././mainwin.py:32127 +#: .././mainwin.py:32157 msgid "Add playlist" msgstr "" -#: .././mainwin.py:32146 +#: .././mainwin.py:32176 msgid "Enter the playlist name" msgstr "" -#: .././mainwin.py:32151 +#: .././mainwin.py:32181 msgid "(Use the playlist's real name or a customised name)" msgstr "" -#: .././mainwin.py:32159 +#: .././mainwin.py:32189 msgid "Copy and paste a link to the playlist" msgstr "" -#: .././mainwin.py:32208 +#: .././mainwin.py:32238 msgid "(Optional) Add this playlist inside a folder" msgstr "" -#: .././mainwin.py:32250 +#: .././mainwin.py:32280 msgid "Enable video downloads for this playlist" msgstr "" -#: .././mainwin.py:32420 +#: .././mainwin.py:32450 msgid "" "TRANSLATOR'S NOTE: 'Reset timestamps' dialogue starts here. In the Videos " "tab, right-click a video and select Show Video > Properties... > Timestamps " "> Reset list using copied text" msgstr "" -#: .././mainwin.py:32450 +#: .././mainwin.py:32480 msgid "Reset timestamps" msgstr "" -#: .././mainwin.py:32472 +#: .././mainwin.py:32502 msgid "Copy timestamps below, e.g." msgstr "" -#: .././mainwin.py:32473 +#: .././mainwin.py:32503 msgid "Introduction" msgstr "" -#: .././mainwin.py:32599 +#: .././mainwin.py:32629 msgid "" "TRANSLATOR'S NOTE: 'Add video' dialogue starts here. In the main window " "toolbar, click the Video button" msgstr "" -#: .././mainwin.py:32636 +#: .././mainwin.py:32666 msgid "Add videos" msgstr "" -#: .././mainwin.py:32655 .././mainwin.py:35493 +#: .././mainwin.py:32685 .././mainwin.py:35524 msgid "Copy and paste the links to one or more videos" msgstr "" -#: .././mainwin.py:32661 .././mainwin.py:35499 +#: .././mainwin.py:32691 .././mainwin.py:35530 msgid "Links containing multiple videos will be converted to a channel" msgstr "" -#: .././mainwin.py:32668 .././mainwin.py:35506 +#: .././mainwin.py:32698 .././mainwin.py:35537 msgid "Links containing multiple videos will be converted to a playlist" msgstr "" -#: .././mainwin.py:32675 .././mainwin.py:35513 +#: .././mainwin.py:32705 .././mainwin.py:35544 msgid "Links containing multiple videos will be downloaded separately" msgstr "" -#: .././mainwin.py:32682 .././mainwin.py:35520 +#: .././mainwin.py:32712 .././mainwin.py:35551 msgid "Links containing multiple videos will not be downloaded at all" msgstr "" -#: .././mainwin.py:32769 +#: .././mainwin.py:32799 msgid "Add the videos to this folder" msgstr "" -#: .././mainwin.py:32821 +#: .././mainwin.py:32851 msgid "I want to download these videos" msgstr "" -#: .././mainwin.py:32998 +#: .././mainwin.py:33028 msgid "" "TRANSLATOR'S NOTE: 'Apply download options' dialogue starts here. In the " "Videos tab, right-click a channel, playlist or folder and select Downloads > " "Apply download options..." msgstr "" -#: .././mainwin.py:33027 .././config.py:2257 +#: .././mainwin.py:33057 .././config.py:2257 msgid "Apply download options" msgstr "" -#: .././mainwin.py:33049 +#: .././mainwin.py:33079 msgid "Create new download options" msgstr "" -#: .././mainwin.py:33311 +#: .././mainwin.py:33341 msgid "" "TRANSLATOR'S NOTE: 'Select a date' dialogue starts here. In the toolbar at " "the bottom of the Videos tab, click the 'Find date' button" msgstr "" -#: .././mainwin.py:33331 +#: .././mainwin.py:33361 msgid "Select a date" msgstr "" -#: .././mainwin.py:33393 +#: .././mainwin.py:33423 msgid "" "TRANSLATOR'S NOTE: 'Change window theme' dialogue starts here. In the main " "window menu, click System > Change theme. Available on MS Windows only" msgstr "" -#: .././mainwin.py:33425 +#: .././mainwin.py:33455 msgid "Change window theme" msgstr "" -#: .././mainwin.py:33448 +#: .././mainwin.py:33478 msgid "Choose a new window theme for Tartube" msgstr "" -#: .././mainwin.py:33478 +#: .././mainwin.py:33508 msgid "Hint: choose 'default' for the normal MS Windows theme" msgstr "" -#: .././mainwin.py:33612 +#: .././mainwin.py:33642 msgid "" "TRANSLATOR'S NOTE: 'Create profile' dialogue starts here. In the main window " "menu, click Media > Profiles > Create profile..." msgstr "" -#: .././mainwin.py:33634 +#: .././mainwin.py:33664 msgid "Create profile" msgstr "" -#: .././mainwin.py:33655 +#: .././mainwin.py:33685 msgid "Items currently marked:" msgstr "" -#: .././mainwin.py:33705 +#: .././mainwin.py:33735 msgid "Remember these items with a profile named:" msgstr "" -#: .././mainwin.py:33773 +#: .././mainwin.py:33803 msgid "" "TRANSLATOR'S NOTE: 'Delete channel' dialogue starts here. In the Videos tab, " "right-click a channel and select Delete channel" msgstr "" -#: .././mainwin.py:33818 +#: .././mainwin.py:33849 msgid "Delete channel" msgstr "" -#: .././mainwin.py:33820 +#: .././mainwin.py:33851 msgid "Delete playlist" msgstr "" -#: .././mainwin.py:33822 +#: .././mainwin.py:33853 msgid "Delete folder" msgstr "" -#: .././mainwin.py:33825 +#: .././mainwin.py:33856 msgid "Empty channel" msgstr "" -#: .././mainwin.py:33827 +#: .././mainwin.py:33858 msgid "Empty playlist" msgstr "" -#: .././mainwin.py:33829 +#: .././mainwin.py:33860 msgid "Empty folder" msgstr "" -#: .././mainwin.py:33863 +#: .././mainwin.py:33894 msgid "This channel does not contain any videos" msgstr "" -#: .././mainwin.py:33865 +#: .././mainwin.py:33896 msgid "This playlist does not contain any videos" msgstr "" -#: .././mainwin.py:33867 +#: .././mainwin.py:33898 msgid "This folder doesn't contain anything" msgstr "" -#: .././mainwin.py:33873 +#: .././mainwin.py:33904 msgid "(but there might be some files in Tartube's data folder)" msgstr "" -#: .././mainwin.py:33886 +#: .././mainwin.py:33917 msgid "This channel contains:" msgstr "" -#: .././mainwin.py:33888 +#: .././mainwin.py:33919 msgid "This playlist contains:" msgstr "" -#: .././mainwin.py:33890 .././config.py:18247 +#: .././mainwin.py:33921 .././config.py:18247 msgid "This folder contains:" msgstr "" -#: .././mainwin.py:33897 +#: .././mainwin.py:33928 msgid "1 folder" msgstr "" -#: .././mainwin.py:33899 +#: .././mainwin.py:33930 #, python-brace-format msgid "{0} folders" msgstr "" -#: .././mainwin.py:33906 +#: .././mainwin.py:33937 msgid "1 channel" msgstr "" -#: .././mainwin.py:33908 +#: .././mainwin.py:33939 #, python-brace-format msgid "{0} channels" msgstr "" -#: .././mainwin.py:33915 +#: .././mainwin.py:33946 msgid "1 playlist" msgstr "" -#: .././mainwin.py:33917 +#: .././mainwin.py:33948 #, python-brace-format msgid "{0} playlists" msgstr "" -#: .././mainwin.py:33924 .././mainwin.py:35234 +#: .././mainwin.py:33955 .././mainwin.py:35265 msgid "1 video" msgstr "" -#: .././mainwin.py:33926 .././mainwin.py:35237 +#: .././mainwin.py:33957 .././mainwin.py:35268 #, python-brace-format msgid "{0} videos" msgstr "" -#: .././mainwin.py:33939 +#: .././mainwin.py:33970 msgid "" "Do you want to remove the channel from your filesystem, or do you just want " "to remove the channel from this list?" msgstr "" -#: .././mainwin.py:33943 +#: .././mainwin.py:33974 msgid "Just remove the channel from this list" msgstr "" -#: .././mainwin.py:33947 +#: .././mainwin.py:33978 msgid "" "Do you want to remove the playlist from your filesystem, or do you just " "want to remove the playlist from this list?" msgstr "" -#: .././mainwin.py:33951 +#: .././mainwin.py:33982 msgid "Just remove the playlist from this list" msgstr "" -#: .././mainwin.py:33955 +#: .././mainwin.py:33986 msgid "" "Do you want to remove the folder from your filesystem, or do you just want " "to remove the folder from this list?" msgstr "" -#: .././mainwin.py:33959 +#: .././mainwin.py:33990 msgid "Just remove the folder from this list" msgstr "" -#: .././mainwin.py:33965 +#: .././mainwin.py:33996 msgid "" "Do you want to empty the channel on your filesystem, or do you just want to " "empty the channel in this list?" msgstr "" -#: .././mainwin.py:33969 +#: .././mainwin.py:34000 msgid "Just empty the channel in this list" msgstr "" -#: .././mainwin.py:33973 +#: .././mainwin.py:34004 msgid "" "Do you want to empty the playlist on your filesystem, or do you just want to " "empty the playlist in this list?" msgstr "" -#: .././mainwin.py:33977 +#: .././mainwin.py:34008 msgid "Just empty the playlist in this list" msgstr "" -#: .././mainwin.py:33981 +#: .././mainwin.py:34012 msgid "" "Do you want to empty the folder on your filesystem, or do you just want to " "empty the folder in this list?" msgstr "" -#: .././mainwin.py:33985 +#: .././mainwin.py:34016 msgid "Just empty the folder in this list" msgstr "" -#: .././mainwin.py:34001 .././mainwin.py:34307 +#: .././mainwin.py:34032 .././mainwin.py:34338 msgid "Delete files on your computer" msgstr "" -#: .././mainwin.py:34009 .././mainwin.py:34315 .././mainwin.py:36132 -#: .././mainwin.py:36348 +#: .././mainwin.py:34040 .././mainwin.py:34346 .././mainwin.py:36460 +#: .././mainwin.py:36676 msgid "Always show this window" msgstr "" -#: .././mainwin.py:34045 +#: .././mainwin.py:34076 msgid "" "TRANSLATOR'S NOTE: 'Delete dropzone' dialogue starts here. In the Drag and " "Drop tab, click a delete button in the bottom-right corner of any dropzone" msgstr "" -#: .././mainwin.py:34073 +#: .././mainwin.py:34104 msgid "Delete dropzone" msgstr "" -#: .././mainwin.py:34091 +#: .././mainwin.py:34122 msgid "Just delete the dropzone" msgstr "" -#: .././mainwin.py:34096 +#: .././mainwin.py:34127 msgid "Also delete download options" msgstr "" -#: .././mainwin.py:34179 +#: .././mainwin.py:34210 msgid "" "TRANSLATOR'S NOTE: 'Delete videos' dialogue starts here. In the Videos tab, " "right-click a video and select Delete video" msgstr "" -#: .././mainwin.py:34234 +#: .././mainwin.py:34265 msgid "Delete videos" msgstr "" -#: .././mainwin.py:34259 +#: .././mainwin.py:34290 msgid "1 selected video" msgstr "" -#: .././mainwin.py:34262 +#: .././mainwin.py:34293 #, python-brace-format msgid "{0} selected videos" msgstr "" -#: .././mainwin.py:34274 +#: .././mainwin.py:34305 msgid "" "Do you want to remove the video(s) from your filesystem, or do you just want " "to remove them from this channel?" msgstr "" -#: .././mainwin.py:34277 +#: .././mainwin.py:34308 msgid "Just remove the video(s) from this channel" msgstr "" -#: .././mainwin.py:34281 +#: .././mainwin.py:34312 msgid "" "Do you want to remove the video(s) from your filesystem, or do you just want " "to remove them from this playlist?" msgstr "" -#: .././mainwin.py:34284 +#: .././mainwin.py:34315 msgid "Just remove the video(s) from this playlist" msgstr "" -#: .././mainwin.py:34288 +#: .././mainwin.py:34319 msgid "" "Do you want to remove the video(s) from your filesystem, or do you just want " "to remove them from this folder?" msgstr "" -#: .././mainwin.py:34291 +#: .././mainwin.py:34322 msgid "Just remove the video(s) from this folder" msgstr "" -#: .././mainwin.py:34350 +#: .././mainwin.py:34381 msgid "" "TRANSLATOR'S NOTE: 'Duplicate URLs' dialogue starts here. In the main window " "toolbar, click the Video button. In the top half of the first dialogue " "window, add duplicate URLs and then click the OK button" msgstr "" -#: .././mainwin.py:34377 +#: .././mainwin.py:34408 msgid "Duplicate URLs" msgstr "" -#: .././mainwin.py:34400 +#: .././mainwin.py:34431 msgid "The following URLs are duplicates:" msgstr "" -#: .././mainwin.py:34451 +#: .././mainwin.py:34482 msgid "" "TRANSLATOR'S NOTE: 'Export from database' dialogue starts here. In the main " "window menu, click Media > Export/Import > Export from database..." msgstr "" -#: .././mainwin.py:34484 +#: .././mainwin.py:34515 msgid "Export from database" msgstr "" -#: .././mainwin.py:34510 +#: .././mainwin.py:34541 msgid "" "Tartube is ready to export a partial summary of its database, containing a " "list of videos, channels, playlists and/or folders (but not including the " "videos themselves)" msgstr "" -#: .././mainwin.py:34517 +#: .././mainwin.py:34548 msgid "" "Tartube is ready to export a summary of its database, containing a list of " "videos, channels, playlists and/or folders (but not including the videos " "themselves)" msgstr "" -#: .././mainwin.py:34533 +#: .././mainwin.py:34564 msgid "Choose what should be included:" msgstr "" -#: .././mainwin.py:34541 +#: .././mainwin.py:34572 msgid "Include lists of videos" msgstr "" -#: .././mainwin.py:34546 +#: .././mainwin.py:34577 msgid "Include channels" msgstr "" -#: .././mainwin.py:34551 +#: .././mainwin.py:34582 msgid "Include playlists" msgstr "" -#: .././mainwin.py:34556 +#: .././mainwin.py:34587 msgid "Preserve folder structure" msgstr "" -#: .././mainwin.py:34564 +#: .././mainwin.py:34595 msgid "Export as JSON" msgstr "" -#: .././mainwin.py:34570 +#: .././mainwin.py:34601 msgid "Export as CSV using separator" msgstr "" -#: .././mainwin.py:34597 +#: .././mainwin.py:34628 msgid "Export as plain text" msgstr "" -#: .././mainwin.py:34682 +#: .././mainwin.py:34713 msgid "" "TRANSLATOR'S NOTE: 'Type extractor code' dialogue starts here. In the main " "window menu, click Edit > General download Options... > Formats > Preferred, " "then click the small button next to the 'Add format' button" msgstr "" -#: .././mainwin.py:34709 +#: .././mainwin.py:34740 msgid "Type extractor code" msgstr "" -#: .././mainwin.py:34746 +#: .././mainwin.py:34777 #, python-brace-format msgid "Type an extractor code in the range {0}-{1}" msgstr "" -#: .././mainwin.py:34749 +#: .././mainwin.py:34780 msgid "(mp3, mp4 etc are also acceptable)" msgstr "" -#: .././mainwin.py:34755 +#: .././mainwin.py:34786 msgid "e.g. 136 for mp4 720p" msgstr "" -#: .././mainwin.py:34846 +#: .././mainwin.py:34877 msgid "" "TRANSLATOR'S NOTE: Confirmation dialogue for fetching formats/subtitles. In " "the Videos tab, right-click a video and select Fetch > Available formats... " "or Fetch > Available subtitles" msgstr "" -#: .././mainwin.py:34896 +#: .././mainwin.py:34927 msgid "Click the Output tab to see available formats" msgstr "" -#: .././mainwin.py:34898 +#: .././mainwin.py:34929 msgid "Click the Output tab to see available subtitles" msgstr "" -#: .././mainwin.py:34907 +#: .././mainwin.py:34938 msgid "Update general download options" msgstr "" -#: .././mainwin.py:34915 +#: .././mainwin.py:34946 msgid "Apply download options to this video only" msgstr "" -#: .././mainwin.py:34923 +#: .././mainwin.py:34954 msgid "Update this video's download options" msgstr "" -#: .././mainwin.py:35078 +#: .././mainwin.py:35109 msgid "" "TRANSLATOR'S NOTE: 'Import into database' dialogue starts here. In the main " "window menu, click Media > Export/Import > Import into database..." msgstr "" -#: .././mainwin.py:35108 +#: .././mainwin.py:35139 msgid "Import into database" msgstr "" -#: .././mainwin.py:35132 +#: .././mainwin.py:35163 msgid "Choose which items to import" msgstr "" -#: .././mainwin.py:35153 .././config.py:24815 .././config.py:27142 -#: .././config.py:27423 +#: .././mainwin.py:35184 .././config.py:24854 .././config.py:27184 +#: .././config.py:27465 msgid "Import" msgstr "" -#: .././mainwin.py:35189 +#: .././mainwin.py:35220 msgid "Import videos" msgstr "" -#: .././mainwin.py:35194 +#: .././mainwin.py:35225 msgid "Merge channels/playlists/folders" msgstr "" #. Strip of widgets at the bottom #. Bottom strip -#: .././mainwin.py:35197 .././mainwin.py:36968 .././mainwin.py:38143 -#: .././mainwin.py:39378 .././mainwin.py:40951 +#: .././mainwin.py:35228 .././mainwin.py:37296 .././mainwin.py:38471 +#: .././mainwin.py:39706 .././mainwin.py:41279 msgid "Select all" msgstr "" -#: .././mainwin.py:35202 .././mainwin.py:39383 +#: .././mainwin.py:35233 .././mainwin.py:39711 msgid "Unselect all" msgstr "" -#: .././mainwin.py:35440 +#: .././mainwin.py:35471 msgid "" "TRANSLATOR'S NOTE: 'Insert videos' dialogue starts here. In the Videos tab, " "right-click a channel and select Channel actions > Insert videos..." msgstr "" -#: .././mainwin.py:35474 +#: .././mainwin.py:35505 msgid "Insert videos" msgstr "" -#: .././mainwin.py:35575 +#: .././mainwin.py:35606 msgid "Insert the videos into this channel:" msgstr "" -#: .././mainwin.py:35578 +#: .././mainwin.py:35609 msgid "Insert the videos into this playlist:" msgstr "" -#: .././mainwin.py:35581 +#: .././mainwin.py:35612 msgid "Insert the videos into this folder:" msgstr "" -#: .././mainwin.py:35753 +#: .././mainwin.py:35784 msgid "" "TRANSLATOR'S NOTE: 'Mount drive' dialogue starts here. Visible on startup, " "if Tartube's data folder does not exist" msgstr "" -#: .././mainwin.py:35786 +#: .././mainwin.py:35817 msgid "Mount drive" msgstr "" -#: .././mainwin.py:35811 +#: .././mainwin.py:35842 msgid "The Tartube data folder is set to:" msgstr "" -#: .././mainwin.py:35824 +#: .././mainwin.py:35855 msgid "...but this folder doesn't exist" msgstr "" -#: .././mainwin.py:35827 +#: .././mainwin.py:35858 msgid "...but Tartube cannot write to this folder" msgstr "" -#: .././mainwin.py:35837 +#: .././mainwin.py:35868 msgid "I have mounted the drive, please try again" msgstr "" -#: .././mainwin.py:35843 +#: .././mainwin.py:35874 msgid "Use this data folder:" msgstr "" -#: .././mainwin.py:35870 +#: .././mainwin.py:35901 msgid "Select a different data folder" msgstr "" -#: .././mainwin.py:35876 +#: .././mainwin.py:35907 msgid "Use the default data folder" msgstr "" -#: .././mainwin.py:35882 +#: .././mainwin.py:35913 msgid "Shut down Tartube" msgstr "" #. 'Cancel' button -#: .././mainwin.py:35889 .././config.py:1264 +#: .././mainwin.py:35920 .././config.py:1264 msgid "Cancel" msgstr "" #. 'OK' button -#: .././mainwin.py:35893 .././config.py:1255 .././config.py:2439 +#: .././mainwin.py:35924 .././config.py:1255 .././config.py:2439 #: .././config.py:13889 .././config.py:14255 msgid "OK" msgstr "" -#: .././mainwin.py:35927 +#: .././mainwin.py:35958 msgid "The folder still doesn't exist. Please try a different option" msgstr "" -#: .././mainwin.py:36063 +#: .././mainwin.py:36104 +msgid "" +"TRANSLATOR'S NOTE: 'Move container' dialogue starts here. In the Videos tab, " +"drag a channel, playlist or folder onto another folder" +msgstr "" + +#: .././mainwin.py:36131 +msgid "Move container" +msgstr "" + +#: .././mainwin.py:36153 +msgid "Are you sure you want to move this channel:" +msgstr "" + +#: .././mainwin.py:36155 +msgid "Are you sure you want to move this playlist:" +msgstr "" + +#: .././mainwin.py:36157 +msgid "Are you sure you want to move this folder:" +msgstr "" + +#: .././mainwin.py:36163 +msgid "into this folder:" +msgstr "" + +#: .././mainwin.py:36165 +msgid "This procedure will move all downloaded files to the new location" +msgstr "" + +#: .././mainwin.py:36171 +msgid "" +"This procedure will move all downloaded files to the top level of Tartube's " +"data folder" +msgstr "" + +#: .././mainwin.py:36193 .././mainwin.py:36335 +msgid "" +"WARNING: The destination folder is marked as temporary, so everything inside " +"it will be DELETED when Tartube restarts!" +msgstr "" + +#: .././mainwin.py:36207 .././mainwin.py:36349 +msgid "After moving, switch to the destination" +msgstr "" + +#: .././mainwin.py:36215 +msgid "Always show this window before moving containers" +msgstr "" + +#: .././mainwin.py:36255 +msgid "" +"TRANSLATOR'S NOTE: 'Move videos' dialogue starts here. In the Videos tab, " +"drag a video onto a channel, playlist or folder" +msgstr "" + +#: .././mainwin.py:36282 +msgid "Move videos" +msgstr "" + +#: .././mainwin.py:36304 +#, python-brace-format +msgid "Are you sure you want to move the video to '{0}'?" +msgstr "" + +#: .././mainwin.py:36310 +#, python-brace-format +msgid "Are you sure you want to move {0} videos to '{1}'?" +msgstr "" + +#: .././mainwin.py:36357 +msgid "Always show this window before moving videos" +msgstr "" + +#: .././mainwin.py:36391 msgid "" "TRANSLATOR'S NOTE: 'MSYS2 terminal' dialogue starts here. In the main window " "menu, click System > Open MSYS2 terminal (MS Windows only)" msgstr "" -#: .././mainwin.py:36089 +#: .././mainwin.py:36417 msgid "MSYS2 terminal" msgstr "" -#: .././mainwin.py:36113 +#: .././mainwin.py:36441 msgid "On MS Windows, Tartube runs in the MSYS2 environment." msgstr "" -#: .././mainwin.py:36121 +#: .././mainwin.py:36449 msgid "" "Advanced users can use the MSYS2 terminal to make changes to the\n" "environment (for example, to tweak youtube-dl or FFmpeg)" msgstr "" -#: .././mainwin.py:36191 +#: .././mainwin.py:36519 msgid "" "TRANSLATOR'S NOTE: Download failure dialogue starts here. Visible when the " "user tries to check/download videos, but no videos are checked/downloaded" msgstr "" -#: .././mainwin.py:36223 .././config.py:480 +#: .././mainwin.py:36551 .././config.py:480 msgid "Downloads" msgstr "" -#: .././mainwin.py:36253 +#: .././mainwin.py:36581 msgid "Nothing happened?" msgstr "" -#: .././mainwin.py:36269 +#: .././mainwin.py:36597 msgid "Check the requested format is actually available" msgstr "" -#: .././mainwin.py:36274 +#: .././mainwin.py:36602 msgid "(Try converting instead of a direct download)" msgstr "" -#: .././mainwin.py:36287 +#: .././mainwin.py:36615 msgid "Check the downloader is installed and updated" msgstr "" -#: .././mainwin.py:36292 .././mainwin.py:40503 +#: .././mainwin.py:36620 .././mainwin.py:40831 msgid "Update" msgstr "" -#: .././mainwin.py:36298 +#: .././mainwin.py:36626 msgid "Tell Tartube where to find the downloader" msgstr "" -#: .././mainwin.py:36303 +#: .././mainwin.py:36631 msgid "Set the downloader's file path" msgstr "" -#: .././mainwin.py:36309 +#: .././mainwin.py:36637 msgid "Try a different downloader" msgstr "" -#: .././mainwin.py:36315 +#: .././mainwin.py:36643 msgid "Find more help" msgstr "" -#: .././mainwin.py:36320 +#: .././mainwin.py:36648 msgid "Read the FAQ" msgstr "" -#: .././mainwin.py:36326 +#: .././mainwin.py:36654 msgid "Ask for help" msgstr "" -#: .././mainwin.py:36338 +#: .././mainwin.py:36666 msgid "" "Don't forget to check the Output tab and the\n" "Errors/Warnings tab for error messages!" msgstr "" -#: .././mainwin.py:36502 +#: .././mainwin.py:36830 msgid "" "TRANSLATOR'S NOTE: 'Download with name' and 'Re-download with name' dialogue " "starts here. Right-click a video and select Special > Download with name..." msgstr "" -#: .././mainwin.py:36531 +#: .././mainwin.py:36859 msgid "Download with name" msgstr "" -#: .././mainwin.py:36533 +#: .././mainwin.py:36861 msgid "Re-download with name" msgstr "" -#: .././mainwin.py:36557 +#: .././mainwin.py:36885 msgid "Override the output template with this name" msgstr "" -#: .././mainwin.py:36619 +#: .././mainwin.py:36947 msgid "" "TRANSLATOR'S NOTE: 'Create video clip' dialogue starts here. In the Videos " "tab, right-click a video and select Special > Create video clips..." msgstr "" -#: .././mainwin.py:36727 +#: .././mainwin.py:37055 msgid "Enter the video's URL:" msgstr "" -#: .././mainwin.py:36751 +#: .././mainwin.py:37079 msgid "Optional video name (will be added to all clips)" msgstr "" -#: .././mainwin.py:36764 .././mainwin.py:37893 +#: .././mainwin.py:37092 .././mainwin.py:38221 msgid "Select a method:" msgstr "" -#: .././mainwin.py:36769 +#: .././mainwin.py:37097 msgid "Download new clips using yt-dlp" msgstr "" -#: .././mainwin.py:36780 +#: .././mainwin.py:37108 msgid "Download new clips using FFmpeg" msgstr "" -#: .././mainwin.py:36789 +#: .././mainwin.py:37117 msgid "Create clips from the downloaded video" msgstr "" -#: .././mainwin.py:36802 +#: .././mainwin.py:37130 msgid "Warning: Downloading new clips is usually MUCH quicker!" msgstr "" -#: .././mainwin.py:36822 .././mainwin.py:37666 +#: .././mainwin.py:37150 .././mainwin.py:37994 msgid "Create one clip" msgstr "" -#: .././mainwin.py:36826 .././mainwin.py:37600 .././mainwin.py:37633 +#: .././mainwin.py:37154 .././mainwin.py:37928 .././mainwin.py:37961 msgid "Download one clip" msgstr "" -#: .././mainwin.py:36832 .././config.py:11758 .././config.py:12406 +#: .././mainwin.py:37160 .././config.py:11758 .././config.py:12406 #: .././config.py:15170 msgid "Start timestamp (e.g. 15:29)" msgstr "" -#: .././mainwin.py:36844 .././config.py:11778 .././config.py:12426 +#: .././mainwin.py:37172 .././config.py:11778 .././config.py:12426 #: .././config.py:15183 msgid "Stop timestamp (optional)" msgstr "" -#: .././mainwin.py:36853 .././config.py:11793 .././config.py:12441 +#: .././mainwin.py:37181 .././config.py:11793 .././config.py:12441 #: .././config.py:15196 msgid "Clip title (optional)" msgstr "" -#: .././mainwin.py:36863 .././mainwin.py:37667 +#: .././mainwin.py:37191 .././mainwin.py:37995 msgid "Create clip" msgstr "" -#: .././mainwin.py:36865 .././mainwin.py:37601 .././mainwin.py:37634 +#: .././mainwin.py:37193 .././mainwin.py:37929 .././mainwin.py:37962 msgid "Download clip" msgstr "" -#: .././mainwin.py:36876 .././mainwin.py:37669 +#: .././mainwin.py:37204 .././mainwin.py:37997 msgid "Create multiple clips" msgstr "" -#: .././mainwin.py:36880 .././mainwin.py:37604 .././mainwin.py:37636 +#: .././mainwin.py:37208 .././mainwin.py:37932 .././mainwin.py:37964 msgid "Download multiple clips" msgstr "" -#: .././mainwin.py:36898 .././mainwin.py:38005 +#: .././mainwin.py:37226 .././mainwin.py:38333 msgid "Marked" msgstr "" -#: .././mainwin.py:36898 .././mainwin.py:38008 .././config.py:11735 +#: .././mainwin.py:37226 .././mainwin.py:38336 .././config.py:11735 #: .././config.py:11920 .././config.py:12383 .././config.py:12594 #: .././config.py:15151 .././config.py:15336 msgid "Start" msgstr "" -#: .././mainwin.py:36898 .././config.py:11735 .././config.py:12383 +#: .././mainwin.py:37226 .././config.py:11735 .././config.py:12383 #: .././config.py:15151 msgid "Clip title" msgstr "" -#: .././mainwin.py:36940 +#: .././mainwin.py:37268 msgid "Add timestamp from above" msgstr "" -#: .././mainwin.py:36945 .././config.py:11815 .././config.py:12463 +#: .././mainwin.py:37273 .././config.py:11815 .././config.py:12463 #: .././config.py:15222 msgid "Delete timestamp" msgstr "" -#: .././mainwin.py:36950 .././config.py:11825 .././config.py:12473 +#: .././mainwin.py:37278 .././config.py:11825 .././config.py:12473 #: .././config.py:15231 msgid "Clip preferences" msgstr "" #. (Signal connect appears below) -#: .././mainwin.py:36973 .././mainwin.py:38148 .././mainwin.py:40956 +#: .././mainwin.py:37301 .././mainwin.py:38476 .././mainwin.py:41284 msgid "Select none" msgstr "" -#: .././mainwin.py:36978 .././config.py:15247 +#: .././mainwin.py:37306 .././config.py:15247 msgid "Reset list using copied text" msgstr "" -#: .././mainwin.py:36984 .././config.py:15255 +#: .././mainwin.py:37312 .././config.py:15255 msgid "Reset list using video description" msgstr "" -#: .././mainwin.py:37004 .././mainwin.py:37671 +#: .././mainwin.py:37332 .././mainwin.py:37999 msgid "Create marked clips" msgstr "" -#: .././mainwin.py:37008 .././mainwin.py:37608 .././mainwin.py:37640 +#: .././mainwin.py:37336 .././mainwin.py:37936 .././mainwin.py:37968 msgid "Download marked clips" msgstr "" -#: .././mainwin.py:37016 .././mainwin.py:37672 +#: .././mainwin.py:37344 .././mainwin.py:38000 msgid "Create all clips" msgstr "" -#: .././mainwin.py:37018 .././mainwin.py:37610 .././mainwin.py:37642 +#: .././mainwin.py:37346 .././mainwin.py:37938 .././mainwin.py:37970 msgid "Download all clips" msgstr "" #. (Signal connect appears below) -#: .././mainwin.py:37024 +#: .././mainwin.py:37352 msgid "Download all chapters" msgstr "" -#: .././mainwin.py:37229 .././mainwin.py:37232 +#: .././mainwin.py:37557 .././mainwin.py:37560 msgid "INVALID" msgstr "" -#: .././mainwin.py:37807 +#: .././mainwin.py:38135 msgid "" "TRANSLATOR'S NOTE: 'Remove video slices' dialogue starts here. In the Videos " "tab, right-click a video and select Special > Remove video slices..." msgstr "" -#: .././mainwin.py:37866 +#: .././mainwin.py:38194 msgid "Remove video slices" msgstr "" -#: .././mainwin.py:37898 +#: .././mainwin.py:38226 msgid "Download new sliced video" msgstr "" -#: .././mainwin.py:37906 +#: .././mainwin.py:38234 msgid "Remove slices from the downloaded video" msgstr "" -#: .././mainwin.py:37916 +#: .././mainwin.py:38244 msgid "Warning: Downloading new sliced videos is usually MUCH quicker!" msgstr "" -#: .././mainwin.py:37937 .././mainwin.py:38667 +#: .././mainwin.py:38265 .././mainwin.py:38995 msgid "Create video with one slice" msgstr "" -#: .././mainwin.py:37941 .././mainwin.py:38631 +#: .././mainwin.py:38269 .././mainwin.py:38959 msgid "Download video with one slice" msgstr "" -#: .././mainwin.py:37947 .././mainwin.py:38089 .././config.py:11978 +#: .././mainwin.py:38275 .././mainwin.py:38417 .././config.py:11978 #: .././config.py:12652 .././config.py:15379 msgid "Start (timestamp or seconds)" msgstr "" -#: .././mainwin.py:37959 .././mainwin.py:38099 .././config.py:11991 +#: .././mainwin.py:38287 .././mainwin.py:38427 .././config.py:11991 #: .././config.py:12665 .././config.py:15391 msgid "Stop (optional)" msgstr "" -#: .././mainwin.py:37970 .././mainwin.py:38669 +#: .././mainwin.py:38298 .././mainwin.py:38997 msgid "Create sliced video" msgstr "" -#: .././mainwin.py:37972 .././mainwin.py:38633 +#: .././mainwin.py:38300 .././mainwin.py:38961 msgid "Download sliced video" msgstr "" -#: .././mainwin.py:37983 .././mainwin.py:38671 +#: .././mainwin.py:38311 .././mainwin.py:38999 msgid "Create video with multiple slices" msgstr "" -#: .././mainwin.py:37987 .././mainwin.py:38635 +#: .././mainwin.py:38315 .././mainwin.py:38963 msgid "Download video with multiple slices" msgstr "" -#: .././mainwin.py:38006 .././mainwin.py:38053 .././config.py:11920 +#: .././mainwin.py:38334 .././mainwin.py:38381 .././config.py:11920 #: .././config.py:11943 .././config.py:12594 .././config.py:12617 #: .././config.py:15336 .././config.py:15355 msgid "Category" msgstr "" -#: .././mainwin.py:38007 .././mainwin.py:38071 .././config.py:11920 +#: .././mainwin.py:38335 .././mainwin.py:38399 .././config.py:11920 #: .././config.py:11963 .././config.py:12594 .././config.py:12637 #: .././config.py:15336 .././config.py:15367 msgid "Action type" msgstr "" -#: .././mainwin.py:38115 .././config.py:12007 .././config.py:12681 +#: .././mainwin.py:38443 .././config.py:12007 .././config.py:12681 #: .././config.py:15406 msgid "Add slice" msgstr "" -#: .././mainwin.py:38120 .././config.py:12691 .././config.py:15418 +#: .././mainwin.py:38448 .././config.py:12691 .././config.py:15418 msgid "Delete slice" msgstr "" -#: .././mainwin.py:38125 .././config.py:12028 .././config.py:12703 +#: .././mainwin.py:38453 .././config.py:12028 .././config.py:12703 #: .././config.py:15427 msgid "SponsorBlock settings" msgstr "" -#: .././mainwin.py:38154 .././config.py:15443 +#: .././mainwin.py:38482 .././config.py:15443 msgid "Contact SponsorBlock to reset list" msgstr "" -#: .././mainwin.py:38168 .././mainwin.py:38675 +#: .././mainwin.py:38496 .././mainwin.py:39003 msgid "Create video, removing marked slices" msgstr "" -#: .././mainwin.py:38173 .././mainwin.py:38639 +#: .././mainwin.py:38501 .././mainwin.py:38967 msgid "Download video, removing marked slices" msgstr "" -#: .././mainwin.py:38183 .././mainwin.py:38679 +#: .././mainwin.py:38511 .././mainwin.py:39007 msgid "Create video, removing all slices" msgstr "" -#: .././mainwin.py:38188 .././mainwin.py:38643 +#: .././mainwin.py:38516 .././mainwin.py:38971 msgid "Download video, removing all slices" msgstr "" -#: .././mainwin.py:38793 +#: .././mainwin.py:39121 msgid "" "TRANSLATOR'S NOTE: 'Set removal time' dialogue starts here. In the Videos " "tab, right-click the 'Recent Videos' folder and select Downloads > Set " "removal time..." msgstr "" -#: .././mainwin.py:38816 +#: .././mainwin.py:39144 msgid "Set removal time" msgstr "" -#: .././mainwin.py:38839 +#: .././mainwin.py:39167 msgid "" "When videos are checked/downloaded, older videos\n" "are removed from the Recent Videos folder." msgstr "" -#: .././mainwin.py:38850 .././config.py:18461 +#: .././mainwin.py:39178 .././config.py:18461 msgid "Empty the whole folder" msgstr "" -#: .././mainwin.py:38857 +#: .././mainwin.py:39185 msgid "Remove videos after days" msgstr "" -#: .././mainwin.py:38935 +#: .././mainwin.py:39263 msgid "" "TRANSLATOR'S NOTE: 'Stale lockfile' dialogue starts here. Visible on startup " "if the Tartube database file is protected bu a lockfile" msgstr "" -#: .././mainwin.py:38957 +#: .././mainwin.py:39285 msgid "Stale lockfile" msgstr "" -#: .././mainwin.py:38994 +#: .././mainwin.py:39322 msgid "" "Failed to load the Tartube database file, because another copy of Tartube " "seems to be using it" msgstr "" -#: .././mainwin.py:39001 +#: .././mainwin.py:39329 msgid "Do you want to load it anyway?" msgstr "" -#: .././mainwin.py:39007 +#: .././mainwin.py:39335 msgid "" "(Only click 'Yes' if you are sure that other copies of Tartube are not using " "the database right now)" msgstr "" -#: .././mainwin.py:39019 +#: .././mainwin.py:39347 msgid "Yes, load the file" msgstr "" -#: .././mainwin.py:39026 +#: .././mainwin.py:39354 msgid "No, just shut down Tartube" msgstr "" -#: .././mainwin.py:39028 +#: .././mainwin.py:39356 msgid "No, don't load the file" msgstr "" -#: .././mainwin.py:39108 +#: .././mainwin.py:39436 msgid "" "TRANSLATOR'S NOTE: 'Rename container' dialogue starts here. In the Videos " "tab, right-click a channel and select Channel actions > Rename channel..." msgstr "" -#: .././mainwin.py:39129 +#: .././mainwin.py:39457 msgid "Rename channel" msgstr "" -#: .././mainwin.py:39131 +#: .././mainwin.py:39459 msgid "Rename playlist" msgstr "" -#: .././mainwin.py:39133 +#: .././mainwin.py:39461 msgid "Rename folder" msgstr "" -#: .././mainwin.py:39157 +#: .././mainwin.py:39485 msgid "Set the new name for the channel:" msgstr "" -#: .././mainwin.py:39159 +#: .././mainwin.py:39487 msgid "Set the new name for the playlist:" msgstr "" -#: .././mainwin.py:39161 +#: .././mainwin.py:39489 msgid "Set the new name for the folder:" msgstr "" -#: .././mainwin.py:39167 +#: .././mainwin.py:39495 msgid "N.B. This procedure will modify your filesystem!\n" msgstr "" -#: .././mainwin.py:39206 +#: .././mainwin.py:39534 msgid "" "TRANSLATOR'S NOTE: 'Create profile' dialogue starts here. In the main window " "menu, click Media > Reset channel//playlist names..." msgstr "" -#: .././mainwin.py:39246 +#: .././mainwin.py:39574 msgid "Reset channel/playlist names" msgstr "" -#: .././mainwin.py:39272 +#: .././mainwin.py:39600 msgid "This list is updated whenever channels/playlists are checked/downloaded" msgstr "" -#: .././mainwin.py:39280 +#: .././mainwin.py:39608 msgid "Select which names should be reset to the names on the original website" msgstr "" #. 'Reset' button #. (Signal connect appears below) -#: .././mainwin.py:39304 .././config.py:1237 .././config.py:5507 -#: .././config.py:6140 .././config.py:6294 .././config.py:25045 -#: .././config.py:26118 .././config.py:26146 .././config.py:26876 -#: .././config.py:26914 .././config.py:26989 +#: .././mainwin.py:39632 .././config.py:1237 .././config.py:5507 +#: .././config.py:6140 .././config.py:6294 .././config.py:25084 +#: .././config.py:26157 .././config.py:26185 .././config.py:26918 +#: .././config.py:26956 .././config.py:27031 msgid "Reset" msgstr "" -#: .././mainwin.py:39320 +#: .././mainwin.py:39648 msgid "Database name" msgstr "" -#: .././mainwin.py:39328 +#: .././mainwin.py:39656 msgid "Original name" msgstr "" -#: .././mainwin.py:39549 +#: .././mainwin.py:39877 msgid "" "TRANSLATOR'S NOTE: 'Add to scheduled download' dialogue starts here. In the " "Videos tab, right-click a channel and select Downloads > Add to scheduled " "download..." msgstr "" -#: .././mainwin.py:39572 +#: .././mainwin.py:39900 msgid "Add to scheduled download" msgstr "" -#: .././mainwin.py:39595 +#: .././mainwin.py:39923 msgid "Add the channel to this scheduled download:" msgstr "" -#: .././mainwin.py:39597 +#: .././mainwin.py:39925 msgid "Add the playlist to this scheduled download:" msgstr "" -#: .././mainwin.py:39599 +#: .././mainwin.py:39927 msgid "Add the folder to this scheduled download:" msgstr "" -#: .././mainwin.py:39676 +#: .././mainwin.py:40004 msgid "" "TRANSLATOR'S NOTE: 'Set download destination' dialogue starts here. In the " "Videos tab, right-click a channel and select Downloads > Set download " "destination..." msgstr "" -#: .././mainwin.py:39707 +#: .././mainwin.py:40035 msgid "Set download destination" msgstr "" -#: .././mainwin.py:39753 +#: .././mainwin.py:40081 msgid "This channel normally downloads videos into its own folder" msgstr "" -#: .././mainwin.py:39758 +#: .././mainwin.py:40086 msgid "This playlist normally downloads videos into its own folder" msgstr "" -#: .././mainwin.py:39763 +#: .././mainwin.py:40091 msgid "This folder normally downloads videos into itself" msgstr "" -#: .././mainwin.py:39769 +#: .././mainwin.py:40097 msgid "This channel normally downloads videos into its own directory" msgstr "" -#: .././mainwin.py:39774 +#: .././mainwin.py:40102 msgid "This playlist normally downloads videos into its own directory" msgstr "" -#: .././mainwin.py:39779 +#: .././mainwin.py:40107 msgid "This folder normally downloads videos into its own directory" msgstr "" -#: .././mainwin.py:39789 +#: .././mainwin.py:40117 msgid "Use this location" msgstr "" -#: .././mainwin.py:39797 +#: .././mainwin.py:40125 msgid "Choose a different location if:" msgstr "" -#: .././mainwin.py:39800 +#: .././mainwin.py:40128 msgid "" "You want to add a channel and its playlists, without downloading the same " "video twice" msgstr "" -#: .././mainwin.py:39806 +#: .././mainwin.py:40134 msgid "" "A video creator has channels on both YouTube and BitChute, and you want to " "add both without downloading the same video twice" msgstr "" -#: .././mainwin.py:39904 +#: .././mainwin.py:40232 msgid "" "Using an external folder is not recommended, in general. Choose an external " "folder if:" msgstr "" -#: .././mainwin.py:39909 +#: .././mainwin.py:40237 msgid "" "Using an external directory is not recommended, in general. Choose an " "external directory if:" msgstr "" -#: .././mainwin.py:39915 +#: .././mainwin.py:40243 msgid "" "You want a different application to process the downloaded videos (other " "applications should not modify Tartube's main data folder)" msgstr "" -#: .././mainwin.py:39921 +#: .././mainwin.py:40249 msgid "" "You want a different application to process the downloaded videos (other " "applications should not modify Tartube's main data directory)" msgstr "" #. (Signal connect appears below) -#: .././mainwin.py:39938 .././config.py:5836 .././config.py:6136 +#: .././mainwin.py:40266 .././config.py:5836 .././config.py:6136 #: .././config.py:6290 .././config.py:8511 .././config.py:8532 -#: .././config.py:8553 .././config.py:25041 .././config.py:26751 -#: .././config.py:26872 .././config.py:26910 .././config.py:26985 +#: .././config.py:8553 .././config.py:25080 .././config.py:26791 +#: .././config.py:26914 .././config.py:26952 .././config.py:27027 msgid "Set" msgstr "" -#: .././mainwin.py:40022 +#: .././mainwin.py:40350 msgid "Select an external folder" msgstr "" -#: .././mainwin.py:40024 +#: .././mainwin.py:40352 msgid "Select an external directory" msgstr "" -#: .././mainwin.py:40044 +#: .././mainwin.py:40372 msgid "An external folder must not be inside Tartube's own data folder" msgstr "" -#: .././mainwin.py:40050 +#: .././mainwin.py:40378 msgid "An external directory must not be inside Tartube's own data directory" msgstr "" -#: .././mainwin.py:40234 +#: .././mainwin.py:40562 msgid "" "TRANSLATOR'S NOTE: 'Set nickname' dialogue starts here. In the Videos tab, " "right-click a channel and select Channel actions > Set nickname..." msgstr "" -#: .././mainwin.py:40255 +#: .././mainwin.py:40583 msgid "Set nickname" msgstr "" -#: .././mainwin.py:40280 +#: .././mainwin.py:40608 #, python-brace-format msgid "" "Set a nickname for the channel '{0}' (or leave it blank to reset the " "nickname)" msgstr "" -#: .././mainwin.py:40285 +#: .././mainwin.py:40613 #, python-brace-format msgid "" "Set a nickname for the playlist '{0}' (or leave it blank to reset the " "nickname)" msgstr "" -#: .././mainwin.py:40290 +#: .././mainwin.py:40618 #, python-brace-format msgid "" "Set a nickname for the folder '{0}' (or leave it blank to reset the nickname)" msgstr "" -#: .././mainwin.py:40338 +#: .././mainwin.py:40666 msgid "" "TRANSLATOR'S NOTE: 'Set URL' dialogue starts here. In the Videos tab, right-" "click a channel and select Channel actions > Set URL..." msgstr "" -#: .././mainwin.py:40359 +#: .././mainwin.py:40687 msgid "Set URL" msgstr "" -#: .././mainwin.py:40384 +#: .././mainwin.py:40712 #, python-brace-format msgid "Update the URL for the channel '{0}'" msgstr "" -#: .././mainwin.py:40388 +#: .././mainwin.py:40716 #, python-brace-format msgid "Update the URL for the playlist '{0}'" msgstr "" -#: .././mainwin.py:40437 +#: .././mainwin.py:40765 msgid "" "TRANSLATOR'S NOTE: 'Show system command' dialogue starts here. In the Videos " "tab, right-click a channel and select Downloads > Show system command..." msgstr "" -#: .././mainwin.py:40458 +#: .././mainwin.py:40786 msgid "Show system command" msgstr "" -#: .././mainwin.py:40512 +#: .././mainwin.py:40840 msgid "Copy to clipboard" msgstr "" -#: .././mainwin.py:40664 +#: .././mainwin.py:40992 msgid "" "TRANSLATOR'S NOTE: 'Test youtube-dl' dialogue starts here. In the main " "window menu, click Operations > Test youtube-dl" msgstr "" -#: .././mainwin.py:40685 .././config.py:25519 +#: .././mainwin.py:41013 .././config.py:25558 msgid "Test" msgstr "" -#: .././mainwin.py:40705 +#: .././mainwin.py:41033 msgid "URL of the video to download (optional)" msgstr "" -#: .././mainwin.py:40716 +#: .././mainwin.py:41044 msgid "Command line options (optional)" msgstr "" -#: .././mainwin.py:40771 +#: .././mainwin.py:41099 msgid "" "TRANSLATOR'S NOTE: 'Tidy up' dialogue starts here. In the main window menu, " "click Operations > Tidy up files..." msgstr "" -#: .././mainwin.py:40806 +#: .././mainwin.py:41134 msgid "Tidy up files" msgstr "" -#: .././mainwin.py:40808 +#: .././mainwin.py:41136 msgid "Tidy up channel" msgstr "" -#: .././mainwin.py:40810 +#: .././mainwin.py:41138 msgid "Tidy up playlist" msgstr "" -#: .././mainwin.py:40812 +#: .././mainwin.py:41140 msgid "Tidy up folder" msgstr "" -#: .././mainwin.py:40841 +#: .././mainwin.py:41169 msgid "Check that videos are not corrupted" msgstr "" -#: .././mainwin.py:40846 +#: .././mainwin.py:41174 msgid "Delete corrupted video files" msgstr "" -#: .././mainwin.py:40856 +#: .././mainwin.py:41184 msgid "Check that videos do/don't exist" msgstr "" -#: .././mainwin.py:40863 +#: .././mainwin.py:41191 msgid "" "Delete downloaded video files (doesn't remove videos from Tartube's database)" msgstr "" -#: .././mainwin.py:40875 +#: .././mainwin.py:41203 msgid "Also delete all video/audio files with the same name" msgstr "" -#: .././mainwin.py:40883 +#: .././mainwin.py:41211 msgid "Remove no-URL videos from database" msgstr "" -#: .././mainwin.py:40887 +#: .././mainwin.py:41215 msgid "Remove duplicate videos from database" msgstr "" -#: .././mainwin.py:40892 +#: .././mainwin.py:41220 msgid "Delete all archive files" msgstr "" -#: .././mainwin.py:40896 +#: .././mainwin.py:41224 msgid "Move thumbnails into own folder" msgstr "" -#: .././mainwin.py:40901 +#: .././mainwin.py:41229 msgid "Delete all thumbnail files" msgstr "" -#: .././mainwin.py:40906 +#: .././mainwin.py:41234 msgid "Delete all .webp thumbnails" msgstr "" -#: .././mainwin.py:40913 +#: .././mainwin.py:41241 msgid "Convert .webp thumbnails to .jpg using FFmpeg" msgstr "" -#: .././mainwin.py:40922 +#: .././mainwin.py:41250 msgid "Move other metadata files into own folder" msgstr "" -#: .././mainwin.py:40930 +#: .././mainwin.py:41258 msgid "Delete all description files" msgstr "" -#: .././mainwin.py:40934 +#: .././mainwin.py:41262 msgid "Delete all metadata (JSON) files" msgstr "" -#: .././mainwin.py:40938 +#: .././mainwin.py:41266 msgid "Delete all annotation files" msgstr "" -#: .././mainwin.py:40945 +#: .././mainwin.py:41273 msgid "EXPERIMENTAL: convert '.unknown_video' file extensions to .mp4" msgstr "" @@ -5378,7 +5409,7 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Custom downloads > Mirrors" msgstr "" -#: .././config.py:3609 .././config.py:26092 +#: .././config.py:3609 .././config.py:26131 msgid "_Mirrors" msgstr "" @@ -5402,7 +5433,7 @@ msgstr "" msgid "Obtain the video from this YouTube front-end:" msgstr "" -#: .././config.py:3664 .././config.py:26124 +#: .././config.py:3664 .././config.py:26163 msgid "Type the exact text that replaces www.youtube.com e.g." msgstr "" @@ -5520,7 +5551,7 @@ msgid "TRANSLATOR'S NOTE: Download options > Downloads" msgstr "" #. Add this tab... -#: .././config.py:4877 .././config.py:4888 .././config.py:24357 +#: .././config.py:4877 .././config.py:4888 .././config.py:24396 msgid "_Downloads" msgstr "" @@ -5890,8 +5921,8 @@ msgid "Number of comments" msgstr "" #: .././config.py:5554 .././config.py:5698 .././config.py:5845 -#: .././config.py:18999 .././config.py:19502 .././config.py:23704 -#: .././config.py:24806 .././config.py:27133 .././config.py:27414 +#: .././config.py:18999 .././config.py:19502 .././config.py:23743 +#: .././config.py:24845 .././config.py:27175 .././config.py:27456 msgid "Add" msgstr "" @@ -5923,13 +5954,13 @@ msgstr "" msgid "Output template" msgstr "" -#: .././config.py:5709 .././config.py:5856 .././config.py:23740 -#: .././config.py:24864 .././config.py:27191 .././config.py:27472 +#: .././config.py:5709 .././config.py:5856 .././config.py:23779 +#: .././config.py:24903 .././config.py:27233 .././config.py:27514 msgid "Delete" msgstr "" #: .././config.py:5718 .././config.py:5865 .././config.py:22086 -#: .././config.py:24880 .././config.py:27209 .././config.py:27488 +#: .././config.py:24919 .././config.py:27251 .././config.py:27530 msgid "Refresh list" msgstr "" @@ -6345,7 +6376,7 @@ msgstr "" #. Add this tab... #: .././config.py:7248 .././config.py:14646 .././config.py:17086 #: .././config.py:18135 .././config.py:18783 .././config.py:20578 -#: .././config.py:27586 +#: .././config.py:27628 msgid "_General" msgstr "" @@ -7528,7 +7559,7 @@ msgstr "" msgid "When the livestream starts, begin downloading it immediately" msgstr "" -#: .././config.py:15031 .././config.py:25554 +#: .././config.py:15031 .././config.py:25593 msgid "When a livestream stops, download it (overwriting any earlier file)" msgstr "" @@ -7560,7 +7591,7 @@ msgstr "" msgid "_Timestamps" msgstr "" -#: .././config.py:15125 .././config.py:25649 +#: .././config.py:15125 .././config.py:25688 msgid "Timestamps" msgstr "" @@ -8040,7 +8071,7 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Scheduled downloads > General" msgstr "" -#: .././config.py:18793 .././config.py:23691 +#: .././config.py:18793 .././config.py:23730 msgid "Scheduled download name" msgstr "" @@ -8068,7 +8099,7 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Scheduled downloads > Start" msgstr "" -#: .././config.py:18885 .././config.py:23632 +#: .././config.py:18885 .././config.py:23671 msgid "_Start" msgstr "" @@ -8076,7 +8107,7 @@ msgstr "" msgid "Start conditions" msgstr "" -#: .././config.py:18895 .././config.py:23657 +#: .././config.py:18895 .././config.py:23696 msgid "Start mode" msgstr "" @@ -8116,7 +8147,7 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Scheduled downloads > Stop" msgstr "" -#: .././config.py:19163 .././config.py:24278 +#: .././config.py:19163 .././config.py:24317 msgid "_Stop" msgstr "" @@ -8141,7 +8172,7 @@ msgstr "" msgid "Stop download operation after this much disk space" msgstr "" -#: .././config.py:19307 .././config.py:23968 +#: .././config.py:19307 .././config.py:24007 msgid "" "N.B. Disk space is estimated. This setting does not apply to simulated " "downloads" @@ -8208,15 +8239,15 @@ msgstr "" msgid "TRANSLATOR'S NOTE: Scheduled downloads > Limits" msgstr "" -#: .././config.py:19567 .././config.py:24031 +#: .././config.py:19567 .././config.py:24070 msgid "_Limits" msgstr "" -#: .././config.py:19572 .././config.py:24038 +#: .././config.py:19572 .././config.py:24077 msgid "Performance limits" msgstr "" -#: .././config.py:19577 .././config.py:24043 +#: .././config.py:19577 .././config.py:24082 msgid "Limits are applied when you start downloading a video/channel/playlist" msgstr "" @@ -8225,11 +8256,11 @@ msgid "" "These limits override the default and alternative limits specified elsewhere" msgstr "" -#: .././config.py:19589 .././config.py:24049 .././config.py:24120 +#: .././config.py:19589 .././config.py:24088 .././config.py:24159 msgid "Limit simultaneous downloads to" msgstr "" -#: .././config.py:19604 .././config.py:24067 .././config.py:24142 +#: .././config.py:19604 .././config.py:24106 .././config.py:24181 msgid "Limit download speed to" msgstr "" @@ -8611,7 +8642,7 @@ msgstr "" msgid "Automatically delete downloaded videos" msgstr "" -#: .././config.py:21631 .././config.py:21655 .././formats.py:452 +#: .././config.py:21631 .././config.py:21655 .././formats.py:453 msgid "days" msgstr "" @@ -8687,7 +8718,7 @@ msgstr "" msgid "Remove timestamps from all videos" msgstr "" -#: .././config.py:21886 .././config.py:26016 +#: .././config.py:21886 .././config.py:26055 msgid "Video comments" msgstr "" @@ -9025,7 +9056,7 @@ msgid "D_ialogues" msgstr "" #: .././config.py:23128 -msgid "Dialogue window preferences" +msgid "Add media preferences" msgstr "" #: .././config.py:23133 @@ -9041,1468 +9072,1485 @@ msgid "When adding YouTube channels, remind the user to copy the correct URL" msgstr "" #: .././config.py:23176 -msgid "Debugging preferences" +msgid "Move media preferences" msgstr "" #: .././config.py:23182 msgid "" +"Prompt the user before moving channels/playlists/folders in the Video Index" +msgstr "" + +#: .././config.py:23193 +msgid "Prompt the user before moving videos in the Video Index" +msgstr "" + +#: .././config.py:23203 +msgid "After moving, switch to the destination in the Video Catalogue" +msgstr "" + +#: .././config.py:23215 +msgid "Debugging preferences" +msgstr "" + +#: .././config.py:23221 +msgid "" "Temporarily disable message dialogue windows (display messages in terminal " "instead)" msgstr "" -#: .././config.py:23194 +#: .././config.py:23233 msgid "" "N.B. Tartube shows a dialogue window after checking or downloading videos" msgstr "" -#: .././config.py:23202 +#: .././config.py:23241 msgid "That dialogue window can be disabled in the Operations > Actions tab" msgstr "" -#: .././config.py:23222 +#: .././config.py:23261 msgid "TRANSLATOR'S NOTE: System preferences > Windows > Colours" msgstr "" -#: .././config.py:23226 +#: .././config.py:23265 msgid "_Colours" msgstr "" -#: .././config.py:23233 +#: .././config.py:23272 msgid "Video catalogue colour preferences" msgstr "" -#: .././config.py:23241 +#: .././config.py:23280 msgid "Waiting livestreams" msgstr "" -#: .././config.py:23247 +#: .././config.py:23286 msgid "Broadcasting livestreams" msgstr "" -#: .././config.py:23253 +#: .././config.py:23292 msgid "Waiting debut videos" msgstr "" -#: .././config.py:23259 +#: .././config.py:23298 msgid "Broadcasting debut videos" msgstr "" -#: .././config.py:23265 +#: .././config.py:23304 msgid "Selected videos" msgstr "" -#: .././config.py:23271 +#: .././config.py:23310 msgid "Selected waiting videos" msgstr "" -#: .././config.py:23277 +#: .././config.py:23316 msgid "Selected broadcasting videos" msgstr "" -#: .././config.py:23283 +#: .././config.py:23322 msgid "Drag and Drop notification" msgstr "" -#: .././config.py:23289 +#: .././config.py:23328 msgid "Drag and Drop background 1" msgstr "" -#: .././config.py:23295 +#: .././config.py:23334 msgid "Drag and Drop background 2" msgstr "" -#: .././config.py:23326 +#: .././config.py:23365 msgid "Custom colour:" msgstr "" -#: .././config.py:23349 +#: .././config.py:23388 msgid "Default colour:" msgstr "" -#: .././config.py:23386 +#: .././config.py:23425 msgid "TRANSLATOR'S NOTE: System preferences > Windows > Errors/Warnings" msgstr "" -#: .././config.py:23391 +#: .././config.py:23430 msgid "_Errors/Warnings" msgstr "" -#: .././config.py:23397 +#: .././config.py:23436 msgid "Errors/Warnings tab preferences" msgstr "" -#: .././config.py:23497 +#: .././config.py:23536 msgid "TRANSLATOR'S NOTE: System preferences > Windows > Websites" msgstr "" -#: .././config.py:23501 +#: .././config.py:23540 msgid "_Websites" msgstr "" -#: .././config.py:23508 +#: .././config.py:23547 msgid "YouTube error/warning preferences" msgstr "" -#: .././config.py:23513 +#: .././config.py:23552 msgid "Ignore YouTube copyright errors" msgstr "" -#: .././config.py:23521 +#: .././config.py:23560 msgid "Ignore YouTube age-restriction errors" msgstr "" -#: .././config.py:23529 +#: .././config.py:23568 msgid "Ignore YouTube deletion by uploader errors" msgstr "" -#: .././config.py:23537 +#: .././config.py:23576 msgid "Ignore YouTube payment errors" msgstr "" -#: .././config.py:23546 .././config.py:27591 +#: .././config.py:23585 .././config.py:27633 msgid "General preferences" msgstr "" -#: .././config.py:23552 +#: .././config.py:23591 msgid "" "Ignore any errors/warnings which match lines in this list (applies to all " "websites)" msgstr "" -#: .././config.py:23566 +#: .././config.py:23605 msgid "These are ordinary strings" msgstr "" -#: .././config.py:23573 +#: .././config.py:23612 msgid "These are regular expressions (regexes)" msgstr "" -#: .././config.py:23602 +#: .././config.py:23641 msgid "TRANSLATOR'S NOTE: System preferences > Scheduling" msgstr "" #. Add this tab... -#: .././config.py:23606 +#: .././config.py:23645 msgid "_Scheduling" msgstr "" -#: .././config.py:23629 +#: .././config.py:23668 msgid "TRANSLATOR'S NOTE: System preferences > Scheduling > Start" msgstr "" -#: .././config.py:23637 +#: .././config.py:23676 msgid "Scheduled download preferences" msgstr "" -#: .././config.py:23658 +#: .././config.py:23697 msgid "Priority" msgstr "" -#: .././config.py:23658 +#: .././config.py:23697 msgid "Whole" msgstr "" -#: .././config.py:23658 +#: .././config.py:23697 msgid "Shutdown" msgstr "" -#: .././config.py:23658 +#: .././config.py:23697 msgid "D/L All" msgstr "" -#: .././config.py:23659 +#: .././config.py:23698 msgid "Join mode" msgstr "" -#: .././config.py:23713 .././config.py:24828 .././config.py:27155 -#: .././config.py:27436 +#: .././config.py:23752 .././config.py:24867 .././config.py:27197 +#: .././config.py:27478 msgid "Edit" msgstr "" -#: .././config.py:23785 .././formats.py:1230 +#: .././config.py:23824 .././formats.py:1237 msgid "Custom" msgstr "" -#: .././config.py:23829 +#: .././config.py:23868 msgid "TRANSLATOR'S NOTE: System preferences > Scheduling > Stop" msgstr "" -#: .././config.py:23832 +#: .././config.py:23871 msgid "S_top" msgstr "" -#: .././config.py:23837 +#: .././config.py:23876 msgid "Scheduled stop preferences" msgstr "" -#: .././config.py:23843 +#: .././config.py:23882 msgid "" "N.B. Each scheduled download also has its own 'stop' settings which override " "these settings" msgstr "" -#: .././config.py:23850 +#: .././config.py:23889 msgid "Stop all download operations after this much time" msgstr "" -#: .././config.py:23898 +#: .././config.py:23937 msgid "Stop all download operations after this many videos" msgstr "" -#: .././config.py:23925 +#: .././config.py:23964 msgid "Stop all download operations after this much disk space" msgstr "" -#: .././config.py:23983 +#: .././config.py:24022 msgid "TRANSLATOR'S NOTE: System preferences > Operations" msgstr "" -#: .././config.py:24027 +#: .././config.py:24066 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Limits" msgstr "" -#: .././config.py:24093 +#: .././config.py:24132 msgid "Overriding video format options, limit video resolution to" msgstr "" -#: .././config.py:24115 +#: .././config.py:24154 msgid "Alternative performance limits" msgstr "" -#: .././config.py:24173 +#: .././config.py:24212 msgid "Alternative limits apply between" msgstr "" -#: .././config.py:24213 +#: .././config.py:24252 msgid "and" msgstr "" -#: .././config.py:24241 +#: .././config.py:24280 msgid "On days" msgstr "" -#: .././config.py:24274 +#: .././config.py:24313 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Stop" msgstr "" -#: .././config.py:24285 +#: .././config.py:24324 msgid "Time-saving settings" msgstr "" -#: .././config.py:24291 +#: .././config.py:24330 msgid "" "Stop checking/downloading a channel/playlist when it finds videos you " "already have" msgstr "" -#: .././config.py:24302 +#: .././config.py:24341 msgid "Stop after this many videos (when checking)" msgstr "" -#: .././config.py:24317 +#: .././config.py:24356 msgid "Stop after this many videos (when downloading)" msgstr "" -#: .././config.py:24353 +#: .././config.py:24392 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Downloads" msgstr "" -#: .././config.py:24364 +#: .././config.py:24403 msgid "Download operation preferences" msgstr "" -#: .././config.py:24370 +#: .././config.py:24409 msgid "Automatically update downloader before every download operation" msgstr "" -#: .././config.py:24382 +#: .././config.py:24421 msgid "Automatically save files at the end of all operations" msgstr "" -#: .././config.py:24394 +#: .././config.py:24433 msgid "For simulated downloads, don't check a video in a folder more than once" msgstr "" -#: .././config.py:24408 +#: .././config.py:24447 msgid "If a download stalls, restart it after this many minutes" msgstr "" -#: .././config.py:24430 +#: .././config.py:24469 msgid "Maximum restarts after a stalled download (0 for no maximum)" msgstr "" -#: .././config.py:24463 +#: .././config.py:24502 msgid "Apply a timeout (in minutes) when checking a video" msgstr "" -#: .././config.py:24475 +#: .././config.py:24514 msgid "Without comments" msgstr "" -#: .././config.py:24491 +#: .././config.py:24530 msgid "With comments" msgstr "" -#: .././config.py:24524 +#: .././config.py:24563 msgid "Assign anonymous error/warning messages to the most probable video" msgstr "" -#: .././config.py:24535 +#: .././config.py:24574 msgid "Add censored, age-restricted and other blocked videos to the database" msgstr "" -#: .././config.py:24548 +#: .././config.py:24587 msgid "" "Extract playlist IDs from each video, and store them in the parent channel/" "playlist" msgstr "" -#: .././config.py:24559 +#: .././config.py:24598 msgid "" "Convert .webp thumbnails into .jpg thumbnails (using FFmpeg) after " "downloading them" msgstr "" -#: .././config.py:24570 +#: .././config.py:24609 msgid "" "...but don't delete the original thumbnails (enable before embedding " "thumbnails in videos)" msgstr "" -#: .././config.py:24605 +#: .././config.py:24644 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Ignore" msgstr "" -#: .././config.py:24609 +#: .././config.py:24648 msgid "_Ignore" msgstr "" -#: .././config.py:24616 +#: .././config.py:24655 msgid "Ignore downloader errors/warnings" msgstr "" -#: .././config.py:24621 +#: .././config.py:24660 msgid "TRANSLATOR'S NOTE: These error messages are always in English" msgstr "" -#: .././config.py:24625 +#: .././config.py:24664 msgid "Ignore 'Child process exited with non-zero code' errors" msgstr "" -#: .././config.py:24634 +#: .././config.py:24673 msgid "" "Ignore 'Unable to download video data' and 'Unable to extract video data' " "errors" msgstr "" -#: .././config.py:24644 +#: .././config.py:24683 msgid "Ignore 'Did not get any data blocks' errors" msgstr "" -#: .././config.py:24653 +#: .././config.py:24692 msgid "Ignore 'Requested formats are incompatible for merge' warnings" msgstr "" -#: .././config.py:24662 +#: .././config.py:24701 msgid "Ignore 'No video formats found' errors" msgstr "" -#: .././config.py:24670 +#: .././config.py:24709 msgid "Ignore 'There are no annotations to write' warnings" msgstr "" -#: .././config.py:24678 +#: .././config.py:24717 msgid "Ignore 'Video doesn't have subtitles' warnings" msgstr "" -#: .././config.py:24686 +#: .././config.py:24725 msgid "Ignore 'A channel/user page was given' warnings" msgstr "" -#: .././config.py:24694 +#: .././config.py:24733 msgid "Ignore 'There's no playlist description to write' warnings" msgstr "" -#: .././config.py:24703 +#: .././config.py:24742 msgid "" "Ignore 'Unable to download video thumbnail: HTTP Error 404: Not Found' " "warnings" msgstr "" -#: .././config.py:24714 +#: .././config.py:24753 msgid "Ignore 'The channel is not currently live' warnings on Twitch" msgstr "" -#: .././config.py:24736 +#: .././config.py:24775 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Custom" msgstr "" -#: .././config.py:24739 +#: .././config.py:24778 msgid "_Custom" msgstr "" -#: .././config.py:24744 +#: .././config.py:24783 msgid "Custom downloads" msgstr "" -#: .././config.py:24765 .././config.py:27090 +#: .././config.py:24804 .././config.py:27132 msgid "Classic Mode" msgstr "" -#: .././config.py:24837 .././config.py:27164 .././config.py:27445 +#: .././config.py:24876 .././config.py:27206 .././config.py:27487 msgid "Export" msgstr "" -#: .././config.py:24846 .././config.py:27173 .././config.py:27454 +#: .././config.py:24885 .././config.py:27215 .././config.py:27496 msgid "Clone" msgstr "" -#: .././config.py:24855 .././config.py:27182 +#: .././config.py:24894 .././config.py:27224 msgid "Use in Classic Mode tab" msgstr "" -#: .././config.py:24958 +#: .././config.py:24997 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Archive" msgstr "" -#: .././config.py:24962 +#: .././config.py:25001 msgid "_Archive" msgstr "" -#: .././config.py:24970 +#: .././config.py:25009 msgid "Archive file preferences" msgstr "" -#: .././config.py:24976 +#: .././config.py:25015 msgid "" "Allow downloader to create its own archive file (so deleted videos are not " "re-downloaded)" msgstr "" -#: .././config.py:24995 +#: .././config.py:25034 msgid "Store the archive file in the same location as the video" msgstr "" -#: .././config.py:25003 +#: .././config.py:25042 msgid "" "N.B. Archive files are never stored in system folders like 'Unsorted Videos'" msgstr "" -#: .././config.py:25012 +#: .././config.py:25051 msgid "Store the archive file in Tartube's data directory" msgstr "" -#: .././config.py:25023 +#: .././config.py:25062 msgid "Store the archive file at this location:" msgstr "" -#: .././config.py:25051 +#: .././config.py:25090 msgid "" "Update the archive file when videos are moved into a database folder " "(YouTube only)" msgstr "" -#: .././config.py:25115 +#: .././config.py:25154 msgid "Classic Mode tab preferences" msgstr "" -#: .././config.py:25121 +#: .././config.py:25160 msgid "Create an archive file when downloading from the Classic Mode tab" msgstr "" -#: .././config.py:25132 +#: .././config.py:25171 msgid "" "This setting should only be enabled when downloading channels and playlists" msgstr "" -#: .././config.py:25152 +#: .././config.py:25191 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Livestreams" msgstr "" -#: .././config.py:25156 +#: .././config.py:25195 msgid "Li_vestreams" msgstr "" -#: .././config.py:25164 +#: .././config.py:25203 msgid "Livestream preferences (compatible websites only)" msgstr "" -#: .././config.py:25170 +#: .././config.py:25209 msgid "Do not check/download any livestream [yt-dlp only]" msgstr "" -#: .././config.py:25181 +#: .././config.py:25220 msgid "Detect livestreams announced within this many days" msgstr "" -#: .././config.py:25196 +#: .././config.py:25235 msgid "How often to check the status of livestreams (in minutes)" msgstr "" -#: .././config.py:25215 +#: .././config.py:25254 msgid "Check more frequently when a livestream is due to start" msgstr "" -#: .././config.py:25258 +#: .././config.py:25297 msgid "Broadcasting livestream preferences (compatible websites only)" msgstr "" -#: .././config.py:25266 +#: .././config.py:25305 msgid "" "These settings apply when downloading videos individually, for example with " "a custom download" msgstr "" -#: .././config.py:25277 +#: .././config.py:25316 msgid "Download using:" msgstr "" -#: .././config.py:25292 +#: .././config.py:25331 msgid ".m3u manifest" msgstr "" -#: .././config.py:25339 +#: .././config.py:25378 msgid "Replace a partially-downloaded livestream" msgstr "" -#: .././config.py:25346 +#: .././config.py:25385 msgid "Resume a partially-downloaded livestream" msgstr "" -#: .././config.py:25365 +#: .././config.py:25404 msgid "" "Bypass usual limits on simultaneous downloads, so that all livestreams can " "be downloaded" msgstr "" -#: .././config.py:25378 +#: .././config.py:25417 msgid "Timeout after this many minutes of inactivity" msgstr "" -#: .././config.py:25394 +#: .././config.py:25433 msgid "" "When the livestream download is stopped manually, mark the video as " "downloaded" msgstr "" -#: .././config.py:25408 +#: .././config.py:25447 msgid "" "Check a video before the livestream download (ensures metadata is downloaded)" msgstr "" -#: .././config.py:25422 +#: .././config.py:25461 msgid "N.B. This setting is ignored in the Classic Mode tab" msgstr "" -#: .././config.py:25439 +#: .././config.py:25478 msgid "not recommended" msgstr "" -#: .././config.py:25456 +#: .././config.py:25495 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Actions" msgstr "" -#: .././config.py:25460 +#: .././config.py:25499 msgid "Ac_tions" msgstr "" -#: .././config.py:25468 +#: .././config.py:25507 msgid "Livestream actions (can be toggled for individual videos)" msgstr "" -#: .././config.py:25475 +#: .././config.py:25514 msgid "(currently disabled on MS Windows)" msgstr "" -#: .././config.py:25480 +#: .././config.py:25519 msgid "When a livestream starts, show a desktop notification" msgstr "" -#: .././config.py:25494 +#: .././config.py:25533 msgid "When a livestream starts, sound an alarm" msgstr "" -#: .././config.py:25521 +#: .././config.py:25560 msgid "Plays the selected sound effect" msgstr "" -#: .././config.py:25530 +#: .././config.py:25569 msgid "When a livestream starts, open it in the system's web browser" msgstr "" -#: .././config.py:25542 +#: .././config.py:25581 msgid "When a livestream starts, begin downloading it immediately" msgstr "" -#: .././config.py:25570 +#: .././config.py:25609 msgid "Desktop notification preferences" msgstr "" -#: .././config.py:25576 +#: .././config.py:25615 msgid "Show a dialogue window at the end of an operation" msgstr "" -#: .././config.py:25600 +#: .././config.py:25639 msgid "Don't notify the user at the end of an operation" msgstr "" -#: .././config.py:25638 +#: .././config.py:25677 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Clips" msgstr "" -#: .././config.py:25642 +#: .././config.py:25681 msgid "Cli_ps" msgstr "" -#: .././config.py:25655 +#: .././config.py:25694 msgid "" "When a video is checked/downloaded, automatically extract timestamps from " "its metadata file" msgstr "" -#: .././config.py:25666 +#: .././config.py:25705 msgid "" "When a video is checked/downloaded, automatically extract timestamps from " "its description" msgstr "" -#: .././config.py:25678 +#: .././config.py:25717 msgid "If timestamps have already been extracted, replace them" msgstr "" -#: .././config.py:25690 +#: .././config.py:25729 msgid "" "If no timestamps have been extracted, try again before splitting a video" msgstr "" -#: .././config.py:25704 +#: .././config.py:25743 msgid "Video clips (requires FFmpeg or yt-dlp)" msgstr "" -#: .././config.py:25714 +#: .././config.py:25753 msgid "Download video clips using FFmpeg" msgstr "" -#: .././config.py:25721 +#: .././config.py:25760 msgid "Download video clips using yt-dlp" msgstr "" -#: .././config.py:25734 +#: .././config.py:25773 msgid "Format of video clip filenames" msgstr "" -#: .././config.py:25739 +#: .././config.py:25778 msgid "Number" msgstr "" -#: .././config.py:25740 +#: .././config.py:25779 msgid "Clip Title" msgstr "" -#: .././config.py:25741 +#: .././config.py:25780 msgid "Number + Clip Title" msgstr "" -#: .././config.py:25742 +#: .././config.py:25781 msgid "Clip Title + Number" msgstr "" -#: .././config.py:25743 +#: .././config.py:25782 msgid "Original Title" msgstr "" -#: .././config.py:25744 +#: .././config.py:25783 msgid "Original Title + Number" msgstr "" -#: .././config.py:25745 +#: .././config.py:25784 msgid "Original Title + Clip Title" msgstr "" -#: .././config.py:25746 +#: .././config.py:25785 msgid "Original Title + Number + Clip Title" msgstr "" -#: .././config.py:25747 +#: .././config.py:25786 msgid "Original Title + Clip Title + Number" msgstr "" -#: .././config.py:25774 +#: .././config.py:25813 msgid "Generic title for video clips" msgstr "" -#: .././config.py:25791 +#: .././config.py:25830 msgid "Move clips to the Video Clips folder" msgstr "" -#: .././config.py:25798 +#: .././config.py:25837 msgid "Keep clips with their original video" msgstr "" -#: .././config.py:25811 +#: .././config.py:25850 msgid "...but place new files inside a sub-directory" msgstr "" -#: .././config.py:25822 +#: .././config.py:25861 msgid "Add new files to Tartube's database" msgstr "" -#: .././config.py:25833 +#: .././config.py:25872 msgid "Use the original video's thumbnail" msgstr "" -#: .././config.py:25844 .././config.py:25965 +#: .././config.py:25883 .././config.py:26004 msgid "" "Force keyframes at cuts (slower, but fewer video artefacts before and after " "each cut)" msgstr "" -#: .././config.py:25857 +#: .././config.py:25896 msgid "After splitting a video, open the destination folder" msgstr "" -#: .././config.py:25859 +#: .././config.py:25898 msgid "After splitting a video, open the destination directory" msgstr "" -#: .././config.py:25871 +#: .././config.py:25910 msgid "" "After splitting a video, delete the original (ignored for videos in channels/" "playlists)" msgstr "" -#: .././config.py:25894 +#: .././config.py:25933 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Slices" msgstr "" -#: .././config.py:25898 +#: .././config.py:25937 msgid "Slic_es" msgstr "" -#: .././config.py:25905 +#: .././config.py:25944 msgid "Video slices (requires FFmpeg)" msgstr "" -#: .././config.py:25911 +#: .././config.py:25950 msgid "" "While checking/downloading videos, check each video against the SponsorBlock " "server" msgstr "" -#: .././config.py:25922 +#: .././config.py:25961 msgid "When contacting the server, obfuscate each video's ID (recommended)" msgstr "" -#: .././config.py:25938 +#: .././config.py:25977 msgid "If slices have already been extracted, replace the old list" msgstr "" -#: .././config.py:25951 +#: .././config.py:25990 msgid "" "If slices have been extracted, contact the server again before removing more " "slices from the video" msgstr "" -#: .././config.py:25979 +#: .././config.py:26018 msgid "" "After removing slices from a video, reset all timestamp and slice data " "(recommended)" msgstr "" -#: .././config.py:26005 +#: .././config.py:26044 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Comments" msgstr "" -#: .././config.py:26009 +#: .././config.py:26048 msgid "C_omments" msgstr "" -#: .././config.py:26021 +#: .././config.py:26060 msgid "When checking videos, store comments in the metadata file" msgstr "" -#: .././config.py:26029 +#: .././config.py:26068 msgid "When downloading videos, store comments in the metadata file" msgstr "" -#: .././config.py:26037 +#: .././config.py:26076 msgid "" "Warning: fetching comments will increase the download time, perhaps by a lot!" msgstr "" -#: .././config.py:26043 +#: .././config.py:26082 msgid "Also store comments in the Tartube database" msgstr "" -#: .././config.py:26068 +#: .././config.py:26107 msgid "" "Warning: storing comments will increase the size of Tartube's datbase, " "perhaps by a lot!" msgstr "" -#: .././config.py:26088 +#: .././config.py:26127 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Mirrors" msgstr "" -#: .././config.py:26099 +#: .././config.py:26138 msgid "Invidious mirror" msgstr "" -#: .././config.py:26105 +#: .././config.py:26144 msgid "To find an updated list of Invidious mirrors, use any search engine!" msgstr "" -#: .././config.py:26120 +#: .././config.py:26159 msgid "Use the default Invidious mirror" msgstr "" -#: .././config.py:26135 +#: .././config.py:26174 msgid "SponsorBlock API mirror" msgstr "" -#: .././config.py:26148 +#: .././config.py:26187 msgid "Use the default SponsorBlock URL" msgstr "" -#: .././config.py:26165 +#: .././config.py:26204 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Proxies" msgstr "" -#: .././config.py:26169 +#: .././config.py:26208 msgid "P_roxies" msgstr "" -#: .././config.py:26175 +#: .././config.py:26214 msgid "Proxies" msgstr "" -#: .././config.py:26182 +#: .././config.py:26221 msgid "" "During a download operation, Tartube will cycle betwween the proxies in this " "list" msgstr "" -#: .././config.py:26208 +#: .././config.py:26247 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Preferences" msgstr "" -#: .././config.py:26212 +#: .././config.py:26251 msgid "Pre_ferences" msgstr "" -#: .././config.py:26219 +#: .././config.py:26258 msgid "URL flexibility preferences" msgstr "" -#: .././config.py:26226 +#: .././config.py:26265 msgid "" "If a video's URL represents a channel/playlist, not a video, don't download " "it" msgstr "" -#: .././config.py:26235 +#: .././config.py:26274 msgid "...or, download multiple videos into the containing folder" msgstr "" -#: .././config.py:26245 +#: .././config.py:26284 msgid "...or, create a new channel, and download the videos into that" msgstr "" -#: .././config.py:26256 +#: .././config.py:26295 msgid "...or, create a new playlist, and download the videos into that" msgstr "" -#: .././config.py:26288 .././config.py:26370 +#: .././config.py:26327 .././config.py:26409 msgid "Missing video preferences" msgstr "" -#: .././config.py:26294 .././config.py:26376 +#: .././config.py:26333 .././config.py:26415 msgid "" "Add videos which have been removed from a channel/playlist to the Missing " "Videos folder" msgstr "" -#: .././config.py:26305 .././config.py:26387 +#: .././config.py:26344 .././config.py:26426 msgid "Only add videos that were uploaded within this many days" msgstr "" -#: .././config.py:26359 +#: .././config.py:26398 msgid "TRANSLATOR'S NOTE: System preferences > Operations > Missing" msgstr "" -#: .././config.py:26363 +#: .././config.py:26402 msgid "Missi_ng" msgstr "" -#: .././config.py:26436 +#: .././config.py:26475 msgid "TRANSLATOR'S NOTE: System preferences > Downloaders" msgstr "" -#: .././config.py:26468 .././config.py:35816 +#: .././config.py:26507 .././config.py:35941 msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > Forks" msgstr "" -#: .././config.py:26472 +#: .././config.py:26511 msgid "_Forks" msgstr "" -#: .././config.py:26478 +#: .././config.py:26517 msgid "Forks of youtube-dl" msgstr "" -#: .././config.py:26507 +#: .././config.py:26546 msgid "Use yt-dlp" msgstr "" -#: .././config.py:26513 +#: .././config.py:26552 msgid "Install without dependencies" msgstr "" -#: .././config.py:26514 +#: .././config.py:26553 msgid "(recommended on MS Windows)" msgstr "" -#: .././config.py:26545 +#: .././config.py:26584 msgid "Use youtube-dl" msgstr "" -#: .././config.py:26566 +#: .././config.py:26605 msgid "Other forks" msgstr "" -#: .././config.py:26574 +#: .././config.py:26613 msgid "Use this fork (e.g. youtube-dlc):" msgstr "" -#: .././config.py:26652 +#: .././config.py:26691 msgid "When using other downloaders, filter out yt-dlp download options" msgstr "" -#: .././config.py:26674 +#: .././config.py:26714 msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > File paths" msgstr "" -#: .././config.py:26678 +#: .././config.py:26718 msgid "File _paths" msgstr "" -#: .././config.py:26685 +#: .././config.py:26725 msgid "Downloader file paths" msgstr "" -#: .././config.py:26691 +#: .././config.py:26731 msgid "Path to the executable" msgstr "" #. (Signal connect appears below) -#: .././config.py:26697 .././config.py:26880 .././config.py:26918 -#: .././config.py:35833 +#: .././config.py:26737 .././config.py:26922 .././config.py:26960 +#: .././config.py:35958 msgid "Use default path" msgstr "" -#: .././config.py:26707 .././config.py:35847 +#: .././config.py:26747 .././config.py:35972 msgid "Use local path" msgstr "" -#: .././config.py:26713 +#: .././config.py:26753 msgid "Use custom path (not recommended on MS Windows)" msgstr "" -#: .././config.py:26715 +#: .././config.py:26755 msgid "Use custom path" msgstr "" -#: .././config.py:26727 .././config.py:35859 +#: .././config.py:26767 .././config.py:35984 msgid "Use PyPI path" msgstr "" -#: .././config.py:26789 +#: .././config.py:26829 msgid "Command for update operations" msgstr "" -#: .././config.py:26844 +#: .././config.py:26886 msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > FFmpeg / AVConv" msgstr "" -#: .././config.py:26849 +#: .././config.py:26891 msgid "FF_mpeg / AVConv" msgstr "" -#: .././config.py:26856 +#: .././config.py:26898 msgid "Post-processor file paths" msgstr "" -#: .././config.py:26861 +#: .././config.py:26903 msgid "" "You only need to set these paths if Tartube cannot find FFmpeg / AVConv " "automatically" msgstr "" -#: .././config.py:26868 +#: .././config.py:26910 msgid "Path to the FFmpeg executable" msgstr "" -#: .././config.py:26906 +#: .././config.py:26948 msgid "Path to the AVConv executable" msgstr "" -#: .././config.py:26933 +#: .././config.py:26975 msgid "Not supported on MS Windows" msgstr "" -#: .././config.py:26961 +#: .././config.py:27003 msgid "TRANSLATOR'S NOTE: System preferences > Downloaders > streamlink" msgstr "" -#: .././config.py:26964 +#: .././config.py:27006 msgid "TRANSLATOR'S NOTE: 'streamlink' is the name of a Python module" msgstr "" -#: .././config.py:26969 +#: .././config.py:27011 msgid "_streamlink" msgstr "" -#: .././config.py:26976 +#: .././config.py:27018 msgid "streamlink file path" msgstr "" -#: .././config.py:26981 +#: .././config.py:27023 msgid "Path to the streamlink executable" msgstr "" -#: .././config.py:27004 +#: .././config.py:27046 msgid "Install from main menu" msgstr "" -#: .././config.py:27029 +#: .././config.py:27071 msgid "TRANSLATOR'S NOTE: System preferences > Options" msgstr "" -#: .././config.py:27058 +#: .././config.py:27100 msgid "TRANSLATOR'S NOTE: System preferences > Options > Download options" msgstr "" -#: .././config.py:27063 +#: .././config.py:27105 msgid "_Download options" msgstr "" -#: .././config.py:27070 +#: .././config.py:27112 msgid "List of download options" msgstr "" -#: .././config.py:27090 +#: .././config.py:27132 msgid "Videos tab" msgstr "" -#: .././config.py:27091 +#: .././config.py:27133 msgid "Dropzone" msgstr "" -#: .././config.py:27091 +#: .././config.py:27133 msgid "Applied to media" msgstr "" -#: .././config.py:27292 +#: .././config.py:27334 msgid "TRANSLATOR'S NOTE: System preferences > Options > Preferences" msgstr "" -#: .././config.py:27296 +#: .././config.py:27338 msgid "_Preferences" msgstr "" -#: .././config.py:27303 +#: .././config.py:27345 msgid "Download options preferences" msgstr "" -#: .././config.py:27309 +#: .././config.py:27351 msgid "" "When applying download options to something, clone the general download " "options" msgstr "" -#: .././config.py:27320 +#: .././config.py:27362 msgid "After downloading a video, destroy its download options" msgstr "" -#: .././config.py:27342 +#: .././config.py:27384 msgid "TRANSLATOR'S NOTE: System preferences > Options > FFmpeg options" msgstr "" -#: .././config.py:27346 +#: .././config.py:27388 msgid "_FFmpeg options" msgstr "" -#: .././config.py:27353 +#: .././config.py:27395 msgid "List of FFmpeg options managers" msgstr "" -#: .././config.py:27373 +#: .././config.py:27415 msgid "Current" msgstr "" -#: .././config.py:27463 +#: .././config.py:27505 msgid "Use these options" msgstr "" -#: .././config.py:27553 +#: .././config.py:27595 msgid "TRANSLATOR'S NOTE: System preferences > Output" msgstr "" #. Add this tab... -#: .././config.py:27557 +#: .././config.py:27599 msgid "O_utput" msgstr "" -#: .././config.py:27583 +#: .././config.py:27625 msgid "TRANSLATOR'S NOTE: System preferences > Output > General" msgstr "" -#: .././config.py:27597 +#: .././config.py:27639 msgid "Applies to Output tab, terminal window and downloader log" msgstr "" -#: .././config.py:27603 +#: .././config.py:27645 msgid "Downloader writes verbose output (youtube-dl debugging mode)" msgstr "" -#: .././config.py:27625 +#: .././config.py:27667 msgid "TRANSLATOR'S NOTE: System preferences > Output > Output tab" msgstr "" -#: .././config.py:27629 +#: .././config.py:27671 msgid "_Output tab" msgstr "" -#: .././config.py:27636 +#: .././config.py:27678 msgid "Output tab preferences" msgstr "" -#: .././config.py:27641 +#: .././config.py:27683 msgid "Display downloader system commands in the Output tab" msgstr "" -#: .././config.py:27651 +#: .././config.py:27693 msgid "Display general output (from downloader's STDOUT) in the Output tab" msgstr "" -#: .././config.py:27662 .././config.py:27850 .././config.py:27952 +#: .././config.py:27704 .././config.py:27892 .././config.py:27994 msgid "...but don't write each video's JSON data" msgstr "" -#: .././config.py:27673 .././config.py:27861 .././config.py:27963 +#: .././config.py:27715 .././config.py:27903 .././config.py:28005 msgid "...but don't write each video's download progress" msgstr "" -#: .././config.py:27693 +#: .././config.py:27735 msgid "Display errors/warnings (from downloader's STDERR) in the Output tab" msgstr "" -#: .././config.py:27704 +#: .././config.py:27746 msgid "Limit the size of Output tab pages to" msgstr "" -#: .././config.py:27728 +#: .././config.py:27770 msgid "Empty pages in the Output tab at the start of every operation" msgstr "" -#: .././config.py:27743 +#: .././config.py:27785 msgid "" "Show a summary of active threads (changes are applied when Tartube restarts)" msgstr "" -#: .././config.py:27758 +#: .././config.py:27800 msgid "During update/info operations, automatically switch to the Output tab" msgstr "" -#: .././config.py:27769 +#: .././config.py:27811 msgid "During a refresh operation, show all matching videos in the Output tab" msgstr "" -#: .././config.py:27780 +#: .././config.py:27822 msgid "...also show all non-matching videos" msgstr "" -#: .././config.py:27814 +#: .././config.py:27856 msgid "TRANSLATOR'S NOTE: System preferences > Output > Terminal window" msgstr "" -#: .././config.py:27818 +#: .././config.py:27860 msgid "_Terminal window" msgstr "" -#: .././config.py:27824 +#: .././config.py:27866 msgid "Terminal window preferences" msgstr "" -#: .././config.py:27829 +#: .././config.py:27871 msgid "Write downloader system commands to the terminal window" msgstr "" -#: .././config.py:27839 +#: .././config.py:27881 msgid "Write general output (from downloader's STDOUT) to the terminal window" msgstr "" -#: .././config.py:27884 +#: .././config.py:27926 msgid "Write errors/warnings (from downloader's STDERR) to the terminal window" msgstr "" -#: .././config.py:27911 +#: .././config.py:27953 msgid "TRANSLATOR'S NOTE: System preferences > Output > Log" msgstr "" -#: .././config.py:27915 +#: .././config.py:27957 msgid "_Downloader log" msgstr "" -#: .././config.py:27921 +#: .././config.py:27963 msgid "Downloader log preferences" msgstr "" -#: .././config.py:27927 +#: .././config.py:27969 #, python-brace-format msgid "If enabled, the file '{0}' is written to Tartube's data folder" msgstr "" -#: .././config.py:27934 +#: .././config.py:27976 msgid "Write downloader system commands to the log" msgstr "" -#: .././config.py:27943 +#: .././config.py:27985 msgid "Write general output (from downloader's STDOUT) to the log" msgstr "" -#: .././config.py:27985 +#: .././config.py:28027 msgid "Write errors/warnings (from downloader's STDERR) to the log" msgstr "" -#: .././config.py:28972 .././config.py:31175 .././config.py:31234 -#: .././config.py:32094 .././config.py:33502 .././config.py:33594 +#: .././config.py:29014 .././config.py:31217 .././config.py:31276 +#: .././config.py:32156 .././config.py:33627 .././config.py:33719 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " "> Update" msgstr "" #. Confirm the result -#: .././config.py:28992 .././config.py:31208 .././config.py:31270 -#: .././config.py:32118 .././config.py:33528 .././config.py:33620 +#: .././config.py:29034 .././config.py:31250 .././config.py:31312 +#: .././config.py:32180 .././config.py:33653 .././config.py:33745 #: .././refresh.py:496 .././refresh.py:604 msgid "Total videos:" msgstr "" -#: .././config.py:28993 .././config.py:31210 .././config.py:31272 -#: .././config.py:32119 .././config.py:33529 .././config.py:33621 +#: .././config.py:29035 .././config.py:31252 .././config.py:31314 +#: .././config.py:32181 .././config.py:33654 .././config.py:33746 msgid "Videos updated:" msgstr "" -#: .././config.py:29177 .././config.py:29286 +#: .././config.py:29219 .././config.py:29328 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " "> URLs" msgstr "" -#: .././config.py:29221 +#: .././config.py:29263 #, python-brace-format msgid "There is already a channel, playlist or folder called '{0}'" msgstr "" -#: .././config.py:29244 +#: .././config.py:29286 msgid "Are you sure you want to rename this channel?" msgstr "" -#: .././config.py:29246 +#: .././config.py:29288 msgid "Are you sure you want to rename this playlist?" msgstr "" -#: .././config.py:29248 +#: .././config.py:29290 msgid "Are you sure you want to rename this folder?" msgstr "" -#: .././config.py:29293 +#: .././config.py:29335 msgid "That is not a valid URL" msgstr "" -#: .././config.py:29316 +#: .././config.py:29358 msgid "Are you sure you want to update the URL?" msgstr "" -#: .././config.py:29347 +#: .././config.py:29389 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by:System preferences > Files " "> URLs" msgstr "" -#: .././config.py:29368 +#: .././config.py:29410 msgid "The regex is invalid" msgstr "" -#: .././config.py:29418 +#: .././config.py:29460 msgid "Are you sure you want to update these URLs?" msgstr "" -#: .././config.py:29618 +#: .././config.py:29660 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Operations > Custom" msgstr "" -#: .././config.py:29643 +#: .././config.py:29685 msgid "The default custom download manager cannot be deleted" msgstr "" -#: .././config.py:29653 +#: .././config.py:29695 msgid "Are you sure you want to delete this custom download manager?" msgstr "" -#: .././config.py:29897 .././config.py:30018 .././config.py:30068 -#: .././config.py:30260 .././config.py:30920 .././config.py:35718 +#: .././config.py:29939 .././config.py:30060 .././config.py:30110 +#: .././config.py:30302 .././config.py:30962 .././config.py:35843 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > Files " "> Database" msgstr "" -#: .././config.py:29929 +#: .././config.py:29971 msgid "Are you sure you want to create a new database at this location?" msgstr "" -#: .././config.py:30041 +#: .././config.py:30083 msgid "Are you sure you want to forget this database?" msgstr "" -#: .././config.py:30081 +#: .././config.py:30123 msgid "Are you sure you want to forget all databases except the current one?" msgstr "" -#: .././config.py:30289 +#: .././config.py:30331 msgid "No database exists at this location:" msgstr "" -#: .././config.py:30291 +#: .././config.py:30333 msgid "Do you want to create a new one?" msgstr "" -#: .././config.py:30926 +#: .././config.py:30968 msgid "Select a Tartube database file" msgstr "" -#: .././config.py:30948 +#: .././config.py:30990 msgid "This file is not loadable (might be corrupted)" msgstr "" -#: .././config.py:30959 +#: .././config.py:31001 msgid "This file does is not compatible with Tartube" msgstr "" -#: .././config.py:30969 +#: .././config.py:31011 msgid "This file was loaded, but is empty" msgstr "" -#: .././config.py:31427 +#: .././config.py:31469 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Options > FFmpeg options" msgstr "" -#: .././config.py:31452 +#: .././config.py:31494 msgid "The current options manager cannot be deleted" msgstr "" -#: .././config.py:31462 .././config.py:32879 +#: .././config.py:31504 .././config.py:33004 msgid "Are you sure you want to delete this options manager?" msgstr "" -#: .././config.py:31648 .././config.py:34444 +#: .././config.py:31710 .././config.py:34569 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Windows > Main Window" msgstr "" -#: .././config.py:31667 .././config.py:32177 .././config.py:34456 +#: .././config.py:31729 .././config.py:32239 .././config.py:34581 msgid "The new setting will be applied when Tartube restarts" msgstr "" -#: .././config.py:32145 +#: .././config.py:32207 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "General > Application" msgstr "" -#: .././config.py:32844 +#: .././config.py:32969 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Options > Download options" msgstr "" -#: .././config.py:32869 +#: .././config.py:32994 msgid "The default options manager cannot be deleted" msgstr "" -#: .././config.py:34001 .././config.py:34049 +#: .././config.py:34126 .././config.py:34174 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Scheduling > Start" msgstr "" -#: .././config.py:34014 +#: .././config.py:34139 msgid "There is already a scheduled download with that name" msgstr "" -#: .././config.py:34066 +#: .././config.py:34191 msgid "Are you sure you want to delete this scheduled download?" msgstr "" -#: .././config.py:34251 +#: .././config.py:34376 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Operations > Archive" msgstr "" -#: .././config.py:34256 +#: .././config.py:34381 msgid "Select the location of the archive file" msgstr "" -#: .././config.py:34289 .././config.py:34327 +#: .././config.py:34414 .././config.py:34452 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Downloaders > FFmpeg / AVConv" msgstr "" -#: .././config.py:34294 +#: .././config.py:34419 msgid "Please select the AVConv executable" msgstr "" -#: .././config.py:34332 +#: .././config.py:34457 msgid "Please select the FFmpeg executable" msgstr "" -#: .././config.py:34365 +#: .././config.py:34490 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Downloaders > streamlink" msgstr "" -#: .././config.py:34370 +#: .././config.py:34495 msgid "Please select the streamlink executable" msgstr "" -#: .././config.py:35568 +#: .././config.py:35693 msgid "" "TRANSLATOR'S NOTE: Dialogue window, generated by: System preferences > " "Downloaders > File paths" msgstr "" -#: .././config.py:35574 +#: .././config.py:35699 msgid "Select the youtube-dl-compatible executable" msgstr "" -#: .././config.py:35751 +#: .././config.py:35876 msgid "Database file not loaded" msgstr "" -#: .././config.py:35771 +#: .././config.py:35896 msgid "Did not try to load the database file" msgstr "" -#: .././config.py:35796 +#: .././config.py:35921 msgid "Database file loaded" msgstr "" @@ -10577,126 +10625,126 @@ msgstr "" msgid "Checking RSS feed" msgstr "" -#: .././downloads.py:2342 +#: .././downloads.py:2341 msgid "Cannot download videos in a private folder" msgstr "" -#: .././downloads.py:3084 +#: .././downloads.py:3086 msgid "Unrecognised download item ID" msgstr "" -#: .././downloads.py:3729 .././downloads.py:9699 +#: .././downloads.py:3737 .././downloads.py:9729 msgid "Download did not start" msgstr "" -#: .././downloads.py:3735 .././downloads.py:9705 .././info.py:310 +#: .././downloads.py:3743 .././downloads.py:9735 .././info.py:310 #: .././updates.py:270 .././updates.py:382 .././updates.py:495 -#: .././updates.py:683 .././updates.py:771 +#: .././updates.py:686 .././updates.py:778 msgid "Child process exited with non-zero code: {}" msgstr "" -#: .././downloads.py:3870 .././downloads.py:5148 +#: .././downloads.py:3878 .././downloads.py:5156 msgid "" "This video has a URL that points to a channel or a playlist, not a video" msgstr "" -#: .././downloads.py:5004 .././downloads.py:5020 .././downloads.py:5036 +#: .././downloads.py:5012 .././downloads.py:5028 .././downloads.py:5044 msgid "Simulated download of:" msgstr "" -#: .././downloads.py:5028 +#: .././downloads.py:5036 msgid "Simulated download of video with unprintable characters" msgstr "" -#: .././downloads.py:6419 +#: .././downloads.py:6449 msgid "Please reinstall/update your downloader" msgstr "" -#: .././downloads.py:7074 +#: .././downloads.py:7104 msgid "Invalid timestamps in temporary buffer" msgstr "" -#: .././downloads.py:7096 +#: .././downloads.py:7126 msgid "No timestamps defined in video's timestamp list" msgstr "" -#: .././downloads.py:7117 +#: .././downloads.py:7147 msgid "" "FAILED: Can't create the destination folder either because a folder with the " "same name already exists, or because new folders can't be added to the " "parent folder" msgstr "" -#: .././downloads.py:7224 .././downloads.py:7419 +#: .././downloads.py:7254 .././downloads.py:7449 msgid "FAILED: Cannot create temporary directory" msgstr "" -#: .././downloads.py:7322 .././downloads.py:7517 .././downloads.py:7828 -#: .././downloads.py:8103 +#: .././downloads.py:7352 .././downloads.py:7547 .././downloads.py:7858 +#: .././downloads.py:8133 msgid "FAILED: Clip download did not start" msgstr "" -#: .././downloads.py:7330 .././downloads.py:7525 .././downloads.py:7836 -#: .././downloads.py:8111 +#: .././downloads.py:7360 .././downloads.py:7555 .././downloads.py:7866 +#: .././downloads.py:8141 msgid "FAILED: Child process exited with non-zero code: {}" msgstr "" -#: .././downloads.py:7948 +#: .././downloads.py:7978 msgid "No slices defined in video's slice list" msgstr "" -#: .././downloads.py:8135 +#: .././downloads.py:8165 msgid "FAILED: One or more clips were not downloaded" msgstr "" -#: .././downloads.py:8236 +#: .././downloads.py:8266 msgid "FAILED: Can't concatenate clips" msgstr "" -#: .././downloads.py:8257 +#: .././downloads.py:8287 msgid "" "FAILED: Clips were concatenated, but could not move the output file out of " "the temporary directory" msgstr "" -#: .././downloads.py:8405 +#: .././downloads.py:8435 msgid "Failed to copy the original video's thumbnail" msgstr "" -#: .././downloads.py:8597 +#: .././downloads.py:8627 msgid "FAILED: Can't create a temporary folder for video clips" msgstr "" -#: .././downloads.py:8649 +#: .././downloads.py:8679 msgid "FAILED: Can't create a temporary folder for video slices" msgstr "" #. There are currently three download methods, specified by self.dl_mode -#: .././downloads.py:9455 +#: .././downloads.py:9485 msgid "Tartube is starting the livestream download" msgstr "" -#: .././downloads.py:9479 +#: .././downloads.py:9509 msgid "Invalid livestream download mode" msgstr "" -#: .././downloads.py:9528 +#: .././downloads.py:9558 msgid "" "Incomplete livestream download detected; removing the .part component from " "the output file" msgstr "" -#: .././downloads.py:9543 +#: .././downloads.py:9573 msgid "" "Incomplete livestream download detected; to complete the download, right-" "click the video and select 'Finalise livestream'" msgstr "" -#: .././downloads.py:9779 .././downloads.py:10350 +#: .././downloads.py:9809 .././downloads.py:10381 msgid "Failed to download the .m3u manifest" msgstr "" -#: .././downloads.py:10241 +#: .././downloads.py:10272 msgid "Downloaded the .m3u manifest, now downloading the livestream..." msgstr "" @@ -10705,297 +10753,309 @@ msgstr "" #. English is top of the list, because it's the default setting in #. options.OptionsManager #. NB These values must not contain square brackets [...] -#: .././formats.py:87 +#: .././formats.py:88 msgid "English" msgstr "" -#: .././formats.py:129 +#: .././formats.py:130 msgid "Dutch" msgstr "" -#: .././formats.py:137 +#: .././formats.py:138 msgid "French" msgstr "" -#: .././formats.py:179 +#: .././formats.py:180 msgid "Korean" msgstr "" -#: .././formats.py:224 +#: .././formats.py:225 msgid "Russian" msgstr "" -#: .././formats.py:242 +#: .././formats.py:243 msgid "Spanish" msgstr "" -#: .././formats.py:257 +#: .././formats.py:258 msgid "Turkish" msgstr "" -#: .././formats.py:265 +#: .././formats.py:266 msgid "Vietnamese" msgstr "" -#: .././formats.py:449 +#: .././formats.py:450 msgid "seconds" msgstr "" -#: .././formats.py:450 +#: .././formats.py:451 msgid "minutes" msgstr "" -#: .././formats.py:451 +#: .././formats.py:452 msgid "hours" msgstr "" -#: .././formats.py:453 +#: .././formats.py:454 msgid "weeks" msgstr "" -#: .././formats.py:454 +#: .././formats.py:455 msgid "years" msgstr "" -#: .././formats.py:471 +#: .././formats.py:472 msgid "Every day" msgstr "" -#: .././formats.py:472 +#: .././formats.py:473 msgid "Weekdays" msgstr "" -#: .././formats.py:473 +#: .././formats.py:474 msgid "Weekends" msgstr "" -#: .././formats.py:474 +#: .././formats.py:475 msgid "Monday" msgstr "" -#: .././formats.py:475 +#: .././formats.py:476 msgid "Tuesday" msgstr "" -#: .././formats.py:476 +#: .././formats.py:477 msgid "Wednesday" msgstr "" -#: .././formats.py:477 +#: .././formats.py:478 msgid "Thursday" msgstr "" -#: .././formats.py:478 +#: .././formats.py:479 msgid "Friday" msgstr "" -#: .././formats.py:479 +#: .././formats.py:480 msgid "Saturday" msgstr "" -#: .././formats.py:480 +#: .././formats.py:481 msgid "Sunday" msgstr "" #. System folder names -#: .././formats.py:1143 +#: .././formats.py:1144 msgid "All Videos" msgstr "" -#: .././formats.py:1144 +#: .././formats.py:1145 msgid "Bookmarks" msgstr "" -#: .././formats.py:1145 +#: .././formats.py:1146 msgid "Favourite Videos" msgstr "" -#: .././formats.py:1146 +#: .././formats.py:1147 msgid "Livestreams" msgstr "" -#: .././formats.py:1147 +#: .././formats.py:1148 msgid "Missing Videos" msgstr "" -#: .././formats.py:1148 +#: .././formats.py:1149 msgid "New Videos" msgstr "" -#: .././formats.py:1149 +#: .././formats.py:1150 msgid "Recent Videos" msgstr "" -#: .././formats.py:1150 +#: .././formats.py:1151 msgid "Waiting Videos" msgstr "" -#: .././formats.py:1151 +#: .././formats.py:1152 msgid "Temporary Videos" msgstr "" -#: .././formats.py:1152 +#: .././formats.py:1153 msgid "Unsorted Videos" msgstr "" -#: .././formats.py:1153 +#: .././formats.py:1154 msgid "Video Clips" msgstr "" -#: .././formats.py:1158 +#: .././formats.py:1159 msgid "Update using default youtube-dl path" msgstr "" -#: .././formats.py:1160 +#: .././formats.py:1161 msgid "Update using local youtube-dl path" msgstr "" -#: .././formats.py:1162 +#: .././formats.py:1163 msgid "Update using custom youtube-dl path" msgstr "" -#: .././formats.py:1164 +#: .././formats.py:1165 msgid "Update using pip" msgstr "" -#: .././formats.py:1166 +#: .././formats.py:1167 msgid "Update using pip (use --no-dependencies option)" msgstr "" -#: .././formats.py:1168 +#: .././formats.py:1169 msgid "Update using pip (omit --user option)" msgstr "" -#: .././formats.py:1170 +#: .././formats.py:1171 msgid "Update using pip3" msgstr "" -#: .././formats.py:1172 +#: .././formats.py:1173 msgid "Update using pip3 (use --no-dependencies option)" msgstr "" -#: .././formats.py:1174 +#: .././formats.py:1175 msgid "Update using pip3 (omit --user option)" msgstr "" -#: .././formats.py:1176 +#: .././formats.py:1177 msgid "Update using pip3 (recommended)" msgstr "" -#: .././formats.py:1178 +#: .././formats.py:1179 +msgid "Update using pipx" +msgstr "" + +#: .././formats.py:1181 +msgid "Update using pipx (use --no-dependencies option)" +msgstr "" + +#: .././formats.py:1183 +msgid "Update using pipx (omit --user option)" +msgstr "" + +#: .././formats.py:1185 msgid "Update using PyPI youtube-dl path" msgstr "" -#: .././formats.py:1180 +#: .././formats.py:1187 msgid "Windows 32-bit update (recommended)" msgstr "" -#: .././formats.py:1182 +#: .././formats.py:1189 msgid "Windows 32-bit update (use --no-dependencies option)" msgstr "" -#: .././formats.py:1184 +#: .././formats.py:1191 msgid "Windows 64-bit update (recommended)" msgstr "" -#: .././formats.py:1186 +#: .././formats.py:1193 msgid "Windows 64-bit update (use --no-dependencies option)" msgstr "" -#: .././formats.py:1188 +#: .././formats.py:1195 msgid "youtube-dl updates are disabled" msgstr "" #. Download operation stages -#: .././formats.py:1192 +#: .././formats.py:1199 msgid "Queued" msgstr "" -#: .././formats.py:1193 +#: .././formats.py:1200 msgid "Not started" msgstr "" -#: .././formats.py:1194 +#: .././formats.py:1201 msgid "Active" msgstr "" -#: .././formats.py:1195 +#: .././formats.py:1202 msgid "Paused" msgstr "" #. (not actually used) -#: .././formats.py:1196 +#: .././formats.py:1203 msgid "Completed" msgstr "" #. (not actually used) #. Sub-stages of the 'Error' stage -#: .././formats.py:1197 .././formats.py:1210 +#: .././formats.py:1204 .././formats.py:1217 msgid "Error" msgstr "" -#: .././formats.py:1198 +#: .././formats.py:1205 msgid "Stalled" msgstr "" #. Sub-stages of the 'Active' stage -#: .././formats.py:1200 +#: .././formats.py:1207 msgid "Pre-processing" msgstr "" -#: .././formats.py:1202 +#: .././formats.py:1209 msgid "Concatenating" msgstr "" -#: .././formats.py:1203 +#: .././formats.py:1210 msgid "Post-processing" msgstr "" #. Sub-stages of the 'Completed' stage -#: .././formats.py:1206 +#: .././formats.py:1213 msgid "Finished" msgstr "" -#: .././formats.py:1207 +#: .././formats.py:1214 msgid "Warning" msgstr "" -#: .././formats.py:1208 +#: .././formats.py:1215 msgid "Already downloaded" msgstr "" #. (not actually used) -#: .././formats.py:1211 +#: .././formats.py:1218 msgid "Stopped" msgstr "" -#: .././formats.py:1212 +#: .././formats.py:1219 msgid "Filesize abort" msgstr "" -#: .././formats.py:1222 +#: .././formats.py:1229 msgid "" "TRANSLATOR'S NOTE: ID refers to a video's unique ID on the website, e.g. on " "YouTube \"CS9OO0S5w2k\"" msgstr "" -#: .././formats.py:1231 +#: .././formats.py:1238 msgid "ID" msgstr "" -#: .././formats.py:1232 +#: .././formats.py:1239 msgid "Title" msgstr "" -#: .././formats.py:1233 +#: .././formats.py:1240 msgid "Quality" msgstr "" -#: .././formats.py:1234 +#: .././formats.py:1241 msgid "Autonumber" msgstr "" -#: .././formats.py:1246 +#: .././formats.py:1253 msgid "Any format" msgstr "" @@ -11051,87 +11111,87 @@ msgstr "" msgid "Child process did not start" msgstr "" -#: .././media.py:93 +#: .././media.py:99 msgid "channel" msgstr "" -#: .././media.py:95 +#: .././media.py:101 msgid "playlist" msgstr "" -#: .././media.py:97 +#: .././media.py:103 msgid "folder" msgstr "" -#: .././media.py:99 +#: .././media.py:105 msgid "video" msgstr "" -#: .././media.py:639 .././media.py:2248 +#: .././media.py:645 .././media.py:2255 msgid "TRANSLATOR'S NOTE: Source = video/channel/playlist URL" msgstr "" #. When the download operation is launched from the Classic Mode #. tab, there is less to display -#: .././media.py:642 .././media.py:2251 .././media.py:2267 +#: .././media.py:648 .././media.py:2258 .././media.py:2274 msgid "Source:" msgstr "" -#: .././media.py:650 +#: .././media.py:656 msgid "Location:" msgstr "" -#: .././media.py:660 .././media.py:669 +#: .././media.py:666 .././media.py:675 msgid "Download destination:" msgstr "" -#: .././media.py:662 +#: .././media.py:668 msgid "unavailable" msgstr "" -#: .././media.py:680 .././media.py:2283 -msgid "Errors\\Warnings" +#: .././media.py:686 .././media.py:2290 +msgid "Errors/Warnings" msgstr "" -#: .././media.py:2217 +#: .././media.py:2224 msgid "" "TRANSLATOR'S NOTE: WAITING = livestream not started, LIVE = livestream " "started" msgstr "" -#: .././media.py:2222 +#: .././media.py:2229 msgid "WAITING" msgstr "" -#: .././media.py:2224 +#: .././media.py:2231 msgid "LIVE" msgstr "" -#: .././media.py:2229 +#: .././media.py:2236 msgid "BLOCKED" msgstr "" -#: .././media.py:2239 .././refresh.py:258 .././refresh.py:542 +#: .././media.py:2246 .././refresh.py:258 .././refresh.py:542 msgid "Channel:" msgstr "" -#: .././media.py:2241 .././refresh.py:260 .././refresh.py:544 +#: .././media.py:2248 .././refresh.py:260 .././refresh.py:544 msgid "Playlist:" msgstr "" -#: .././media.py:2243 .././refresh.py:262 .././refresh.py:546 +#: .././media.py:2250 .././refresh.py:262 .././refresh.py:546 msgid "Folder:" msgstr "" -#: .././media.py:2257 .././media.py:2274 +#: .././media.py:2264 .././media.py:2281 msgid "File:" msgstr "" -#: .././media.py:3325 .././media.py:3386 +#: .././media.py:3332 .././media.py:3393 msgid "Today" msgstr "" -#: .././media.py:3327 .././media.py:3388 +#: .././media.py:3334 .././media.py:3395 msgid "Yesterday" msgstr "" @@ -11390,7 +11450,7 @@ msgstr "" #. Show a confirmation in the the Output tab (or wizard window textview) #: .././updates.py:281 .././updates.py:393 .././updates.py:506 -#: .././updates.py:696 +#: .././updates.py:699 msgid "Update operation finished" msgstr "" @@ -11414,6 +11474,6 @@ msgstr "" msgid "Starting update operation, installing/updating " msgstr "" -#: .././updates.py:676 .././updates.py:764 +#: .././updates.py:679 .././updates.py:771 msgid "Update did not start" msgstr "" diff --git a/tartube/tartube b/tartube/tartube index 1ce11fa..054ffd1 100644 --- a/tartube/tartube +++ b/tartube/tartube @@ -44,8 +44,8 @@ import mainapp # 'Global' variables __packagename__ = 'tartube' -__version__ = '2.5.028' -__date__ = '6 Aug 2024' +__version__ = '2.5.040' +__date__ = '31 Aug 2024' __copyright__ = 'Copyright \xa9 2019-2024 A S Lewis' __license__ = """ Copyright \xa9 2019-2024 A S Lewis. diff --git a/tartube/wizwin.py b/tartube/wizwin.py index 9da70b5..2feb5ac 100644 --- a/tartube/wizwin.py +++ b/tartube/wizwin.py @@ -728,7 +728,6 @@ def __init__(self, app_obj): self.page_list.append('setup_finish_page_strict') else: - self.page_list.append('setup_fetch_ffmpeg_page') # !!! test remove self.page_list.append('setup_fetch_downloader_page') self.page_list.append('setup_classic_mode_page') self.page_list.append('setup_finish_page_default')