59
.github/ISSUE_TEMPLATE.md
vendored
@ -1,61 +1,64 @@
|
||||
## Please follow the guide below
|
||||
|
||||
- You will be asked some questions and requested to provide some information, please read them **carefully** and answer honestly
|
||||
- Put an `x` into all the boxes [ ] relevant to your *issue* (like that [x])
|
||||
- Put an `x` into all the boxes [ ] relevant to your issue (like that [x])
|
||||
- Use *Preview* tab to see how your issue will actually look like
|
||||
|
||||
---
|
||||
|
||||
### WARNING
|
||||
All the invalid issues will be rejected!!
|
||||
All invalid issues will be rejected!!
|
||||
|
||||
---
|
||||
|
||||
### Before going further
|
||||
* If your problem is a bug with the **youtube-dl** program or a request for new site support please report it [here](https://github.com/rg3/youtube-dl/issues)
|
||||
|
||||
* Make sure you are using the *latest* **youtube-dl-gui** version: `Options > About` tab. If it's not please download & install the latest version for your OS and check if your issue still persists
|
||||
- If your problem is a bug with **youtube-dl** or a request for new site support please report it [here](https://github.com/rg3/youtube-dl/issues)
|
||||
|
||||
* Make sure you are using the *latest* **youtube-dl** version: Click the `Update` button on the main screen and check if your issue still persists
|
||||
- Make sure you are using the *latest* **youtube-dl-gui** version (Click the `Settings` icon and then `About` to view the current version)
|
||||
|
||||
* Make sure you searched the bugtracker for similar issues including closed ones
|
||||
- Make sure you are using the *latest* **youtube-dl** version (Click the `Settings` icon and then `Update` to update to the latest **youtube-dl** version)
|
||||
|
||||
- Make sure you searched the bugtracker for similar issues including closed ones
|
||||
|
||||
- Make sure to read the [FAQs](../docs/faqs.md) file
|
||||
|
||||
- [ ] **I assure** that my problem is **NOT** with **youtube-dl**
|
||||
- [ ] I've **verified** and **I assure** that I'm running youtube-dl-gui **0.3.8**
|
||||
- [ ] I've **verified** and **i assure** that I'm running youtube-dl-gui **0.3.8**
|
||||
- [ ] **I assure** that i am using the latest version of **youtube-dl**
|
||||
- [ ] [Searched](https://github.com/MrS0m30n3/youtube-dl-gui/issues) bugtracker
|
||||
- [ ] I've read the FAQs file
|
||||
|
||||
---
|
||||
|
||||
### What is the purpose of your *issue*?
|
||||
- [ ] Bug during the download process (encountered problems after hitting the *Download* button)
|
||||
- [ ] Bug other (encountered other problems with *youtube-dl-gui*)
|
||||
|
||||
- [ ] Bug report
|
||||
- [ ] Feature request (request for a new functionality)
|
||||
- [ ] Question
|
||||
- [ ] Other
|
||||
|
||||
Please remove any sections between (---) if they are not related to your issue
|
||||
|
||||
---
|
||||
|
||||
Please remove the following section between the (---) if your problem does not belong to the **bug during the download process** category
|
||||
### Bug report
|
||||
|
||||
#### Provide the full verbose output as follows:
|
||||
#### If the problem occurs when downloading a URL please provide the full verbose output as follows:
|
||||
|
||||
1. Add `-v` flag to Options > Commands tab
|
||||
2. Re-try to download the URL
|
||||
3. Go to `Options > Log` tab and click the `View Log` button
|
||||
4. Copy the **whole** content of the log file and insert it between the triple ``` part
|
||||
1. Restart **youtube-dl-gui**
|
||||
1. Go to `Options > Extra` tab
|
||||
2. Enable **Debug youtube-dl**
|
||||
3. Go to `Options > Advanced` tab and **Clear** your log content
|
||||
4. Try to download the URL
|
||||
5. Copy the **whole** log content and insert it between the ``` part below
|
||||
|
||||
```
|
||||
[delete me and insert your log content here]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Please remove the following section between the (---) if your problem does not belong to **the first two categories (bug report)**
|
||||
|
||||
#### What operating system do you use ?
|
||||
|
||||
#### List of actions to perform to reproduce the problem:
|
||||
|
||||
1. ..
|
||||
2. ..
|
||||
3. ..
|
||||
@ -64,7 +67,19 @@ Please remove the following section between the (---) if your problem does not b
|
||||
|
||||
#### What happens instead ?
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Description of your *issue*, suggested solution and other information. Please make sure the description is worded well enough to be understood.
|
||||
### Feature request (request for a new functionality)
|
||||
|
||||
Please make sure that the requested feature is **NOT** already in the [TODO](../TODO) list
|
||||
|
||||
- [ ] I've **verified** and **i assure** that my requested feature is **NOT** in the TODO list
|
||||
|
||||
#### What operating system do you use ?
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!--Enter description of your issue, suggested solution and other information below. Please make sure the description is worded well enough to be understood-->
|
||||
|
||||
|
2
.gitignore
vendored
@ -1,4 +1,6 @@
|
||||
MANIFEST
|
||||
*.pyc
|
||||
*.mo
|
||||
|
||||
dist/
|
||||
build/
|
||||
|
16
MANIFEST.in
@ -1,9 +1,15 @@
|
||||
include README.md
|
||||
include TODO
|
||||
include AUTHORS
|
||||
include LICENSE
|
||||
include ToDo
|
||||
include README.md
|
||||
|
||||
include locale_build/*
|
||||
include tests/*.py
|
||||
include devscripts/*
|
||||
include docs/*
|
||||
|
||||
recursive-include youtube_dl_gui/icons *.png *.ico *.icns
|
||||
recursive-include youtube_dl_gui/locale *.mo *.po
|
||||
include youtube_dl_gui/data/pixmaps/icons-license
|
||||
|
||||
recursive-include youtube_dl_gui/data *.png *.ico
|
||||
recursive-include youtube_dl_gui/locale *.po
|
||||
|
||||
recursive-exclude youtube_dl_gui/locale *.mo
|
||||
|
62
README.md
@ -1,49 +1,51 @@
|
||||
# youtube-dlG
|
||||
|
||||
A cross platform front-end GUI of the popular [youtube-dl](http://rg3.github.io/youtube-dl/) media downloader, written in wxPython. [List of supported sites](https://rg3.github.io/youtube-dl/supportedsites.html).
|
||||
A cross platform front-end GUI of the popular [youtube-dl](https://rg3.github.io/youtube-dl/) media downloader written in wxPython. [Supported sites](https://rg3.github.io/youtube-dl/supportedsites.html)
|
||||
|
||||
## Screenshots
|
||||
![youtube-dl-gui main window](https://i.imgur.com/tMTtgPt.png)
|
||||
|
||||
**Main window**
|
||||
## Requirements
|
||||
* [Python 2.7.3+](https://www.python.org/downloads)
|
||||
* [wxPython 3](https://wxpython.org/download.php)
|
||||
* [TwoDict](https://pypi.python.org/pypi/twodict)
|
||||
* [FFmpeg](https://ffmpeg.org/download.html) (optional, to post process video files)
|
||||
|
||||
![Youtube-dl-gui main window](http://i.imgur.com/I4oXPWs.png)
|
||||
|
||||
**Options window**
|
||||
|
||||
![Options window](http://i.imgur.com/eShdoLD.png)
|
||||
## Downloads
|
||||
* [Source (.zip)](https://github.com/MrS0m30n3/youtube-dl-gui/archive/0.3.8.zip)
|
||||
* [Source (.tar.gz)](https://github.com/MrS0m30n3/youtube-dl-gui/archive/0.3.8.tar.gz)
|
||||
* [PyPi](https://pypi.python.org/pypi/youtube-dlg/0.3.8)
|
||||
* [Ubuntu PPA](http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu/pool/main/y/youtube-dlg/)
|
||||
* [Arch AUR](https://aur.archlinux.org/packages/youtube-dl-gui-git/)
|
||||
* [Slackware SlackBuild](https://slackbuilds.org/repository/14.2/network/youtube-dl-gui/)
|
||||
* [Windows Installer](https://github.com/MrS0m30n3/youtube-dl-gui/releases/download/0.3.8/youtube-dl-gui-0.3.8-win-setup.zip)
|
||||
* [Windows Portable](https://github.com/MrS0m30n3/youtube-dl-gui/releases/download/0.3.8/youtube-dl-gui-0.3.8-win-portable.zip)
|
||||
|
||||
## Installation
|
||||
|
||||
**Linux (from source):** `sudo python setup.py install`
|
||||
### Install From Source
|
||||
1. Download & extract the source
|
||||
2. Change directory into *youtube-dl-gui-0.3.8*
|
||||
3. Run `python setup.py install`
|
||||
|
||||
**Linux (Ubuntu PPA):** https://launchpad.net/~flexiondotorg/+archive/ubuntu/youtube-dl-gui
|
||||
### Install PyPi
|
||||
1. Run `pip install youtube-dlg`
|
||||
|
||||
**Linux (Arch AUR):** https://aur.archlinux.org/packages/youtube-dl-gui-git/ (TODO: update)
|
||||
|
||||
**Windows:** https://github.com/MrS0m30n3/youtube-dl-gui/releases/download/0.3.8/youtube-dl-gui-0.3.8-win-setup.zip
|
||||
|
||||
**Mac:** TODO Package app
|
||||
|
||||
Then you can call youtube-dlg from the command line, using the `youtube-dl-gui` command, or by creating a desktop launcher (TODO)
|
||||
### Install Windows Installer
|
||||
1. Download & extract the Windows installer
|
||||
2. Run the `setup.exe` file
|
||||
|
||||
## Contributing
|
||||
|
||||
**Support for new language:** See [Localization HOWTO](locale_build/HOWTO.md).
|
||||
|
||||
**Reporting bugs:** See [Issues](https://github.com/MrS0m30n3/youtube-dl-gui/issues).
|
||||
|
||||
|
||||
## Requirements
|
||||
[Python](http://www.python.org) 2.7+, [wxPython](http://wxpython.org), [FFMPEG & FFPROBE](http://www.ffmpeg.org) (optional, to convert video files to audio-only files).
|
||||
* **Add support for new language:** See [localization howto](docs/localization_howto.md)
|
||||
* **Report a bug:** See [issues](https://github.com/MrS0m30n3/youtube-dl-gui/issues)
|
||||
|
||||
## Authors
|
||||
|
||||
See [AUTHORS](AUTHORS) file
|
||||
|
||||
## License
|
||||
|
||||
## License
|
||||
The [Public Domain License](LICENSE)
|
||||
|
||||
## Thanks
|
||||
## Frequently Asked Questions
|
||||
See [FAQs](docs/faqs.md) file
|
||||
|
||||
Thanks to youtube-dl authors for creating such an amazing tool.
|
||||
## Thanks
|
||||
Thanks to everyone who contributed to this project and to [@philipzae](https://github.com/philipzae) for designing the new UI layout.
|
||||
|
58
TODO
@ -1,46 +1,40 @@
|
||||
GUI
|
||||
===
|
||||
* Change MainFrame layout
|
||||
(see: https://docs.google.com/document/d/1UJ55sYepfk5Dl0nCJNz9fXRBgpG32v-4RwIqSdkXXVg/edit)
|
||||
* Create new button widget (groups, auto width, General tab)
|
||||
* Add more statistics (Average download speed)
|
||||
* Auto video format detection
|
||||
* GUI command line builder like zenmap
|
||||
After new_layout merge
|
||||
======================
|
||||
* Send emails to update translations
|
||||
|
||||
|
||||
Next release
|
||||
============
|
||||
* Improve playlist downloads
|
||||
* Remember list of urls after closing & re-opening
|
||||
* About dialog show youtube-dl version
|
||||
* Icons theme selection (vote on github) (or at least make it easy to change between them)
|
||||
* Settings menu add "Statistics"
|
||||
* Mix formats option
|
||||
* Non-Windows shutdown using D-Bus instead of 'shutdown'
|
||||
|
||||
Structure
|
||||
=========
|
||||
* Create devscripts/ directory and move all the utility scripts there
|
||||
* Create docs/ directory and move all the guides there
|
||||
* Remove twodict from utils and use it directly from the library
|
||||
* Give icons the same name and keep them on different directories
|
||||
(see: https://github.com/deluge-torrent/deluge/tree/develop/deluge/ui/data/icons/hicolor)
|
||||
|
||||
Localization
|
||||
============
|
||||
* Update translation files
|
||||
* Add support for right to left languages (hebrew, arabic)
|
||||
* Fix paths on R2L layouts
|
||||
* Compile *.po files at build time
|
||||
* Script to automatically check translations (use google-translate library)
|
||||
* Write bot to automatically check the translations and merge them?
|
||||
|
||||
Options
|
||||
=======
|
||||
* Option to disable-enable the 'download finished' pop up message
|
||||
* Option to close the program after download process
|
||||
* Add 'native hls option' see issue #49
|
||||
* Add Swedish on available subtitles
|
||||
* Add Hebrew on available subtitles
|
||||
|
||||
Other
|
||||
=====
|
||||
* README.md add slackbuild
|
||||
* README.md add new images
|
||||
* Re-structure package
|
||||
|
||||
* Add FAQs into docs/
|
||||
* Add tests
|
||||
* Refactor
|
||||
* Review - rewrite threads communications
|
||||
* Add support for Python 3.*
|
||||
* Logging system using the Python 'logging' module
|
||||
* Use youtube-dl directly from python instead of using the subprocess module
|
||||
* Upload new website for http://mrs0m30n3.github.io/youtube-dl-gui
|
||||
* Script to automatically update file contents like version from .github/ISSUE_TEMPLATE.md file, AUTHORS file, etc..
|
||||
|
||||
|
||||
Probably wont add
|
||||
=================
|
||||
* ListCtrl double click to "Rename"
|
||||
* Option to enable-disable items deletion from the filesystem
|
||||
* Add '--recode-video' to Formats tab
|
||||
* Auto video format detection
|
||||
* Change 'Warning' status to 'Finished (*)' or something similar? (see: issue #131)
|
||||
|
58
devscripts/bump-version.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
# Last-Revision: 2017-04-17
|
||||
# Script to bump the version and automatically update related files
|
||||
#
|
||||
# Usage: ./bump_version.sh <new-version>
|
||||
|
||||
PACKAGE="youtube_dl_gui"
|
||||
|
||||
FILES=`cat <<EOF
|
||||
$PACKAGE/version.py
|
||||
.github/ISSUE_TEMPLATE.md
|
||||
README.md
|
||||
EOF`
|
||||
|
||||
# Update version string on given file
|
||||
# $1 = current version
|
||||
# $2 = new version
|
||||
# $3 = file
|
||||
function update_version {
|
||||
echo "Updating file: $3"
|
||||
sed -i "s/$1/$2/g" $3
|
||||
}
|
||||
|
||||
# Returns 'true' if given version is less or equal to the current version
|
||||
# $1 = version to check
|
||||
# $2 = current version
|
||||
function version_le {
|
||||
smallest_version=`echo -e "$1\n$2" | sort -V | head -n1`
|
||||
[ "$1" = "$smallest_version" ]
|
||||
}
|
||||
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage ./bump_version.sh <new-version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
new_version=$1
|
||||
cur_version=`grep version "$PACKAGE/version.py" | cut -d"'" -f2`
|
||||
|
||||
echo "Current version = $cur_version"
|
||||
echo "New version = $new_version"
|
||||
echo
|
||||
|
||||
if version_le $new_version $cur_version; then
|
||||
echo "New version must be greater than the current version, exiting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for file in $FILES; do
|
||||
update_version $cur_version $new_version $file
|
||||
done
|
||||
|
||||
echo "Done"
|
249
devscripts/check-translation.py
Normal file
@ -0,0 +1,249 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
Last-Revision: 2017-04-19
|
||||
|
||||
Script to automatically check PO files
|
||||
|
||||
"""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
import argparse
|
||||
|
||||
from time import sleep
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
try:
|
||||
import polib
|
||||
import google_translate
|
||||
except ImportError as error:
|
||||
print(error)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
WTIME = 2.0 # Time in seconds to wait between requests to avoid ban
|
||||
|
||||
PACKAGE = "youtube_dl_gui"
|
||||
|
||||
PO_FILENAME = "{}.po".format(PACKAGE)
|
||||
|
||||
LOCALE_PATH_TMPL = os.path.join(PACKAGE, "locale", "{lang}", "LC_MESSAGES", PO_FILENAME)
|
||||
|
||||
|
||||
logging.basicConfig(level=logging.ERROR)
|
||||
|
||||
|
||||
def parse():
|
||||
"""Parse command line arguments."""
|
||||
parser = argparse.ArgumentParser(description="Script to automatically check PO files")
|
||||
|
||||
parser.add_argument("language", help="language of the PO file to check")
|
||||
|
||||
parser.add_argument("-w", "--werror", action="store_true", help="treat all warning messages as errors")
|
||||
parser.add_argument("-o", "--only-headers", action="store_true", help="check only the PO file headers")
|
||||
parser.add_argument("-n", "--no-translate", action="store_true", help="do not use the translator to check 'msgstr' fields")
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def parse_date(date_string):
|
||||
"""Parse date string into a datetime object."""
|
||||
return datetime.strptime(date_string, "%Y-%m-%d %H:%M+%Z")
|
||||
|
||||
# Print helpers
|
||||
|
||||
def my_print(msg, char="*", value=None, exit=False):
|
||||
"""Print 'msg', debug 'value' and exit if 'exit' is True."""
|
||||
print("[{}] {}".format(char, msg))
|
||||
|
||||
if value is not None:
|
||||
print("\tvalue= \"{}\"".format(value))
|
||||
|
||||
if exit:
|
||||
sys.exit(1)
|
||||
|
||||
def perror(msg, value=None):
|
||||
my_print(msg, "-", value, True)
|
||||
|
||||
def pwarn(msg, value=None, exit=False):
|
||||
my_print(msg, "!", value, exit)
|
||||
|
||||
def pinfo(msg):
|
||||
my_print(msg)
|
||||
|
||||
#############################
|
||||
|
||||
|
||||
def main(args):
|
||||
os.chdir("..")
|
||||
|
||||
# setup
|
||||
pot_file_path = LOCALE_PATH_TMPL.format(lang="en_US")
|
||||
po_file_path = LOCALE_PATH_TMPL.format(lang=args.language)
|
||||
|
||||
if not os.path.exists(pot_file_path):
|
||||
perror("Failed to locate POT file, exiting...", pot_file_path)
|
||||
|
||||
if not os.path.exists(po_file_path):
|
||||
perror("Failed to locate PO file, exiting...", po_file_path)
|
||||
|
||||
pot_file = polib.pofile(pot_file_path)
|
||||
po_file = polib.pofile(po_file_path)
|
||||
|
||||
# check headers
|
||||
pinfo("Checking PO headers")
|
||||
|
||||
pot_headers = pot_file.metadata
|
||||
po_headers = po_file.metadata
|
||||
|
||||
if pot_headers["Project-Id-Version"] != po_headers["Project-Id-Version"]:
|
||||
pwarn("'Project-Id-Version' headers do not match", exit=args.werror)
|
||||
|
||||
if pot_headers["POT-Creation-Date"] != po_headers["POT-Creation-Date"]:
|
||||
pwarn("'POT-Creation-Date' headers do not match", exit=args.werror)
|
||||
|
||||
po_creation_date = parse_date(po_headers["POT-Creation-Date"])
|
||||
po_revision_date = parse_date(po_headers["PO-Revision-Date"])
|
||||
|
||||
timediff = po_revision_date - po_creation_date
|
||||
|
||||
if timediff.days <= 0:
|
||||
pwarn("PO file seems outdated", exit=args.werror)
|
||||
|
||||
if "Language" in po_headers and po_headers["Language"] != args.language:
|
||||
pwarn("'Language' header does not match with the given language", po_headers["Language"], args.werror)
|
||||
|
||||
pinfo("Last-Translator: {}".format(po_headers["Last-Translator"]))
|
||||
|
||||
# check translations
|
||||
if args.only_headers:
|
||||
sys.exit(0)
|
||||
|
||||
pinfo("Checking translations, this might take a while...")
|
||||
|
||||
eta = timedelta(seconds=len(pot_file) * WTIME)
|
||||
|
||||
pinfo("Approximate time to check translations online: {}".format(eta))
|
||||
|
||||
pot_msgid = [entry.msgid for entry in pot_file]
|
||||
po_msgid = [entry.msgid for entry in po_file]
|
||||
|
||||
# lists to hold reports
|
||||
missing_msgid = []
|
||||
not_translated = []
|
||||
same_msgstr = []
|
||||
with_typo = []
|
||||
verify_trans = []
|
||||
fuzzy_trans = po_file.fuzzy_entries()
|
||||
|
||||
for msgid in pot_msgid:
|
||||
if msgid not in po_msgid:
|
||||
missing_msgid.append(msgid)
|
||||
|
||||
translator = google_translate.GoogleTranslator(timeout=5.0, retries=2, wait_time=WTIME)
|
||||
|
||||
# Get a valid source language for Google
|
||||
# for example convert 'ar_SA' to 'ar' or 'zh_CN' to 'zh-CN'
|
||||
src_lang = args.language
|
||||
|
||||
if src_lang not in translator._lang_dict:
|
||||
src_lang = src_lang.replace("_", "-")
|
||||
|
||||
if src_lang not in translator._lang_dict:
|
||||
src_lang = src_lang.split("-")[0]
|
||||
|
||||
for entry in po_file:
|
||||
if not entry.translated():
|
||||
not_translated.append(entry)
|
||||
|
||||
elif entry.msgid == entry.msgstr:
|
||||
same_msgstr.append(entry)
|
||||
|
||||
else:
|
||||
if args.no_translate:
|
||||
continue
|
||||
|
||||
word_dict = translator.get_info_dict(entry.msgstr, "en", src_lang)
|
||||
|
||||
if word_dict is not None:
|
||||
if word_dict["has_typo"]:
|
||||
with_typo.append(entry)
|
||||
|
||||
if word_dict["translation"].lower() != entry.msgid.lower():
|
||||
|
||||
found = False
|
||||
|
||||
# Check verbs, nouns, adverbs, etc..
|
||||
for key in word_dict["extra"]:
|
||||
if entry.msgid.lower() in word_dict["extra"][key].keys():
|
||||
found = True
|
||||
break
|
||||
|
||||
if not found:
|
||||
verify_trans.append((entry, word_dict["translation"]))
|
||||
|
||||
sleep(WTIME)
|
||||
|
||||
# time to report
|
||||
print("=" * 25 + "Report" + "=" * 25)
|
||||
|
||||
if missing_msgid:
|
||||
print("Missing msgids")
|
||||
|
||||
for msgid in missing_msgid:
|
||||
print(" \"{}\"".format(msgid))
|
||||
|
||||
if not_translated:
|
||||
print("Not translated")
|
||||
|
||||
for entry in not_translated:
|
||||
print(" line: {} msgid: \"{}\"".format(entry.linenum, entry.msgid))
|
||||
|
||||
if same_msgstr:
|
||||
print("Same msgstr")
|
||||
|
||||
for entry in same_msgstr:
|
||||
print(" line: {} msgid: \"{}\"".format(entry.linenum, entry.msgid))
|
||||
|
||||
if with_typo:
|
||||
print("With typo")
|
||||
|
||||
for entry in with_typo:
|
||||
print(" line: {} msgid: \"{}\" msgstr: \"{}\"".format(entry.linenum, entry.msgid, entry.msgstr))
|
||||
|
||||
if verify_trans:
|
||||
print("Verify translation")
|
||||
|
||||
for item in verify_trans:
|
||||
entry, translation = item
|
||||
print(" line: {} msgid: \"{}\" trans: \"{}\"".format(entry.linenum, entry.msgid, translation))
|
||||
|
||||
if fuzzy_trans:
|
||||
print("Fuzzy translations")
|
||||
|
||||
for entry in fuzzy_trans:
|
||||
print(" line: {} msgid: \"{}\"".format(entry.linenum, entry.msgid))
|
||||
|
||||
total = len(missing_msgid) + len(not_translated) + len(same_msgstr) + len(with_typo) + len(verify_trans) + len(fuzzy_trans)
|
||||
|
||||
print("")
|
||||
print("Missing msgids\t\t: {}".format(len(missing_msgid)))
|
||||
print("Not translated\t\t: {}".format(len(not_translated)))
|
||||
print("Same msgstr\t\t: {}".format(len(same_msgstr)))
|
||||
print("With typo\t\t: {}".format(len(with_typo)))
|
||||
print("Verify translation\t: {}".format(len(verify_trans)))
|
||||
print("Fuzzy translations\t: {}".format(len(fuzzy_trans)))
|
||||
print("Total\t\t\t: {}".format(total))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
main(parse())
|
||||
except KeyboardInterrupt:
|
||||
print("KeyboardInterrupt")
|
67
devscripts/new-locale.py
Normal file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
Last-Revision: 2017-01-30
|
||||
|
||||
Script to add support for a new language
|
||||
|
||||
Usage : ./new-locale.py <language_code>
|
||||
Example : ./new-locale.py en_US
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
|
||||
|
||||
PACKAGE = "youtube_dl_gui"
|
||||
|
||||
LOCALE_PATH_TMPL = os.path.join(PACKAGE, "locale", "{lang}", "LC_MESSAGES")
|
||||
|
||||
PO_FILE_TMPL = os.path.join("{parent_dir}", "youtube_dl_gui.po")
|
||||
|
||||
|
||||
def error(msg):
|
||||
print("[-]{0}".format(msg))
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def output(msg):
|
||||
print("[*]{0}".format(msg))
|
||||
|
||||
|
||||
def manage_directory():
|
||||
"""Allow script calls from the 'devscripts' dir and the package dir."""
|
||||
if os.path.basename(os.getcwd()) == "devscripts":
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
def main(lang_code):
|
||||
manage_directory()
|
||||
|
||||
target_dir = LOCALE_PATH_TMPL.format(lang=lang_code)
|
||||
default_dir = LOCALE_PATH_TMPL.format(lang="en_US")
|
||||
|
||||
target_po = PO_FILE_TMPL.format(parent_dir=target_dir)
|
||||
source_po = PO_FILE_TMPL.format(parent_dir=default_dir)
|
||||
|
||||
if os.path.exists(target_dir):
|
||||
error("Locale '{0}' already exists, exiting...".format(lang_code))
|
||||
|
||||
output("Creating directory: '{0}'".format(target_dir))
|
||||
os.makedirs(target_dir)
|
||||
|
||||
output("Creating PO file: '{0}'".format(target_po))
|
||||
shutil.copy(source_po, target_po)
|
||||
|
||||
output("Done")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) == 2:
|
||||
main(sys.argv[1])
|
||||
else:
|
||||
print("Usage : {0} <language_code>".format(sys.argv[0]))
|
||||
print("Example : {0} en_US".format(sys.argv[0]))
|
27
devscripts/update-authors.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
# Last-Revision: 2017-04-17
|
||||
# Script to update the AUTHORS file
|
||||
#
|
||||
# Usage: ./update-authors.sh
|
||||
|
||||
cd ..
|
||||
|
||||
git log --reverse --format="%aN <%aE>" | python -c "
|
||||
|
||||
import sys
|
||||
|
||||
authors = set()
|
||||
|
||||
sys.stdout.write('# Authors ordered by first contribution.\n\n')
|
||||
|
||||
for line in sys.stdin:
|
||||
username, _ = line.split('<')
|
||||
|
||||
if username not in authors:
|
||||
authors.add(username)
|
||||
sys.stdout.write(line)
|
||||
|
||||
sys.stdout.write('\n# Generated by update-authors.sh script\n')
|
||||
" > AUTHORS
|
54
devscripts/update-locales.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
# Last-Revision: 2017-01-30
|
||||
# Script to update all locale files and rebuild the MO files
|
||||
#
|
||||
# Usage: ./update_locales.sh
|
||||
|
||||
PACKAGE="youtube_dl_gui"
|
||||
|
||||
PO_FILE="$PACKAGE.po"
|
||||
|
||||
|
||||
cd ..
|
||||
|
||||
VERSION=$(grep version "$PACKAGE/version.py" | cut -d"'" -f2)
|
||||
|
||||
DIRS=$(find "$PACKAGE/locale" -mindepth 2 -maxdepth 2)
|
||||
|
||||
|
||||
echo "[*]Creating new .PO file"
|
||||
|
||||
pygettext.py -v -o new.po "$PACKAGE/*.py"
|
||||
|
||||
#vim new.po
|
||||
|
||||
echo "[*]Updating old .PO files"
|
||||
|
||||
for dir in $DIRS; do
|
||||
msgmerge --update --no-wrap -v "$dir/$PO_FILE" new.po
|
||||
|
||||
# Strip empty headers
|
||||
sed -i "/: \\n/d" "$dir/$PO_FILE"
|
||||
|
||||
# Upate version
|
||||
sed -i "s/Project-Id-Version:.*\\\n/Project-Id-Version: youtube-dlg $VERSION\\\n/g" "$dir/$PO_FILE"
|
||||
done
|
||||
|
||||
echo
|
||||
read -p "Open files for revision?(y/n) " ch
|
||||
|
||||
if [ $ch = 'y' ]; then
|
||||
for dir in $DIRS; do
|
||||
vim "$dir/$PO_FILE"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "[*]Building .MO files"
|
||||
|
||||
for dir in $DIRS; do
|
||||
msgfmt --use-fuzzy --output-file "$dir/$PO_FILE" "$dir/$PO_FILE"
|
||||
done
|
||||
|
||||
echo "[*]Done"
|
53
docs/faqs.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Frequently Asked Questions
|
||||
|
||||
* **Post processing takes too long**:
|
||||
There should be no post-processing if you leave the video format to default (which defaults to the best format) and did not check convert to audio or embed subtitles, otherwise the file will be re-encoded to the format you selected (which takes time/CPU resources).
|
||||
|
||||
* **The website I'm trying to download from is not supported**:
|
||||
Youtube-dl-gui uses [youtube-dl](https://github.com/rg3/youtube-dl) in the backend to download files. Youtube-dl provides a list of [extractors](https://github.com/rg3/youtube-dl/tree/master/youtube_dl/extractor) to work with each particular site. If you'd like to request support for a new website, please submit it to youtube-dl's [issue tracker](https://github.com/rg3/youtube-dl/issues).
|
||||
|
||||
* **How do I change the naming pattern for downloaded files?**:
|
||||
You can change the naming pattern by picking a different filename format under the Options>General tab. You can also use a custom pattern by setting the option to "Custom" and editing the output template field. For more infomations on the output template see [youtube-dl's output template section](https://github.com/rg3/youtube-dl/blob/master/README.md#output-template).
|
||||
|
||||
* **When is the next release coming?**:
|
||||
Youtube-dl-gui does not have a release schedule, next release will come when it's ready.
|
||||
|
||||
* **How can i log the youtube-dl's debug output?**:
|
||||
Just go to Options>Extra tab and enable the "Debug youtube-dl" option.
|
||||
|
||||
* **I don't see my language in the available subtitles languages**:
|
||||
You can't see it because it's not there, feel free to open a new pull-request and add support for your language (it's literally one line of code you don't need years of experience).
|
||||
|
||||
* **I'm on OS-X and i get 'No module named wx' error**:
|
||||
You need to install wxPython. If you have [homebrew](https://brew.sh/) installed you can just run: `brew install wxpython`
|
||||
|
||||
* **Is there an option to change the maximum parallel downloads?**:
|
||||
You can change the number of max parallel downloads by editing the "workers_number" option in your settings.json file. Note that you need to restart youtube-dl-gui for the changes to take place.
|
||||
|
||||
settings.json file location:
|
||||
* Windows: `%appdata%\youtube-dlg\settings.json`
|
||||
* Linux: `~/.config/youtube-dlg/settings.json`
|
||||
|
||||
* **Not all formats reported by youtube-dl '-F' are available in youtube-dl-gui**:
|
||||
Unfortunately it is not possible to support all the video formats that youtube-dl provides. If you want to use a "custom"
|
||||
format you can follow this steps:
|
||||
|
||||
1. Set the download format to "default"
|
||||
2. Go to Options>Extra tab
|
||||
3. Add `-f your_custom_format` in the commands box
|
||||
4. Download your video as you would normally do
|
||||
|
||||
* **How can i use a youtube-dl option that's not available in youtube-dl-gui?**:
|
||||
You can add extra youtube-dl command line options in the commands box under the Options>Extra tab.
|
||||
|
||||
* **Can i download only the subtitles file?**:
|
||||
If the video file is presented youtube-dl-gui will go ahead and download only the subtitles file. If the video file is NOT presented you can add the `--skip-download` option, which will skip the video download phase. If you are not happy with the above options you should use a different tool for the job since youtube-dl-gui is not a subtitles downloader.
|
||||
|
||||
* **I'm using the HLS downloader and i don't see any progress report**:
|
||||
That's a known issue you should use the native HLS implementation by enabling the "Prefer Native HLS" option under the Options>Extra tab. NOTE that the native HLS implementation **might not work on every site**. For more info you can read issue [#49](https://github.com/MrS0m30n3/youtube-dl-gui/issues/49).
|
||||
|
||||
* **I'm using the HLS downloader and the 'stop' button won't work**:
|
||||
That's also a known issue with the HLS downloader on Windows. You should use the native HLS implementation or wait for the download to complete normally. For more info you can read issue [#49](https://github.com/MrS0m30n3/youtube-dl-gui/issues/49).
|
||||
|
||||
* **Is it possible to use a youtube-dl version other than the official one?**:
|
||||
You can use your own version of youtube-dl by editing the "youtubedl_path" option in your settings.json file and make it point to your own binary (e.g. /usr/local/bin). Note that if youtube-dl-gui does not have write permissions to this new directory the "update" option in the GUI will fail. Also, note that changing the "youtubedl_path" won't change the update source which is hardcoded for now to "https://yt-dl.org/latest/".
|
65
docs/localization_howto.md
Normal file
@ -0,0 +1,65 @@
|
||||
## ADD SUPPORT FOR NEW LANGUAGE
|
||||
|
||||
### Requirements
|
||||
- [GNU gettext](https://www.gnu.org/software/gettext) (To build the MO files)
|
||||
|
||||
### Notes
|
||||
- Do **NOT** send me the PO files via email since i'm not looking at them anymore
|
||||
- See the **Help** & **Helpful links** sections below for help
|
||||
- The instructions below assume basic knowledge of the command line (OS independent)
|
||||
|
||||
---
|
||||
|
||||
### Getting started
|
||||
1. Fork the project
|
||||
2. Create a local clone of your fork repo
|
||||
3. Change directory into **youtube-dl-gui**
|
||||
4. Run the **new-locale.py** script under the **devscripts** directory
|
||||
5. Edit the created **PO** file with your favorite editor
|
||||
6. Add the new language in the **optionsframe.py** file
|
||||
7. Build the binary translation files (MO) using the **setup.py** script:
|
||||
`python setup.py build`
|
||||
8. Test the translations by running youtube-dl-gui:
|
||||
`python -m youtube_dl_gui`
|
||||
9. Push your changes:
|
||||
```
|
||||
git add -A
|
||||
git commit -m "Your commit message here"
|
||||
git push origin master
|
||||
```
|
||||
10. Open a new pull request
|
||||
|
||||
---
|
||||
|
||||
### Help
|
||||
- The language code being used should be in the format `<ISO 639-1>_<ISO 3166-1 alpha-2>` (e.g. en_US)
|
||||
|
||||
- To translate the PO file just edit the **msgstr** fields as shown below:
|
||||
|
||||
``` pot
|
||||
msgid "Download"
|
||||
msgstr "ダウンロード"
|
||||
```
|
||||
|
||||
- In order for youtube-dl-gui to display the new language you must add it to the **optionsframe.py** file:
|
||||
|
||||
1. Open **optionsframe.py** with your favorite editor
|
||||
2. Locate the **LOCALE_NAMES** attribute
|
||||
3. Add your language to it (make sure to sort alphabetically based on the language name)
|
||||
|
||||
``` python
|
||||
LOCALE_NAMES = twodict([
|
||||
('en_US', 'English'),
|
||||
+ ('ja_JP', 'Japanese')
|
||||
])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Helpful links
|
||||
|
||||
- [Creating a pull request](https://help.github.com/articles/creating-a-pull-request)
|
||||
- [Fork A Repo](https://help.github.com/articles/fork-a-repo)
|
||||
- [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
|
||||
- [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
|
||||
- [PO file headers](https://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html)
|
@ -1,75 +0,0 @@
|
||||
## ADD SUPPORT FOR NEW LANGUAGE
|
||||
|
||||
**Requires**: [GNU GetText](https://www.gnu.org/software/gettext/) (If you want to build the MO files on your own)
|
||||
|
||||
###You have two options in order to add a new translation on youtube-dlg.
|
||||
|
||||
1. Translate the files and send them to me via email.
|
||||
2. Fork youtube-dlg and push changes on your own.
|
||||
|
||||
####1st Way
|
||||
|
||||
1. Download the source code
|
||||
1. Either download & extract the source from [here](https://github.com/MrS0m30n3/youtube-dl-gui/archive/master.zip)
|
||||
2. Or run `git clone https://github.com/MrS0m30n3/youtube-dl-gui youtube-dl-gui-master`
|
||||
2. Change directory into **youtube-dl-gui-master**
|
||||
3. Copy **youtube_dl_gui/locale/en_US/LC_MESSAGES/youtube_dl_gui.po** -> **locale_build/**
|
||||
4. Change directory into **locale_build**
|
||||
5. Edit the PO file with your favorite text editor (See *EDIT* section)
|
||||
6. Send me the translated PO file via email to: ytubedlg@gmail.com
|
||||
|
||||
####2nd Way
|
||||
|
||||
1. Fork youtube-dlg project (See [Fork A Repo](https://help.github.com/articles/fork-a-repo/))
|
||||
2. Clone your repository `git clone https://github.com/<your-username>/youtube-dl-gui`
|
||||
3. Change directory into **youtube-dl-gui**
|
||||
4. Copy **youtube_dl_gui/locale/en_US/LC_MESSAGES/youtube_dl_gui.po** -> **locale_build/**
|
||||
5. Change directory into **locale_build**
|
||||
6. Edit the PO file with your favorite text editor (See *EDIT* section)
|
||||
7. Build the binary translation file (MO) using the build scripts (See *BUILD* section)
|
||||
8. Push changes:
|
||||
`git add -A; git commit -m "Your commit message here"; git push origin master`
|
||||
9. Now you can open a new pull request
|
||||
|
||||
### EDIT
|
||||
PO file headers informations:
|
||||
https://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html
|
||||
|
||||
To translate the PO file just edit the **msgstr** fields
|
||||
|
||||
**Example**
|
||||
``` pot
|
||||
#: mainframe.py:78
|
||||
msgid "Download"
|
||||
msgstr "Add the translation here"
|
||||
```
|
||||
|
||||
### BUILD
|
||||
1. To build the MO file you need to run the corresponding build script for your OS
|
||||
|
||||
**Windows**: build_locale.bat
|
||||
|
||||
**Linux**: build_locale.sh
|
||||
|
||||
**Usage**
|
||||
|
||||
`build_locale.<sh-bat> <language code> <translated PO file>`
|
||||
|
||||
**Example**
|
||||
|
||||
`./build_locale.sh gr_GR gr.po`
|
||||
|
||||
2. Now you also need to add the corresponding language option under the options frame localization tab
|
||||
1. Open optionsframe.py
|
||||
2. Locate the LocalizationTab class
|
||||
3. Find the LOCALE_NAMES attribute
|
||||
4. Add your language to the LOCALE_NAMES
|
||||
|
||||
**Example**
|
||||
``` python
|
||||
LOCALE_NAMES = twodict([
|
||||
('en_US', 'English'),
|
||||
+ ('gr_GR', 'Greek')
|
||||
])
|
||||
```
|
||||
|
@ -1,35 +0,0 @@
|
||||
@echo off
|
||||
|
||||
REM Author: Sotiris Papadopoulos
|
||||
REM Last-Edited: 25/02/2015
|
||||
REM Script to auto-create a locale file.
|
||||
|
||||
REM Usage: build_locale.bat <locale> <locale_file>
|
||||
REM Example: build_locale.bat gr_GR gr.po
|
||||
|
||||
REM To create a new locale file copy youtube_dl_gui.po
|
||||
REM to a new locale file (e.g. gr.po) edit it with your
|
||||
REM favorite editor and then run this script.
|
||||
|
||||
REM You also need to install gettext for Windows
|
||||
|
||||
set FILENAME=youtube_dl_gui
|
||||
|
||||
set /a args=0
|
||||
for %%A in (%*) do set /a args+=1
|
||||
|
||||
if not %args% == 2 (
|
||||
echo Usage: %~n0.bat "locale" "locale_file"
|
||||
echo Example: %~n0.bat gr_GR gr.po
|
||||
) else (
|
||||
mkdir ..\%FILENAME%\locale\%1\LC_MESSAGES
|
||||
|
||||
msgfmt.exe --output-file %FILENAME%.mo %2
|
||||
|
||||
move %2 ..\%FILENAME%\locale\%1\LC_MESSAGES\%FILENAME%.po 1>NUL
|
||||
move %FILENAME%.mo ..\%FILENAME%\locale\%1\LC_MESSAGES\ 1>NUL
|
||||
|
||||
tree /F ..\%FILENAME%\locale\%1
|
||||
|
||||
echo Done
|
||||
)
|
@ -1,32 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Author: Sotiris Papadopoulos
|
||||
# Last-Edited: 25/02/2015
|
||||
# Script to auto-create a locale file.
|
||||
|
||||
# Usage: ./build_locale.sh <locale> <locale_file>
|
||||
# Example: ./build_locale.sh gr_GR gr.po
|
||||
|
||||
# To create a new locale file copy youtube_dl_gui.po
|
||||
# to a new locale file (e.g. gr.po) edit it with your
|
||||
# favorite editor and then run this script.
|
||||
|
||||
|
||||
FILENAME="youtube_dl_gui"
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Usage: $0 <locale> <locale_file>"
|
||||
echo "Example: $0 gr_GR gr.po"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "../$FILENAME/locale/$1/LC_MESSAGES/"
|
||||
|
||||
msgfmt --output-file "$FILENAME.mo" "$2"
|
||||
|
||||
mv "$2" "../$FILENAME/locale/$1/LC_MESSAGES/$FILENAME.po"
|
||||
mv "$FILENAME.mo" "../$FILENAME/locale/$1/LC_MESSAGES/"
|
||||
|
||||
tree "../$FILENAME/locale/$1"
|
||||
|
||||
echo "Done"
|
@ -1,48 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Author: Sotiris Papadopoulos <ytubedlg@gmail.com>
|
||||
# Last-Updated: 2015-07-02
|
||||
# Script to update all locale files and rebuild the mo files.
|
||||
|
||||
# Usage: ./update_locales.sh
|
||||
|
||||
|
||||
cd ../youtube_dl_gui/
|
||||
|
||||
echo "[*]Creating new .PO file"
|
||||
pygettext.py -v -o new.po *.py
|
||||
|
||||
#vim new.po
|
||||
|
||||
version=$(grep version version.py | cut -d"'" -f2)
|
||||
dirs=$(find locale -mindepth 2 -maxdepth 2)
|
||||
|
||||
echo "[*]Updating old .PO files"
|
||||
|
||||
for dir in $dirs; do
|
||||
msgmerge --update --no-wrap -v "$dir/youtube_dl_gui.po" new.po
|
||||
|
||||
# Strip empty headers
|
||||
sed -i '/: \\n/d' "$dir/youtube_dl_gui.po"
|
||||
|
||||
# Upate version
|
||||
sed -i "s/Project-Id-Version:.*\\\n/Project-Id-Version: youtube-dlg $version\\\n/g" "$dir/youtube_dl_gui.po"
|
||||
done
|
||||
|
||||
echo ""
|
||||
read -p "Open files for revision?(y/n) " ch
|
||||
|
||||
if [ $ch = 'y' ]; then
|
||||
for dir in $dirs; do
|
||||
vim "$dir/youtube_dl_gui.po"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "[*]Building .MO files"
|
||||
|
||||
for dir in $dirs; do
|
||||
msgfmt --use-fuzzy --output-file "$dir/youtube_dl_gui.mo" "$dir/youtube_dl_gui.po"
|
||||
done
|
||||
|
||||
echo "[*]Done"
|
||||
|
310
setup.py
@ -3,19 +3,59 @@
|
||||
|
||||
"""Youtube-dlg setup file.
|
||||
|
||||
Note:
|
||||
If you get 'TypeError: decoding Unicode is not supported' when you run
|
||||
py2exe then apply the following patch:
|
||||
Examples:
|
||||
Windows::
|
||||
|
||||
http://sourceforge.net/p/py2exe/patches/28/
|
||||
python setup.py py2exe
|
||||
|
||||
Linux::
|
||||
|
||||
python setup.py install
|
||||
|
||||
Build source distribution::
|
||||
|
||||
python setup.py sdist
|
||||
|
||||
Build platform distribution::
|
||||
|
||||
python setup.py bdist
|
||||
|
||||
Build the translations::
|
||||
|
||||
python setup.py build
|
||||
|
||||
Requirements:
|
||||
|
||||
* GNU gettext utilities
|
||||
|
||||
Notes:
|
||||
If you get 'TypeError: decoding Unicode is not supported' when you run
|
||||
py2exe then apply the following patch::
|
||||
|
||||
http://sourceforge.net/p/py2exe/patches/28/
|
||||
|
||||
Basic steps of the setup::
|
||||
|
||||
* Run pre-build tasks
|
||||
* Call setup handler based on OS & options
|
||||
* Set up hicolor icons (if supported by platform)
|
||||
* Set up fallback pixmaps icon (if supported by platform)
|
||||
* Set up package level pixmaps icons (*.png, *.ico)
|
||||
* Set up package level i18n files (*.mo)
|
||||
* Set up scripts (executables) (if supported by platform)
|
||||
* Run setup
|
||||
|
||||
"""
|
||||
|
||||
from distutils.core import setup
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import glob
|
||||
from shutil import copyfile
|
||||
from subprocess import call
|
||||
|
||||
PY2EXE = len(sys.argv) >= 2 and sys.argv[1] == 'py2exe'
|
||||
PY2EXE = len(sys.argv) >= 2 and sys.argv[1] == "py2exe"
|
||||
|
||||
if PY2EXE:
|
||||
try:
|
||||
@ -24,18 +64,6 @@ if PY2EXE:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
PY2APP = len(sys.argv) >= 2 and sys.argv[1] == 'py2app'
|
||||
|
||||
if PY2APP:
|
||||
try:
|
||||
import py2app
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
from distutils.core import setup
|
||||
from distutils.sysconfig import get_python_lib
|
||||
|
||||
from youtube_dl_gui import (
|
||||
__author__,
|
||||
__appname__,
|
||||
@ -44,150 +72,158 @@ from youtube_dl_gui import (
|
||||
__license__,
|
||||
__projecturl__,
|
||||
__description__,
|
||||
__packagename__,
|
||||
__descriptionfull__
|
||||
)
|
||||
|
||||
|
||||
ICONS_SIZES = ('16x16', '32x32', '48x48', '64x64', '128x128', '256x256')
|
||||
ICONS_TEMPLATE = 'youtube_dl_gui/icons/youtube-dl-gui_{size}.png'
|
||||
|
||||
ICONS_LIST = [ICONS_TEMPLATE.format(size=size) for size in ICONS_SIZES]
|
||||
|
||||
|
||||
# Set icons path
|
||||
PY2EXE_ICONS = 'icons'
|
||||
WINDOWS_ICONS = os.path.join(get_python_lib(), 'youtube_dl_gui', 'icons')
|
||||
LINUX_ICONS = '/usr/share/icons/hicolor/'
|
||||
|
||||
LINUX_FALLBACK_ICONS = '/usr/share/pixmaps/'
|
||||
|
||||
|
||||
# Set localization files path
|
||||
LOCALE_PATH = os.path.join('youtube_dl_gui', 'locale')
|
||||
|
||||
PY2EXE_LOCALE_DIR = 'locale'
|
||||
WIN_LOCALE_DIR = os.path.join(get_python_lib(), 'youtube_dl_gui', 'locale')
|
||||
LINUX_LOCALE_DIR = '/usr/share/{app_name}/locale/'.format(app_name=__appname__.lower())
|
||||
OSX_PREFIX = '/usr/local/Cellar/youtube-dl-gui/{version}'.format(version=__version__)
|
||||
OSX_LOCALE_DIR = '{prefix}/share/locale'.format(prefix=OSX_PREFIX)
|
||||
OSX_APP = '{prefix}/YoutubeDlGui.app'.format(prefix=OSX_PREFIX)
|
||||
# Setup can not handle unicode
|
||||
__packagename__ = str(__packagename__)
|
||||
|
||||
|
||||
# Helper functions
|
||||
def create_scripts():
|
||||
dest_dir = os.path.join('build', '_scripts')
|
||||
|
||||
dest_file = os.path.join(dest_dir, 'youtube-dl-gui')
|
||||
src_file = os.path.join('youtube_dl_gui', '__main__.py')
|
||||
"""Create the binary scripts."""
|
||||
dest_dir = os.path.join("build", "_scripts")
|
||||
|
||||
if not os.path.exists(dest_dir):
|
||||
os.makedirs(dest_dir)
|
||||
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
copyfile(os.path.join(__packagename__, "__main__.py"),
|
||||
os.path.join(dest_dir, "youtube-dl-gui"))
|
||||
|
||||
def build_translations():
|
||||
"""Build the MO files."""
|
||||
exec_name = "msgfmt.exe" if os.name == "nt" else "msgfmt"
|
||||
|
||||
search_pattern = os.path.join("youtube_dl_gui", "locale", "*", "LC_MESSAGES", "*.po")
|
||||
|
||||
for po_file in glob.glob(search_pattern):
|
||||
mo_file = po_file.replace(".po", ".mo")
|
||||
|
||||
try:
|
||||
print "Building MO file for '%s'" % po_file
|
||||
call([exec_name, "-o", mo_file, po_file])
|
||||
except OSError:
|
||||
print "Could not locate file '%s', exiting..." % exec_name
|
||||
sys.exit(1)
|
||||
|
||||
##################################
|
||||
|
||||
|
||||
def set_locale_files(data_files):
|
||||
for directory in os.listdir(LOCALE_PATH):
|
||||
locale_lang = os.path.join(directory, 'LC_MESSAGES')
|
||||
def linux_setup():
|
||||
scripts = []
|
||||
data_files = []
|
||||
package_data = {}
|
||||
|
||||
src = os.path.join(LOCALE_PATH, locale_lang, 'youtube_dl_gui.mo')
|
||||
# Add hicolor icons
|
||||
for path in glob.glob("youtube_dl_gui/data/icons/hicolor/*x*"):
|
||||
size = os.path.basename(path)
|
||||
|
||||
if PY2EXE:
|
||||
dst = os.path.join(PY2EXE_LOCALE_DIR, locale_lang)
|
||||
elif os.name == 'nt':
|
||||
dst = os.path.join(WIN_LOCALE_DIR, locale_lang)
|
||||
elif sys.platform == 'darwin':
|
||||
dst = os.path.join(OSX_LOCALE_DIR, locale_lang)
|
||||
else:
|
||||
dst = os.path.join(LINUX_LOCALE_DIR, locale_lang)
|
||||
dst = "share/icons/hicolor/{size}/apps".format(size=size)
|
||||
src = "{icon_path}/apps/youtube-dl-gui.png".format(icon_path=path)
|
||||
|
||||
data_files.append((dst, [src]))
|
||||
|
||||
# Add fallback icon, see issue #14
|
||||
data_files.append(
|
||||
("share/pixmaps", ["youtube_dl_gui/data/pixmaps/youtube-dl-gui.png"])
|
||||
)
|
||||
|
||||
def py2exe_setup():
|
||||
create_scripts()
|
||||
|
||||
py2exe_dependencies = [
|
||||
'C:\\Windows\\System32\\ffmpeg.exe',
|
||||
'C:\\Windows\\System32\\ffprobe.exe',
|
||||
'C:\\python27\\DLLs\\MSVCP90.dll'
|
||||
# Add other package data
|
||||
package_data[__packagename__] = [
|
||||
"data/pixmaps/*.png",
|
||||
"data/pixmaps/*.ico",
|
||||
"locale/*/LC_MESSAGES/*.mo"
|
||||
]
|
||||
|
||||
py2exe_data_files = [
|
||||
('', py2exe_dependencies),
|
||||
(PY2EXE_ICONS, ICONS_LIST)
|
||||
]
|
||||
# Add scripts
|
||||
scripts.append("build/_scripts/youtube-dl-gui")
|
||||
|
||||
set_locale_files(py2exe_data_files)
|
||||
|
||||
py2exe_options = {
|
||||
'includes': ['wx.lib.pubsub.*',
|
||||
'wx.lib.pubsub.core.*',
|
||||
'wx.lib.pubsub.core.arg1.*']
|
||||
setup_params = {
|
||||
"scripts": scripts,
|
||||
"data_files": data_files,
|
||||
"package_data": package_data
|
||||
}
|
||||
|
||||
py2exe_windows = {
|
||||
'script': 'build\\_scripts\\youtube-dl-gui',
|
||||
'icon_resources': [(0, 'youtube_dl_gui\\icons\\youtube-dl-gui.ico')]
|
||||
}
|
||||
|
||||
params = {
|
||||
'data_files': py2exe_data_files,
|
||||
'windows': [py2exe_windows],
|
||||
'options': {'py2exe': py2exe_options}
|
||||
}
|
||||
|
||||
return params
|
||||
|
||||
def py2app_setup():
|
||||
data_files = []
|
||||
create_scripts()
|
||||
set_locale_files(data_files)
|
||||
params = {
|
||||
'data_files': data_files,
|
||||
'app': ['build/_scripts/youtube-dl-gui'],
|
||||
'setup_requires': ['py2app'],
|
||||
'options': {'py2app': {'argv_emulation': True, 'iconfile': 'youtube_dl_gui/icons/osx/YoutubeDlGui.icns'}},
|
||||
}
|
||||
|
||||
return params
|
||||
|
||||
def normal_setup():
|
||||
data_files = list()
|
||||
|
||||
if os.name == 'nt':
|
||||
icons_dir = (WINDOWS_ICONS, ICONS_LIST)
|
||||
data_files.append(icons_dir)
|
||||
|
||||
set_locale_files(data_files)
|
||||
|
||||
params = {'data_files': data_files}
|
||||
else:
|
||||
# Create all the hicolor icons
|
||||
for index, size in enumerate(ICONS_SIZES):
|
||||
icons_dest = os.path.join(LINUX_ICONS, size, 'apps')
|
||||
icons_dir = (icons_dest, [ICONS_LIST[index]])
|
||||
|
||||
data_files.append(icons_dir)
|
||||
|
||||
# Add the 48x48 icon as fallback
|
||||
fallback_icon = (LINUX_FALLBACK_ICONS, [ICONS_LIST[2]])
|
||||
data_files.append(fallback_icon)
|
||||
|
||||
set_locale_files(data_files)
|
||||
|
||||
create_scripts()
|
||||
params = {'data_files': data_files, 'scripts': ['build/_scripts/youtube-dl-gui']}
|
||||
|
||||
return params
|
||||
return setup_params
|
||||
|
||||
|
||||
if PY2EXE:
|
||||
params = py2exe_setup()
|
||||
def windows_setup():
|
||||
def normal_setup():
|
||||
package_data = {}
|
||||
|
||||
# On Windows we dont use the icons under hicolor
|
||||
package_data[__packagename__] = [
|
||||
"data\\pixmaps\\*.png",
|
||||
"data\\pixmaps\\*.ico",
|
||||
"locale\\*\\LC_MESSAGES\\*.mo"
|
||||
]
|
||||
|
||||
setup_params = {
|
||||
"package_data": package_data
|
||||
}
|
||||
|
||||
return setup_params
|
||||
|
||||
def py2exe_setup():
|
||||
windows = []
|
||||
data_files = []
|
||||
|
||||
# Py2exe dependencies & options
|
||||
dependencies = [
|
||||
"C:\\Windows\\System32\\ffmpeg.exe",
|
||||
"C:\\Windows\\System32\\ffprobe.exe",
|
||||
"C:\\python27\\DLLs\\MSVCP90.dll"
|
||||
]
|
||||
|
||||
options = {
|
||||
"includes": ["wx.lib.pubsub.*",
|
||||
"wx.lib.pubsub.core.*",
|
||||
"wx.lib.pubsub.core.arg1.*"]
|
||||
}
|
||||
#############################################
|
||||
|
||||
# Add package data
|
||||
data_files.extend([
|
||||
("", dependencies),
|
||||
("data\\pixmaps", glob.glob("youtube_dl_gui\\data\\pixmaps\\*.*")),
|
||||
])
|
||||
|
||||
# We have to manually add the translation files since py2exe cant do it
|
||||
for lang in os.listdir("youtube_dl_gui\\locale"):
|
||||
dst = os.path.join("locale", lang, "LC_MESSAGES")
|
||||
src = os.path.join("youtube_dl_gui", dst, "youtube_dl_gui.mo")
|
||||
|
||||
data_files.append((dst, [src]))
|
||||
|
||||
# Add GUI executable details
|
||||
windows.append({
|
||||
"script": "build\\_scripts\\youtube-dl-gui",
|
||||
"icon_resources": [(0, "youtube_dl_gui\\data\\pixmaps\\youtube-dl-gui.ico")]
|
||||
})
|
||||
|
||||
setup_params = {
|
||||
"windows": windows,
|
||||
"data_files": data_files,
|
||||
"options": {"py2exe": options}
|
||||
}
|
||||
|
||||
return setup_params
|
||||
|
||||
if PY2EXE:
|
||||
return py2exe_setup()
|
||||
|
||||
return normal_setup()
|
||||
|
||||
|
||||
# Execute pre-build stuff
|
||||
create_scripts()
|
||||
build_translations()
|
||||
|
||||
if os.name == "nt":
|
||||
params = windows_setup()
|
||||
else:
|
||||
if PY2APP:
|
||||
params = py2app_setup()
|
||||
else:
|
||||
params = normal_setup()
|
||||
params = linux_setup()
|
||||
|
||||
|
||||
setup(
|
||||
@ -199,7 +235,7 @@ setup(
|
||||
url = __projecturl__,
|
||||
description = __description__,
|
||||
long_description = __descriptionfull__,
|
||||
packages = ['youtube_dl_gui'],
|
||||
packages = [__packagename__],
|
||||
|
||||
**params
|
||||
)
|
||||
|
0
tests/__init__.py
Normal file
550
tests/test_ditem.py
Normal file
@ -0,0 +1,550 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
"""Contains test cases for the DownloadItem object."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
PATH = os.path.realpath(os.path.abspath(__file__))
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(PATH)))
|
||||
|
||||
try:
|
||||
from youtube_dl_gui.downloadmanager import DownloadItem
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class TestItemInit(unittest.TestCase):
|
||||
|
||||
"""Test case for DownloadItem init."""
|
||||
|
||||
def test_init(self):
|
||||
url = "url"
|
||||
options = ["-f", "flv"]
|
||||
|
||||
ditem = DownloadItem(url, options)
|
||||
|
||||
self.assertEqual(ditem.stage, "Queued")
|
||||
self.assertEqual(ditem.url, url)
|
||||
self.assertEqual(ditem.options, options)
|
||||
self.assertEqual(ditem.object_id, hash(url + unicode(options)))
|
||||
|
||||
self.assertEqual(ditem.path, "")
|
||||
self.assertEqual(ditem.filenames, [])
|
||||
self.assertEqual(ditem.extensions, [])
|
||||
self.assertEqual(ditem.filesizes, [])
|
||||
|
||||
self.assertEqual(
|
||||
ditem.progress_stats,
|
||||
{"filename": url,
|
||||
"extension": "-",
|
||||
"filesize": "-",
|
||||
"percent": "0%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Queued",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""}
|
||||
)
|
||||
|
||||
|
||||
class TestGetFiles(unittest.TestCase):
|
||||
|
||||
"""Test case for DownloadItem get_files method."""
|
||||
|
||||
def setUp(self):
|
||||
self.ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
def test_get_files(self):
|
||||
path = os.path.join("/home", "user", "downloads")
|
||||
|
||||
self.ditem.path = path
|
||||
self.ditem.filenames = ["file1", "file2"]
|
||||
self.ditem.extensions = [".mp4", ".m4a"]
|
||||
|
||||
self.assertEqual(self.ditem.get_files(), [os.path.join(path, "file1" + ".mp4"), os.path.join(path, "file2" + ".m4a")])
|
||||
|
||||
def test_get_files_no_data(self):
|
||||
self.assertEqual(self.ditem.get_files(), [])
|
||||
|
||||
|
||||
class TestItemComparison(unittest.TestCase):
|
||||
|
||||
"""Test case for DownloadItem __eq__ method."""
|
||||
|
||||
def test_equal_true(self):
|
||||
ditem1 = DownloadItem("url", ["-f", "flv"])
|
||||
ditem2 = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
self.assertTrue(ditem1 == ditem2)
|
||||
|
||||
def test_equal_false(self):
|
||||
ditem1 = DownloadItem("url", ["-f", "flv"])
|
||||
ditem2 = DownloadItem("url2", ["-f", "flv"])
|
||||
|
||||
self.assertFalse(ditem1 == ditem2)
|
||||
|
||||
ditem1 = DownloadItem("url", ["-f", "flv"])
|
||||
ditem2 = DownloadItem("url", ["-f", "mp4"])
|
||||
|
||||
self.assertFalse(ditem1 == ditem2)
|
||||
|
||||
|
||||
class TestSetItemStage(unittest.TestCase):
|
||||
|
||||
"""Test case for DownloadItem stage setter."""
|
||||
|
||||
def setUp(self):
|
||||
self.ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
def test_set_stage_valid(self):
|
||||
self.ditem.stage = "Queued"
|
||||
self.assertEqual(self.ditem.stage, "Queued")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Queued")
|
||||
|
||||
self.ditem.stage = "Active"
|
||||
self.assertEqual(self.ditem.stage, "Active")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Pre Processing")
|
||||
|
||||
self.ditem.stage = "Completed"
|
||||
self.assertEqual(self.ditem.stage, "Completed")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Finished")
|
||||
|
||||
self.ditem.stage = "Paused"
|
||||
self.assertEqual(self.ditem.stage, "Paused")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Paused")
|
||||
|
||||
self.ditem.stage = "Error"
|
||||
self.assertEqual(self.ditem.stage, "Error")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Error")
|
||||
|
||||
def test_set_stage_invalid(self):
|
||||
raised = False
|
||||
|
||||
try:
|
||||
self.ditem.stage = "some other status"
|
||||
except ValueError:
|
||||
raised = True
|
||||
|
||||
self.assertTrue(raised)
|
||||
|
||||
|
||||
class TestUpdateStats(unittest.TestCase):
|
||||
|
||||
"""Test case for DownloadItem update_stats method."""
|
||||
|
||||
def setUp(self):
|
||||
self.ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
def test_update_stats(self):
|
||||
path = os.path.join("/home", "user")
|
||||
|
||||
# 1st playlist item
|
||||
|
||||
self.ditem.update_stats({"filename": "somefilename.f1",
|
||||
"extension": ".mp4",
|
||||
"filesize": "9.45MiB",
|
||||
"percent": "2.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:38",
|
||||
"status": "Downloading",
|
||||
"path": path,
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "1"})
|
||||
|
||||
self.assertEqual(self.ditem.path, path)
|
||||
self.assertEqual(self.ditem.filenames, ["somefilename.f1"])
|
||||
self.assertEqual(self.ditem.extensions, [".mp4"])
|
||||
|
||||
# Do not update filesizes unless percentage is 100%
|
||||
# See https://github.com/MrS0m30n3/youtube-dl-gui/issues/162
|
||||
self.assertEqual(self.ditem.filesizes, [])
|
||||
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "somefilename.f1",
|
||||
"extension": ".mp4",
|
||||
"filesize": "9.45MiB",
|
||||
"percent": "2.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:38",
|
||||
"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "1"}
|
||||
)
|
||||
|
||||
# Since the percentage is 100% this should update the filesizes list
|
||||
self.ditem.update_stats({"filesize": "9.45MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading"})
|
||||
|
||||
self.assertEqual(self.ditem.filesizes, [9909043.20])
|
||||
|
||||
|
||||
self.ditem.update_stats({"filename": "somefilename.f2",
|
||||
"extension": ".m4a",
|
||||
"filesize": "2.22MiB",
|
||||
"percent": "33.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:20",
|
||||
"status": "Downloading",
|
||||
"path": path})
|
||||
|
||||
self.assertEqual(self.ditem.path, path)
|
||||
self.assertEqual(self.ditem.filenames, ["somefilename.f1", "somefilename.f2"])
|
||||
self.assertEqual(self.ditem.extensions, [".mp4", ".m4a"])
|
||||
self.assertEqual(self.ditem.filesizes, [9909043.20])
|
||||
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "somefilename.f2",
|
||||
"extension": ".m4a",
|
||||
"filesize": "2.22MiB",
|
||||
"percent": "33.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:20",
|
||||
"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "1"}
|
||||
)
|
||||
|
||||
# Since the percentage is 100% this should update the filesizes list
|
||||
self.ditem.update_stats({"filesize": "2.22MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading"})
|
||||
|
||||
self.assertEqual(self.ditem.filesizes, [9909043.20, 2327838.72])
|
||||
|
||||
# Moving to the 2nd playlist item
|
||||
|
||||
self.ditem.update_stats({"filename": "someotherfilename.f1",
|
||||
"extension": ".mp4",
|
||||
"filesize": "10.25MiB",
|
||||
"percent": "50.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:38",
|
||||
"status": "Downloading",
|
||||
"path": path,
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "2"})
|
||||
|
||||
# We must reset filenames, extensions & filesizes lists when changing playlist index
|
||||
# else the filesizes for the post processed files will be wrong
|
||||
self.assertEqual(self.ditem.filenames, ["someotherfilename.f1"])
|
||||
self.assertEqual(self.ditem.extensions, [".mp4"])
|
||||
self.assertEqual(self.ditem.filesizes, [])
|
||||
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "someotherfilename.f1",
|
||||
"extension": ".mp4",
|
||||
"filesize": "10.25MiB",
|
||||
"percent": "50.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:38",
|
||||
"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "2"}
|
||||
)
|
||||
|
||||
# Since the percentage is 100% this should update the filesizes list
|
||||
self.ditem.update_stats({"filesize": "10.25MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading"})
|
||||
|
||||
self.assertEqual(self.ditem.filesizes, [10747904.0])
|
||||
|
||||
|
||||
self.ditem.update_stats({"filename": "someotherfilename.f2",
|
||||
"extension": ".m4a",
|
||||
"filesize": "3.33MiB",
|
||||
"percent": "33.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:30",
|
||||
"status": "Downloading",
|
||||
"path": path})
|
||||
|
||||
self.assertEqual(self.ditem.path, path)
|
||||
self.assertEqual(self.ditem.filenames, ["someotherfilename.f1", "someotherfilename.f2"])
|
||||
self.assertEqual(self.ditem.extensions, [".mp4", ".m4a"])
|
||||
self.assertEqual(self.ditem.filesizes, [10747904.0])
|
||||
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "someotherfilename.f2",
|
||||
"extension": ".m4a",
|
||||
"filesize": "3.33MiB",
|
||||
"percent": "33.0%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:30",
|
||||
"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "2"}
|
||||
)
|
||||
|
||||
# Since the percentage is 100% this should update the filesizes list
|
||||
self.ditem.update_stats({"filesize": "3.33MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading"})
|
||||
|
||||
self.assertEqual(self.ditem.filesizes, [10747904.0, 3491758.08])
|
||||
|
||||
# Let's move to the 3rd playlist item
|
||||
|
||||
# Here we mimic youtube-dl's "max downloads limit reached"
|
||||
# this line should not reset the filenames, extensions & filesizes lists
|
||||
# since we will lose the ability to play the last playlist item
|
||||
self.ditem.update_stats({"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "3"})
|
||||
|
||||
self.assertEqual(self.ditem.filenames, ["someotherfilename.f1", "someotherfilename.f2"])
|
||||
self.assertEqual(self.ditem.extensions, [".mp4", ".m4a"])
|
||||
self.assertEqual(self.ditem.filesizes, [10747904.0, 3491758.08])
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "someotherfilename.f2",
|
||||
"extension": ".m4a",
|
||||
"filesize": "3.33MiB",
|
||||
"percent": "100%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Downloading",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "3"}
|
||||
)
|
||||
|
||||
def test_update_stats_invalid_input(self):
|
||||
self.assertRaises(AssertionError, self.ditem.update_stats, [])
|
||||
|
||||
def test_update_stats_empty_strings(self):
|
||||
self.ditem.update_stats({"filename": "",
|
||||
"extension": "",
|
||||
"filesize": "",
|
||||
"percent": "",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""})
|
||||
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "url",
|
||||
"extension": "-",
|
||||
"filesize": "-",
|
||||
"percent": "0%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Queued",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""}
|
||||
)
|
||||
|
||||
def test_update_stats_not_string(self):
|
||||
self.ditem.update_stats({"filename": None, "status": 1234, "eta": False})
|
||||
|
||||
self.assertEqual(self.ditem.progress_stats["filename"], "url")
|
||||
self.assertEqual(self.ditem.progress_stats["status"], "Queued")
|
||||
self.assertEqual(self.ditem.progress_stats["eta"], "-")
|
||||
|
||||
|
||||
class TestDownloadItemPrivate(unittest.TestCase):
|
||||
|
||||
"""Test case for private method of the DownloadItem."""
|
||||
|
||||
def test_set_stage(self):
|
||||
ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
active_status = ["Pre Processing", "Downloading", "Post Processing"]
|
||||
complete_status = ["Finished", "Warning", "Already Downloaded"]
|
||||
error_status = ["Error", "Stopped", "Filesize Abort"]
|
||||
|
||||
for status in active_status:
|
||||
ditem._set_stage(status)
|
||||
self.assertEqual(ditem.stage, "Active")
|
||||
|
||||
for status in complete_status:
|
||||
ditem._set_stage(status)
|
||||
self.assertEqual(ditem.stage, "Completed")
|
||||
|
||||
for status in error_status:
|
||||
ditem._set_stage(status)
|
||||
self.assertEqual(ditem.stage, "Error")
|
||||
|
||||
def test_calc_post_proc_size(self):
|
||||
# REFACTOR Not an actual method
|
||||
# should transfer to TestUpdateStats
|
||||
ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
ditem.update_stats({"filename": "file.f123",
|
||||
"extension": ".webm",
|
||||
"filesize": "10.00MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading",
|
||||
"path": "/home/user"})
|
||||
|
||||
ditem.update_stats({"filename": "file.f456",
|
||||
"extension": ".m4a",
|
||||
"filesize": "3.45MiB",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Downloading",
|
||||
"path": "/home/user"})
|
||||
|
||||
# Mimic youtube-dl post process behaviour
|
||||
ditem.update_stats({"filename": "file",
|
||||
"extension": ".webm",
|
||||
"percent": "100%",
|
||||
"speed": "",
|
||||
"eta": "",
|
||||
"status": "Post Processing"})
|
||||
|
||||
self.assertEqual(ditem.filesizes, [10485760.00, 3617587.20, 14103347.20])
|
||||
|
||||
self.assertEqual(
|
||||
ditem.progress_stats,
|
||||
{"filename": "file",
|
||||
"extension": ".webm",
|
||||
"filesize": "13.45MiB",
|
||||
"percent": "100%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Post Processing",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""}
|
||||
)
|
||||
|
||||
|
||||
class TestReset(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadItem reset method."""
|
||||
|
||||
def setUp(self):
|
||||
self.ditem = DownloadItem("url", ["-f", "flv"])
|
||||
|
||||
def test_reset_completed_stage(self):
|
||||
self.ditem._stage = "Completed"
|
||||
self.ditem.path = os.path.join("/home", "user")
|
||||
self.ditem.filenames = ["file"]
|
||||
self.ditem.extensions = [".mp4"]
|
||||
self.ditem.filesizes = [123456.00]
|
||||
self.ditem.progress_stats = {
|
||||
"filename": "file",
|
||||
"extension": ".mp4",
|
||||
"filsize": "6.66MiB",
|
||||
"percent": "100%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Finished",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""
|
||||
}
|
||||
|
||||
self.ditem.reset()
|
||||
|
||||
self.assertEqual(self.ditem._stage, "Queued")
|
||||
self.assertEqual(self.ditem.path, "")
|
||||
self.assertEqual(self.ditem.filenames, [])
|
||||
self.assertEqual(self.ditem.extensions, [])
|
||||
self.assertEqual(self.ditem.filesizes, [])
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "url",
|
||||
"extension": "-",
|
||||
"filesize": "-",
|
||||
"percent": "0%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Queued",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""}
|
||||
)
|
||||
|
||||
def test_reset_error_stage(self):
|
||||
self.ditem._stage = "Error"
|
||||
self.ditem.path = os.path.join("/home", "user")
|
||||
self.ditem.filenames = ["file1", "file2", "file"]
|
||||
self.ditem.extensions = [".mp4", ".m4a", ".mp4"]
|
||||
self.ditem.filesizes = [1234.00, 3421.00, 4655.00]
|
||||
self.ditem.progress_stats = {
|
||||
"filename": "file",
|
||||
"extension": ".mp4",
|
||||
"filsize": "9.45MiB",
|
||||
"percent": "100%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Error",
|
||||
"playlist_size": "10",
|
||||
"playlist_index": "8"
|
||||
}
|
||||
|
||||
self.ditem.reset()
|
||||
|
||||
self.assertEqual(self.ditem._stage, "Queued")
|
||||
self.assertEqual(self.ditem.path, "")
|
||||
self.assertEqual(self.ditem.filenames, [])
|
||||
self.assertEqual(self.ditem.extensions, [])
|
||||
self.assertEqual(self.ditem.filesizes, [])
|
||||
self.assertEqual(
|
||||
self.ditem.progress_stats,
|
||||
{"filename": "url",
|
||||
"extension": "-",
|
||||
"filesize": "-",
|
||||
"percent": "0%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": "Queued",
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""}
|
||||
)
|
||||
|
||||
def test_reset_paused_stage(self):
|
||||
self.ditem._stage = "Paused"
|
||||
# No need to change filanames, extension, etc
|
||||
# since everything in pause state has the default value
|
||||
|
||||
self.ditem.reset()
|
||||
self.assertEqual(self.ditem._stage, "Queued")
|
||||
|
||||
def test_reset_active_stage(self):
|
||||
self.ditem._stage = "Active"
|
||||
self.ditem.path = os.path.join("/home", "user")
|
||||
self.ditem.filenames = ["file1"]
|
||||
self.ditem.extensions = [".mp4"]
|
||||
self.ditem.filesizes = []
|
||||
self.ditem.progress_stats = {
|
||||
"filename": "file1",
|
||||
"extension": ".mp4",
|
||||
"filsize": "9.45MiB",
|
||||
"percent": "75.5%",
|
||||
"speed": "200.00KiB/s",
|
||||
"eta": "00:10",
|
||||
"status": "Downloading"
|
||||
}
|
||||
|
||||
self.assertRaises(RuntimeError, self.ditem.reset)
|
||||
|
||||
|
||||
def main():
|
||||
unittest.main()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
276
tests/test_dlist.py
Normal file
@ -0,0 +1,276 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
"""Contains test cases for the DownloadList object."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
PATH = os.path.realpath(os.path.abspath(__file__))
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(PATH)))
|
||||
|
||||
try:
|
||||
import mock
|
||||
from youtube_dl_gui.downloadmanager import DownloadList, synchronized
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class TestInit(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList init."""
|
||||
|
||||
def test_init(self):
|
||||
mocks = [mock.Mock(object_id=0), mock.Mock(object_id=1)]
|
||||
|
||||
dlist = DownloadList(mocks)
|
||||
self.assertEqual(dlist._items_list, [0, 1])
|
||||
self.assertEqual(dlist._items_dict, {0: mocks[0], 1: mocks[1]})
|
||||
|
||||
def test_init_empty(self):
|
||||
dlist = DownloadList()
|
||||
self.assertEqual(dlist._items_list, [])
|
||||
self.assertEqual(dlist._items_dict, {})
|
||||
|
||||
def test_init_invalid_args(self):
|
||||
self.assertRaises(AssertionError, DownloadList, {})
|
||||
self.assertRaises(AssertionError, DownloadList, ())
|
||||
self.assertRaises(AssertionError, DownloadList, False)
|
||||
|
||||
|
||||
class TestInsert(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList insert method."""
|
||||
|
||||
def test_insert(self):
|
||||
mock_ditem = mock.Mock(object_id=0)
|
||||
|
||||
dlist = DownloadList()
|
||||
dlist.insert(mock_ditem)
|
||||
|
||||
self.assertEqual(dlist._items_list, [0])
|
||||
self.assertEqual(dlist._items_dict, {0: mock_ditem})
|
||||
|
||||
|
||||
class TestRemove(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList remove method."""
|
||||
|
||||
def setUp(self):
|
||||
self.mocks = [mock.Mock(object_id=0), mock.Mock(object_id=1), mock.Mock(object_id=2)]
|
||||
self.dlist = DownloadList(self.mocks)
|
||||
|
||||
def test_remove(self):
|
||||
self.assertTrue(self.dlist.remove(1))
|
||||
|
||||
self.assertEqual(self.dlist._items_list, [0, 2])
|
||||
self.assertEqual(self.dlist._items_dict, {0: self.mocks[0], 2: self.mocks[2]})
|
||||
|
||||
def test_remove_not_exist(self):
|
||||
self.assertRaises(KeyError, self.dlist.remove, 3)
|
||||
|
||||
def test_remove_active(self):
|
||||
self.mocks[1].stage = "Active"
|
||||
|
||||
self.assertFalse(self.dlist.remove(1))
|
||||
self.assertEqual(self.dlist._items_list, [0, 1, 2])
|
||||
self.assertEqual(self.dlist._items_dict, {0: self.mocks[0], 1: self.mocks[1], 2: self.mocks[2]})
|
||||
|
||||
|
||||
class TestFetchNext(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList fetch_next method."""
|
||||
|
||||
def test_fetch_next(self):
|
||||
items_count = 3
|
||||
|
||||
mocks = [mock.Mock(object_id=i, stage="Queued") for i in range(items_count)]
|
||||
|
||||
dlist = DownloadList(mocks)
|
||||
|
||||
for i in range(items_count):
|
||||
self.assertEqual(dlist.fetch_next(), mocks[i])
|
||||
mocks[i].stage = "Active"
|
||||
|
||||
self.assertIsNone(dlist.fetch_next())
|
||||
|
||||
for i in range(items_count):
|
||||
mocks[i].stage = "Completed"
|
||||
|
||||
self.assertIsNone(dlist.fetch_next())
|
||||
|
||||
mocks[1].stage = "Queued" # Re-queue item
|
||||
self.assertEqual(dlist.fetch_next(), mocks[1])
|
||||
|
||||
def test_fetch_next_empty_list(self):
|
||||
dlist = DownloadList()
|
||||
self.assertIsNone(dlist.fetch_next())
|
||||
|
||||
|
||||
class TestMoveUp(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList move_up method."""
|
||||
|
||||
def setUp(self):
|
||||
mocks = [mock.Mock(object_id=i, stage="Queued") for i in range(3)]
|
||||
self.dlist = DownloadList(mocks)
|
||||
|
||||
def test_move_up(self):
|
||||
self.assertTrue(self.dlist.move_up(1))
|
||||
self.assertEqual(self.dlist._items_list, [1, 0, 2])
|
||||
|
||||
def test_move_up_already_on_top(self):
|
||||
self.assertFalse(self.dlist.move_up(0))
|
||||
self.assertEqual(self.dlist._items_list, [0, 1, 2])
|
||||
|
||||
def test_move_up_not_exist(self):
|
||||
self.assertRaises(ValueError, self.dlist.move_up, 666)
|
||||
|
||||
|
||||
class TestMoveDown(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList move_down method."""
|
||||
|
||||
def setUp(self):
|
||||
mocks = [mock.Mock(object_id=i, stage="Queued") for i in range(3)]
|
||||
self.dlist = DownloadList(mocks)
|
||||
|
||||
def test_move_down(self):
|
||||
self.assertTrue(self.dlist.move_down(1))
|
||||
self.assertEqual(self.dlist._items_list, [0, 2, 1])
|
||||
|
||||
def test_move_down_already_on_bottom(self):
|
||||
self.assertFalse(self.dlist.move_down(2))
|
||||
self.assertEqual(self.dlist._items_list, [0, 1, 2])
|
||||
|
||||
def test_move_down_not_exist(self):
|
||||
self.assertRaises(ValueError, self.dlist.move_down, 666)
|
||||
|
||||
|
||||
class TestGetItem(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList get_item method."""
|
||||
|
||||
def test_get_item(self):
|
||||
mocks = [mock.Mock(object_id=i) for i in range(3)]
|
||||
dlist = DownloadList(mocks)
|
||||
|
||||
self.assertEqual(dlist.get_item(0), mocks[0])
|
||||
self.assertEqual(dlist.get_item(2), mocks[2])
|
||||
|
||||
def test_get_item_not_exist(self):
|
||||
dlist = DownloadList()
|
||||
self.assertRaises(KeyError, dlist.get_item, 0)
|
||||
|
||||
|
||||
class TestGetLength(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList __len__ method."""
|
||||
|
||||
def test_get_length(self):
|
||||
dlist = DownloadList([mock.Mock(), mock.Mock()])
|
||||
self.assertEqual(len(dlist), 2)
|
||||
|
||||
def test_get_length_empty_list(self):
|
||||
dlist = DownloadList()
|
||||
self.assertEqual(len(dlist), 0)
|
||||
|
||||
|
||||
class TestHasItem(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList has_item method."""
|
||||
|
||||
def setUp(self):
|
||||
mock_ditem = mock.Mock(object_id=1337)
|
||||
self.dlist = DownloadList([mock_ditem])
|
||||
|
||||
def test_has_item_true(self):
|
||||
self.assertTrue(self.dlist.has_item(1337))
|
||||
|
||||
def test_has_item_false(self):
|
||||
self.assertFalse(self.dlist.has_item(1000))
|
||||
|
||||
|
||||
class TestGetItems(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList get_items method."""
|
||||
|
||||
def test_get_items(self):
|
||||
mocks = [mock.Mock() for _ in range(3)]
|
||||
dlist = DownloadList(mocks)
|
||||
|
||||
self.assertEqual(dlist.get_items(), mocks)
|
||||
|
||||
def test_get_items_empty_list(self):
|
||||
dlist = DownloadList()
|
||||
self.assertEqual(dlist.get_items(), [])
|
||||
|
||||
|
||||
class TestClear(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList clear method."""
|
||||
|
||||
def test_clear(self):
|
||||
dlist = DownloadList([mock.Mock() for _ in range(3)])
|
||||
|
||||
self.assertEqual(len(dlist), 3)
|
||||
dlist.clear()
|
||||
self.assertEqual(len(dlist), 0)
|
||||
|
||||
|
||||
class TestChangeStage(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList change_stage method."""
|
||||
|
||||
def setUp(self):
|
||||
self.mocks = [mock.Mock(object_id=i, stage="Queued") for i in range(3)]
|
||||
self.dlist = DownloadList(self.mocks)
|
||||
|
||||
def test_change_stage(self):
|
||||
self.dlist.change_stage(0, "Active")
|
||||
self.assertEqual(self.mocks[0].stage, "Active")
|
||||
|
||||
def test_change_stage_id_not_exist(self):
|
||||
self.assertRaises(KeyError, self.dlist.change_stage, 3, "Active")
|
||||
|
||||
|
||||
class TestIndex(unittest.TestCase):
|
||||
|
||||
"""Test case for the DownloadList index method."""
|
||||
|
||||
def setUp(self):
|
||||
self.mocks = [mock.Mock(object_id=i) for i in range(3)]
|
||||
self.dlist = DownloadList(self.mocks)
|
||||
|
||||
def test_index(self):
|
||||
self.assertEqual(self.dlist.index(2), 2)
|
||||
|
||||
def test_index_not_exist(self):
|
||||
self.assertEqual(self.dlist.index(3), -1)
|
||||
|
||||
|
||||
class TestSynchronizeDecorator(unittest.TestCase):
|
||||
|
||||
def test_synchronize(self):
|
||||
mock_func = mock.Mock()
|
||||
mock_lock = mock.Mock()
|
||||
|
||||
decorated_func = synchronized(mock_lock)(mock_func)
|
||||
|
||||
self.assertEqual(decorated_func(1, a=2), mock_func.return_value)
|
||||
|
||||
mock_func.assert_called_once_with(1, a=2)
|
||||
mock_lock.acquire.assert_called_once()
|
||||
mock_lock.release.assert_called_once()
|
||||
|
||||
|
||||
def main():
|
||||
unittest.main()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
115
tests/test_parsers.py
Normal file
@ -0,0 +1,115 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
"""Contains test cases for the parsers module."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
PATH = os.path.realpath(os.path.abspath(__file__))
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(PATH)))
|
||||
|
||||
try:
|
||||
from youtube_dl_gui.parsers import OptionsParser
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class TestParse(unittest.TestCase):
|
||||
|
||||
"""Test case for OptionsParser parse method."""
|
||||
|
||||
def test_parse_to_audio_requirement_bug(self):
|
||||
"""Test case for the 'to_audio' requirement."""
|
||||
|
||||
options_dict = { # Extracted from youtube-dlG settings.json
|
||||
'keep_video': False,
|
||||
'opts_win_size': (640, 490),
|
||||
'open_dl_dir': False,
|
||||
'second_video_format': '0',
|
||||
'native_hls': False,
|
||||
'write_subs': False,
|
||||
'workers_number': 3,
|
||||
'max_downloads': 0,
|
||||
'max_filesize': 0,
|
||||
'youtube_dl_debug': False,
|
||||
'shutdown': False,
|
||||
'selected_format': 'mp3',
|
||||
'write_all_subs': False,
|
||||
'enable_log': True,
|
||||
'embed_thumbnail': True,
|
||||
'audio_quality': '9',
|
||||
'subs_lang': 'en',
|
||||
'audio_format': 'mp3',
|
||||
'restrict_filenames': False,
|
||||
'min_filesize_unit': '',
|
||||
'selected_audio_formats': ['mp3', 'm4a', 'vorbis'],
|
||||
'selected_video_formats': ['webm', 'mp4'],
|
||||
'save_path': '/home/user/Workplace/test/youtube',
|
||||
'output_template': '%(uploader)s/%(title)s.%(ext)s',
|
||||
'show_completion_popup': True,
|
||||
'locale_name': 'en_US',
|
||||
'to_audio': False,
|
||||
'confirm_deletion': True,
|
||||
'min_filesize': 0,
|
||||
'save_path_dirs': ['/home/user/Downloads', '/home/user/Desktop', '/home/user/Videos', '/home/user/Music', '/home/user/Workplace/test/youtube'],
|
||||
'sudo_password': '',
|
||||
'video_password': '',
|
||||
'output_format': 1,
|
||||
'embed_subs': False,
|
||||
'write_auto_subs': False,
|
||||
'video_format': '0',
|
||||
'confirm_exit': False,
|
||||
'referer': '',
|
||||
'proxy': '',
|
||||
'add_metadata': False,
|
||||
'ignore_errors': False,
|
||||
'log_time': True,
|
||||
'password': '',
|
||||
'playlist_end': 0,
|
||||
'write_description': False,
|
||||
'retries': 10,
|
||||
'cmd_args': '',
|
||||
'write_thumbnail': False,
|
||||
'playlist_start': 1,
|
||||
'nomtime': False,
|
||||
'write_info': False,
|
||||
'username': '',
|
||||
'main_win_size': (930, 560),
|
||||
'user_agent': '',
|
||||
'max_filesize_unit': '',
|
||||
'ignore_config': False,
|
||||
'youtubedl_path': '/home/user/.config/youtube-dlg'
|
||||
}
|
||||
|
||||
expected_cmd_list = ["--newline",
|
||||
"-x",
|
||||
"--audio-format",
|
||||
"mp3",
|
||||
"--embed-thumbnail",
|
||||
"--audio-quality",
|
||||
"9",
|
||||
"-o",
|
||||
"/home/user/Workplace/test/youtube/%(title)s.%(ext)s"]
|
||||
|
||||
options_parser = OptionsParser()
|
||||
|
||||
self.assertItemsEqual(options_parser.parse(options_dict), expected_cmd_list)
|
||||
|
||||
# Setting 'to_audio' to True should return the same results
|
||||
# since the '-x' flag is already set on audio extraction
|
||||
options_dict["to_audio"] = True
|
||||
|
||||
self.assertItemsEqual(options_parser.parse(options_dict), expected_cmd_list)
|
||||
|
||||
|
||||
def main():
|
||||
unittest.main()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
114
tests/test_utils.py
Normal file
@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""Contains test cases for the utils.py module."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
PATH = os.path.realpath(os.path.abspath(__file__))
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(PATH)))
|
||||
|
||||
try:
|
||||
from youtube_dl_gui import utils
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class TestToBytes(unittest.TestCase):
|
||||
|
||||
"""Test case for the to_bytes method."""
|
||||
|
||||
def test_to_bytes_bytes(self):
|
||||
self.assertEqual(utils.to_bytes("596.00B"), 596.00)
|
||||
self.assertEqual(utils.to_bytes("133.55B"), 133.55)
|
||||
|
||||
def test_to_bytes_kilobytes(self):
|
||||
self.assertEqual(utils.to_bytes("1.00KiB"), 1024.00)
|
||||
self.assertEqual(utils.to_bytes("5.55KiB"), 5683.20)
|
||||
|
||||
def test_to_bytes_megabytes(self):
|
||||
self.assertEqual(utils.to_bytes("13.64MiB"), 14302576.64)
|
||||
self.assertEqual(utils.to_bytes("1.00MiB"), 1048576.00)
|
||||
|
||||
def test_to_bytes_gigabytes(self):
|
||||
self.assertEqual(utils.to_bytes("1.00GiB"), 1073741824.00)
|
||||
self.assertEqual(utils.to_bytes("1.55GiB"), 1664299827.20)
|
||||
|
||||
def test_to_bytes_terabytes(self):
|
||||
self.assertEqual(utils.to_bytes("1.00TiB"), 1099511627776.00)
|
||||
|
||||
|
||||
class TestFormatBytes(unittest.TestCase):
|
||||
|
||||
"""Test case for the format_bytes method."""
|
||||
|
||||
def test_format_bytes_bytes(self):
|
||||
self.assertEqual(utils.format_bytes(518.00), "518.00B")
|
||||
|
||||
def test_format_bytes_kilobytes(self):
|
||||
self.assertEqual(utils.format_bytes(1024.00), "1.00KiB")
|
||||
|
||||
def test_format_bytes_megabytes(self):
|
||||
self.assertEqual(utils.format_bytes(1048576.00), "1.00MiB")
|
||||
|
||||
def test_format_bytes_gigabytes(self):
|
||||
self.assertEqual(utils.format_bytes(1073741824.00), "1.00GiB")
|
||||
|
||||
def test_format_bytes_terabytes(self):
|
||||
self.assertEqual(utils.format_bytes(1099511627776.00), "1.00TiB")
|
||||
|
||||
|
||||
class TestBuildCommand(unittest.TestCase):
|
||||
|
||||
"""Test case for the build_command method."""
|
||||
|
||||
def test_build_command_linux(self):
|
||||
result = "youtube-dl -o \"/home/user/downloads/%(upload_date)s/%(id)" \
|
||||
"s_%(playlist_id)s - %(format)s.%(ext)s\" -f mp4 --ignore-config " \
|
||||
"\"https://www.youtube.com/watch?v=aaaaaaaaaaa&list=AAAAAAAAAAA\""
|
||||
|
||||
options = [
|
||||
"-o",
|
||||
"/home/user/downloads/%(upload_date)s/%(id)s_%(playlist_id)s - %(format)s.%(ext)s",
|
||||
"-f",
|
||||
"mp4",
|
||||
"--ignore-config"
|
||||
]
|
||||
|
||||
url = "https://www.youtube.com/watch?v=aaaaaaaaaaa&list=AAAAAAAAAAA"
|
||||
|
||||
utils.YOUTUBEDL_BIN = "youtube-dl"
|
||||
|
||||
self.assertEqual(utils.build_command(options, url), result)
|
||||
|
||||
def test_build_command_windows(self):
|
||||
result = "youtube-dl.exe -o \"C:\\downloads\\%(upload_date)s\\%(id)" \
|
||||
"s_%(playlist_id)s - %(format)s.%(ext)s\" -f mp4 --ignore-config " \
|
||||
"\"https://www.youtube.com/watch?v=aaaaaaaaaaa&list=AAAAAAAAAAA\""
|
||||
|
||||
options = [
|
||||
"-o",
|
||||
"C:\\downloads\\%(upload_date)s\\%(id)s_%(playlist_id)s - %(format)s.%(ext)s",
|
||||
"-f",
|
||||
"mp4",
|
||||
"--ignore-config"
|
||||
]
|
||||
|
||||
url = "https://www.youtube.com/watch?v=aaaaaaaaaaa&list=AAAAAAAAAAA"
|
||||
|
||||
utils.YOUTUBEDL_BIN = "youtube-dl.exe"
|
||||
|
||||
self.assertEqual(utils.build_command(options, url), result)
|
||||
|
||||
|
||||
def main():
|
||||
unittest.main()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
273
tests/test_widgets.py
Normal file
@ -0,0 +1,273 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
"""Contains test cases for the widgets.py module."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
PATH = os.path.realpath(os.path.abspath(__file__))
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(PATH)))
|
||||
|
||||
|
||||
try:
|
||||
import wx
|
||||
import mock
|
||||
|
||||
from youtube_dl_gui.widgets import (
|
||||
ListBoxWithHeaders,
|
||||
CustomComboBox,
|
||||
ListBoxPopup
|
||||
)
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
class TestListBoxWithHeaders(unittest.TestCase):
|
||||
|
||||
"""Test cases for the ListBoxWithHeaders widget."""
|
||||
|
||||
def setUp(self):
|
||||
self.app = wx.App()
|
||||
|
||||
self.frame = wx.Frame(None)
|
||||
self.listbox = ListBoxWithHeaders(self.frame)
|
||||
|
||||
self.listbox.add_header("Header")
|
||||
self.listbox.add_items(["item%s" % i for i in xrange(10)])
|
||||
|
||||
def tearDown(self):
|
||||
self.frame.Destroy()
|
||||
|
||||
def test_find_string_header_found(self):
|
||||
self.assertEqual(self.listbox.FindString("Header"), 0)
|
||||
|
||||
def test_find_string_header_not_found(self):
|
||||
self.assertEqual(self.listbox.FindString("Header2"), wx.NOT_FOUND)
|
||||
|
||||
def test_find_string_item_found(self):
|
||||
self.assertEqual(self.listbox.FindString("item1"), 2)
|
||||
|
||||
def test_find_string_item_not_found(self):
|
||||
self.assertEqual(self.listbox.FindString("item"), wx.NOT_FOUND)
|
||||
|
||||
def test_get_string_header(self):
|
||||
self.assertEqual(self.listbox.GetString(0), "Header")
|
||||
|
||||
def test_get_string_item(self):
|
||||
self.assertEqual(self.listbox.GetString(10), "item9")
|
||||
|
||||
def test_get_string_item_not_found(self):
|
||||
self.assertEqual(self.listbox.GetString(11), "")
|
||||
|
||||
def test_get_string_item_negative_index(self):
|
||||
self.assertEqual(self.listbox.GetString(-1), "")
|
||||
|
||||
def test_insert_items(self):
|
||||
self.listbox.SetSelection(1)
|
||||
|
||||
self.listbox.InsertItems(["new_item1", "new_item2"], 1)
|
||||
self.assertEqual(self.listbox.GetString(1), "new_item1")
|
||||
self.assertEqual(self.listbox.GetString(2), "new_item2")
|
||||
self.assertEqual(self.listbox.GetString(3), "item0")
|
||||
|
||||
self.assertTrue(self.listbox.IsSelected(3)) # Old selection + 2
|
||||
|
||||
def test_set_selection_header(self):
|
||||
self.listbox.SetSelection(0)
|
||||
self.assertFalse(self.listbox.IsSelected(0))
|
||||
|
||||
def test_set_selection_item_valid_index(self):
|
||||
self.listbox.SetSelection(1)
|
||||
self.assertEqual(self.listbox.GetSelection(), 1)
|
||||
|
||||
def test_set_selection_item_invalid_index(self):
|
||||
self.listbox.SetSelection(1)
|
||||
self.assertEqual(self.listbox.GetSelection(), 1)
|
||||
|
||||
self.listbox.SetSelection(wx.NOT_FOUND)
|
||||
self.assertEqual(self.listbox.GetSelection(), wx.NOT_FOUND)
|
||||
|
||||
def test_set_string_item(self):
|
||||
self.listbox.SetString(1, "item_mod0")
|
||||
self.assertEqual(self.listbox.GetString(1), "item_mod0")
|
||||
|
||||
def test_set_string_header(self):
|
||||
self.listbox.SetString(0, "New header")
|
||||
self.assertEqual(self.listbox.GetString(0), "New header")
|
||||
|
||||
# Make sure that the header is not selectable
|
||||
self.listbox.SetSelection(0)
|
||||
self.assertFalse(self.listbox.IsSelected(0))
|
||||
|
||||
def test_set_string_selection_header(self):
|
||||
self.assertFalse(self.listbox.SetStringSelection("Header"))
|
||||
self.assertFalse(self.listbox.IsSelected(0))
|
||||
|
||||
def test_set_string_selection_item(self):
|
||||
self.assertTrue(self.listbox.SetStringSelection("item1"))
|
||||
self.assertTrue(self.listbox.IsSelected(2))
|
||||
|
||||
def test_get_string_selection(self):
|
||||
self.listbox.SetSelection(1)
|
||||
self.assertEqual(self.listbox.GetStringSelection(), "item0")
|
||||
|
||||
def test_get_string_selection_empty(self):
|
||||
self.assertEqual(self.listbox.GetStringSelection(), "")
|
||||
|
||||
# wx.ItemContainer methods
|
||||
|
||||
def test_append(self):
|
||||
self.listbox.Append("item666")
|
||||
self.assertEqual(self.listbox.GetString(11), "item666")
|
||||
|
||||
def test_append_items(self):
|
||||
self.listbox.AppendItems(["new_item1", "new_item2"])
|
||||
self.assertEqual(self.listbox.GetString(11), "new_item1")
|
||||
self.assertEqual(self.listbox.GetString(12), "new_item2")
|
||||
|
||||
def test_clear(self):
|
||||
self.listbox.Clear()
|
||||
self.assertEqual(self.listbox.GetItems(), [])
|
||||
|
||||
def test_delete(self):
|
||||
self.listbox.Delete(0)
|
||||
self.assertEqual(self.listbox.GetString(0), "item0")
|
||||
|
||||
# Test item selection
|
||||
self.listbox.SetSelection(0)
|
||||
self.assertTrue(self.listbox.IsSelected(0))
|
||||
|
||||
# Test object extra methods
|
||||
|
||||
def test_add_header(self):
|
||||
self.listbox.add_header("Header2")
|
||||
self.listbox.SetSelection(11)
|
||||
self.assertFalse(self.listbox.IsSelected(11))
|
||||
|
||||
@mock.patch("wx.ListBox.Append")
|
||||
def test_add_item_with_prefix(self, mock_append):
|
||||
self.listbox.add_item("new_item")
|
||||
mock_append.assert_called_once_with(ListBoxWithHeaders.TEXT_PREFIX + "new_item")
|
||||
|
||||
@mock.patch("wx.ListBox.Append")
|
||||
def test_add_item_without_prefix(self, mock_append):
|
||||
self.listbox.add_item("new_item", with_prefix=False)
|
||||
mock_append.assert_called_once_with("new_item")
|
||||
|
||||
@mock.patch("wx.ListBox.AppendItems")
|
||||
def test_add_items_with_prefix(self, mock_append):
|
||||
self.listbox.add_items(["new_item1", "new_item2"])
|
||||
mock_append.assert_called_once_with([ListBoxWithHeaders.TEXT_PREFIX + "new_item1",
|
||||
ListBoxWithHeaders.TEXT_PREFIX + "new_item2"])
|
||||
@mock.patch("wx.ListBox.AppendItems")
|
||||
def test_add_items_without_prefix(self, mock_append):
|
||||
self.listbox.add_items(["new_item1", "new_item2"], with_prefix=False)
|
||||
mock_append.assert_called_once_with(["new_item1", "new_item2"])
|
||||
|
||||
|
||||
class TestCustomComboBox(unittest.TestCase):
|
||||
|
||||
"""Test cases for the CustomComboBox widget."""
|
||||
|
||||
def setUp(self):
|
||||
self.app = wx.App()
|
||||
|
||||
self.frame = wx.Frame(None)
|
||||
self.combobox = CustomComboBox(self.frame)
|
||||
|
||||
# Call directly the ListBoxWithHeaders methods
|
||||
self.combobox.listbox.GetControl().add_header("Header")
|
||||
self.combobox.listbox.GetControl().add_items(["item%s" % i for i in xrange(10)])
|
||||
|
||||
def tearDown(self):
|
||||
self.frame.Destroy()
|
||||
|
||||
def test_init(self):
|
||||
combobox = CustomComboBox(self.frame, -1, "item1", choices=["item0", "item1", "item2"])
|
||||
|
||||
self.assertEqual(combobox.GetValue(), "item1")
|
||||
self.assertEqual(combobox.GetCount(), 3)
|
||||
self.assertEqual(combobox.GetSelection(), 1)
|
||||
|
||||
# wx.ComboBox methods
|
||||
# Not all of them since most of them are calls to ListBoxWithHeaders
|
||||
# methods and we already have tests for those
|
||||
|
||||
def test_is_list_empty_false(self):
|
||||
self.assertFalse(self.combobox.IsListEmpty())
|
||||
|
||||
def test_is_list_empty_true(self):
|
||||
self.combobox.Clear()
|
||||
self.assertTrue(self.combobox.IsListEmpty())
|
||||
|
||||
def test_is_text_empty_false(self):
|
||||
self.combobox.SetValue("somevalue")
|
||||
self.assertFalse(self.combobox.IsTextEmpty())
|
||||
|
||||
def test_is_text_empty_true(self):
|
||||
self.assertTrue(self.combobox.IsTextEmpty())
|
||||
|
||||
def test_set_selection_item(self):
|
||||
self.combobox.SetSelection(1)
|
||||
self.assertEqual(self.combobox.GetSelection(), 1)
|
||||
self.assertEqual(self.combobox.GetValue(), "item0")
|
||||
|
||||
def test_set_selection_header(self):
|
||||
self.combobox.SetSelection(0)
|
||||
self.assertEqual(self.combobox.GetSelection(), wx.NOT_FOUND)
|
||||
self.assertEqual(self.combobox.GetValue(), "")
|
||||
|
||||
def test_set_string_selection_item(self):
|
||||
self.combobox.SetStringSelection("item0")
|
||||
self.assertEqual(self.combobox.GetStringSelection(), "item0")
|
||||
self.assertEqual(self.combobox.GetValue(), "item0")
|
||||
|
||||
def test_set_string_selection_header(self):
|
||||
self.combobox.SetStringSelection("Header")
|
||||
self.assertEqual(self.combobox.GetStringSelection(), "")
|
||||
self.assertEqual(self.combobox.GetValue(), "")
|
||||
|
||||
def test_set_string_selection_invalid_string(self):
|
||||
self.combobox.SetStringSelection("abcde")
|
||||
self.assertEqual(self.combobox.GetStringSelection(), "")
|
||||
self.assertEqual(self.combobox.GetValue(), "")
|
||||
|
||||
# wx.ItemContainer methods
|
||||
|
||||
def test_clear(self):
|
||||
self.combobox.SetValue("value")
|
||||
|
||||
self.combobox.Clear()
|
||||
self.assertEqual(self.combobox.GetCount(), 0)
|
||||
self.assertTrue(self.combobox.IsTextEmpty())
|
||||
|
||||
def test_append(self):
|
||||
self.combobox.Append("item10")
|
||||
self.assertEqual(self.combobox.GetCount(), 12)
|
||||
|
||||
def test_append_items(self):
|
||||
self.combobox.AppendItems(["item10", "item11"])
|
||||
self.assertEqual(self.combobox.GetCount(), 13)
|
||||
|
||||
def test_delete(self):
|
||||
self.combobox.Delete(1)
|
||||
self.assertEqual(self.combobox.GetString(1), "item1")
|
||||
|
||||
# wx.TextEntry methods
|
||||
|
||||
def test_get_value(self):
|
||||
self.combobox.SetValue("value")
|
||||
self.assertEqual(self.combobox.GetValue(), "value")
|
||||
|
||||
|
||||
def main():
|
||||
unittest.main()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -25,6 +25,8 @@ except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
__packagename__ = "youtube_dl_gui"
|
||||
|
||||
# For package use
|
||||
from .version import __version__
|
||||
from .info import (
|
||||
@ -38,6 +40,9 @@ from .info import (
|
||||
__descriptionfull__,
|
||||
)
|
||||
|
||||
gettext.install(__packagename__)
|
||||
from .formats import reload_strings
|
||||
|
||||
from .logmanager import LogManager
|
||||
from .optionsmanager import OptionsManager
|
||||
|
||||
@ -61,11 +66,12 @@ if opt_manager.options['enable_log']:
|
||||
locale_dir = get_locale_file()
|
||||
|
||||
try:
|
||||
gettext.translation('youtube_dl_gui', locale_dir, [opt_manager.options['locale_name']]).install(unicode=True)
|
||||
gettext.translation(__packagename__, locale_dir, [opt_manager.options['locale_name']]).install(unicode=True)
|
||||
except IOError:
|
||||
opt_manager.options['locale_name'] = 'en_US'
|
||||
gettext.install('youtube_dl_gui')
|
||||
gettext.install(__packagename__)
|
||||
|
||||
reload_strings()
|
||||
|
||||
from .mainframe import MainFrame
|
||||
|
||||
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 574 B After Width: | Height: | Size: 574 B |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
BIN
youtube_dl_gui/data/pixmaps/arrow_down_32px.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
youtube_dl_gui/data/pixmaps/arrow_up_32px.png
Normal file
After Width: | Height: | Size: 215 B |
BIN
youtube_dl_gui/data/pixmaps/camera_32px.png
Normal file
After Width: | Height: | Size: 262 B |
BIN
youtube_dl_gui/data/pixmaps/cloud_download_32px.png
Normal file
After Width: | Height: | Size: 478 B |
BIN
youtube_dl_gui/data/pixmaps/delete_32px.png
Normal file
After Width: | Height: | Size: 255 B |
BIN
youtube_dl_gui/data/pixmaps/folder_32px.png
Normal file
After Width: | Height: | Size: 269 B |
2
youtube_dl_gui/data/pixmaps/icons-license
Normal file
@ -0,0 +1,2 @@
|
||||
icons from: https://www.iconfinder.com/iconsets/google-material-design-icons
|
||||
license: https://creativecommons.org/licenses/by-sa/3.0
|
BIN
youtube_dl_gui/data/pixmaps/pause_32px.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
youtube_dl_gui/data/pixmaps/play_arrow_32px.png
Normal file
After Width: | Height: | Size: 291 B |
BIN
youtube_dl_gui/data/pixmaps/reload_32px.png
Normal file
After Width: | Height: | Size: 612 B |
BIN
youtube_dl_gui/data/pixmaps/settings_20px.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
youtube_dl_gui/data/pixmaps/stop_32px.png
Normal file
After Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 361 KiB |
BIN
youtube_dl_gui/data/pixmaps/youtube-dl-gui.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
@ -360,12 +360,22 @@ def extract_data(stdout):
|
||||
'playlist_size' : The number of videos in the playlist.
|
||||
|
||||
"""
|
||||
def extract_filename(input_data):
|
||||
path, fullname = os.path.split(input_data.strip("\""))
|
||||
filename, extension = os.path.splitext(fullname)
|
||||
|
||||
return path, filename, extension
|
||||
|
||||
data_dictionary = {}
|
||||
|
||||
if not stdout:
|
||||
return data_dictionary
|
||||
|
||||
stdout = [string for string in stdout.split(' ') if string != '']
|
||||
# We want to keep the spaces in order to extract filenames with
|
||||
# multiple whitespaces correctly. We also keep a copy of the old
|
||||
# 'stdout' for backward compatibility with the old code
|
||||
stdout_with_spaces = stdout.split(' ')
|
||||
stdout = stdout.split()
|
||||
|
||||
stdout[0] = stdout[0].lstrip('\r')
|
||||
|
||||
@ -374,14 +384,11 @@ def extract_data(stdout):
|
||||
|
||||
# Get path, filename & extension
|
||||
if stdout[1] == 'Destination:':
|
||||
path, fullname = os.path.split(' '.join(stdout[2:]))
|
||||
filename, extension = os.path.splitext(fullname)
|
||||
path, filename, extension = extract_filename(' '.join(stdout_with_spaces[2:]))
|
||||
|
||||
data_dictionary['path'] = path
|
||||
data_dictionary['filename'] = filename
|
||||
data_dictionary['extension'] = extension
|
||||
# remove the format that youtube-dl adds during the merging
|
||||
# process at end of the filename
|
||||
data_dictionary['filename'] = re.sub('\.f[0-9]{1,3}$', '', filename)
|
||||
|
||||
# Get progress info
|
||||
if '%' in stdout[1]:
|
||||
@ -401,9 +408,21 @@ def extract_data(stdout):
|
||||
data_dictionary['playlist_index'] = stdout[3]
|
||||
data_dictionary['playlist_size'] = stdout[5]
|
||||
|
||||
# Remove the 'and merged' part from stdout when using ffmpeg to merge the formats
|
||||
if stdout[-3] == 'downloaded' and stdout [-1] == 'merged':
|
||||
stdout = stdout[:-2]
|
||||
stdout_with_spaces = stdout_with_spaces[:-2]
|
||||
|
||||
data_dictionary['percent'] = '100%'
|
||||
|
||||
# Get file already downloaded status
|
||||
if stdout[-1] == 'downloaded':
|
||||
data_dictionary['status'] = 'Already Downloaded'
|
||||
path, filename, extension = extract_filename(' '.join(stdout_with_spaces[1:-4]))
|
||||
|
||||
data_dictionary['path'] = path
|
||||
data_dictionary['filename'] = filename
|
||||
data_dictionary['extension'] = extension
|
||||
|
||||
# Get filesize abort status
|
||||
if stdout[-1] == 'Aborting.':
|
||||
@ -427,7 +446,22 @@ def extract_data(stdout):
|
||||
|
||||
# Get final extension after merging process
|
||||
if stdout[1] == 'Merging':
|
||||
data_dictionary['extension'] = os.path.splitext(' '.join(stdout[4:])[:-1])[1]
|
||||
path, filename, extension = extract_filename(' '.join(stdout_with_spaces[4:]))
|
||||
|
||||
data_dictionary['path'] = path
|
||||
data_dictionary['filename'] = filename
|
||||
data_dictionary['extension'] = extension
|
||||
|
||||
# Get final extension ffmpeg post process simple (not file merge)
|
||||
if stdout[1] == 'Destination:':
|
||||
path, filename, extension = extract_filename(' '.join(stdout_with_spaces[2:]))
|
||||
|
||||
data_dictionary['path'] = path
|
||||
data_dictionary['filename'] = filename
|
||||
data_dictionary['extension'] = extension
|
||||
|
||||
elif stdout[0][0] != '[' or stdout[0] == '[debug]':
|
||||
pass # Just ignore this output
|
||||
|
||||
else:
|
||||
data_dictionary['status'] = 'Pre Processing'
|
||||
|
@ -26,6 +26,7 @@ import os.path
|
||||
|
||||
from threading import (
|
||||
Thread,
|
||||
RLock,
|
||||
Lock
|
||||
)
|
||||
|
||||
@ -39,13 +40,311 @@ from .downloaders import YoutubeDLDownloader
|
||||
|
||||
from .utils import (
|
||||
YOUTUBEDL_BIN,
|
||||
os_path_exists
|
||||
os_path_exists,
|
||||
format_bytes,
|
||||
to_string,
|
||||
to_bytes
|
||||
)
|
||||
|
||||
|
||||
MANAGER_PUB_TOPIC = 'dlmanager'
|
||||
WORKER_PUB_TOPIC = 'dlworker'
|
||||
|
||||
_SYNC_LOCK = RLock()
|
||||
|
||||
# Decorator that adds thread synchronization to a function
|
||||
def synchronized(lock):
|
||||
def _decorator(func):
|
||||
def _wrapper(*args, **kwargs):
|
||||
lock.acquire()
|
||||
ret_value = func(*args, **kwargs)
|
||||
lock.release()
|
||||
return ret_value
|
||||
return _wrapper
|
||||
return _decorator
|
||||
|
||||
|
||||
class DownloadItem(object):
|
||||
|
||||
"""Object that represents a download.
|
||||
|
||||
Attributes:
|
||||
STAGES (tuple): Main stages of the download item.
|
||||
|
||||
ACTIVE_STAGES (tuple): Sub stages of the 'Active' stage.
|
||||
|
||||
COMPLETED_STAGES (tuple): Sub stages of the 'Completed' stage.
|
||||
|
||||
ERROR_STAGES (tuple): Sub stages of the 'Error' stage.
|
||||
|
||||
Args:
|
||||
url (string): URL that corresponds to the download item.
|
||||
|
||||
options (list): Options list to use during the download phase.
|
||||
|
||||
"""
|
||||
|
||||
STAGES = ("Queued", "Active", "Paused", "Completed", "Error")
|
||||
|
||||
ACTIVE_STAGES = ("Pre Processing", "Downloading", "Post Processing")
|
||||
|
||||
COMPLETED_STAGES = ("Finished", "Warning", "Already Downloaded")
|
||||
|
||||
ERROR_STAGES = ("Error", "Stopped", "Filesize Abort")
|
||||
|
||||
def __init__(self, url, options):
|
||||
self.url = url
|
||||
self.options = options
|
||||
self.object_id = hash(url + to_string(options))
|
||||
|
||||
self.reset()
|
||||
|
||||
@property
|
||||
def stage(self):
|
||||
return self._stage
|
||||
|
||||
@stage.setter
|
||||
def stage(self, value):
|
||||
if value not in self.STAGES:
|
||||
raise ValueError(value)
|
||||
|
||||
if value == "Queued":
|
||||
self.progress_stats["status"] = value
|
||||
if value == "Active":
|
||||
self.progress_stats["status"] = self.ACTIVE_STAGES[0]
|
||||
if value == "Completed":
|
||||
self.progress_stats["status"] = self.COMPLETED_STAGES[0]
|
||||
if value == "Paused":
|
||||
self.progress_stats["status"] = value
|
||||
if value == "Error":
|
||||
self.progress_stats["status"] = self.ERROR_STAGES[0]
|
||||
|
||||
self._stage = value
|
||||
|
||||
def reset(self):
|
||||
if hasattr(self, "_stage") and self._stage == self.STAGES[1]:
|
||||
raise RuntimeError("Cannot reset an 'Active' item")
|
||||
|
||||
self._stage = self.STAGES[0]
|
||||
self.path = ""
|
||||
self.filenames = []
|
||||
self.extensions = []
|
||||
self.filesizes = []
|
||||
|
||||
self.default_values = {
|
||||
"filename": self.url,
|
||||
"extension": "-",
|
||||
"filesize": "-",
|
||||
"percent": "0%",
|
||||
"speed": "-",
|
||||
"eta": "-",
|
||||
"status": self.stage,
|
||||
"playlist_size": "",
|
||||
"playlist_index": ""
|
||||
}
|
||||
|
||||
self.progress_stats = dict(self.default_values)
|
||||
|
||||
# Keep track when the 'playlist_index' changes
|
||||
self.playlist_index_changed = False
|
||||
|
||||
def get_files(self):
|
||||
"""Returns a list that contains all the system files bind to this object."""
|
||||
files = []
|
||||
|
||||
for index, item in enumerate(self.filenames):
|
||||
filename = item + self.extensions[index]
|
||||
files.append(os.path.join(self.path, filename))
|
||||
|
||||
return files
|
||||
|
||||
def update_stats(self, stats_dict):
|
||||
"""Updates the progress_stats dict from the given dictionary."""
|
||||
assert isinstance(stats_dict, dict)
|
||||
|
||||
for key in stats_dict:
|
||||
if key in self.progress_stats:
|
||||
value = stats_dict[key]
|
||||
|
||||
if not isinstance(value, basestring) or not value:
|
||||
self.progress_stats[key] = self.default_values[key]
|
||||
else:
|
||||
self.progress_stats[key] = value
|
||||
|
||||
# Extract extra stuff
|
||||
if "playlist_index" in stats_dict:
|
||||
self.playlist_index_changed = True
|
||||
|
||||
if "filename" in stats_dict:
|
||||
|
||||
# Reset filenames, extensions & filesizes lists when changing playlist item
|
||||
if self.playlist_index_changed:
|
||||
self.filenames = []
|
||||
self.extensions = []
|
||||
self.filesizes = []
|
||||
|
||||
self.playlist_index_changed = False
|
||||
|
||||
self.filenames.append(stats_dict["filename"])
|
||||
|
||||
if "extension" in stats_dict:
|
||||
self.extensions.append(stats_dict["extension"])
|
||||
|
||||
if "path" in stats_dict:
|
||||
self.path = stats_dict["path"]
|
||||
|
||||
if "filesize" in stats_dict:
|
||||
if stats_dict["percent"] == "100%" and len(self.filesizes) < len(self.filenames):
|
||||
filesize = stats_dict["filesize"].lstrip("~") # HLS downloader etc
|
||||
self.filesizes.append(to_bytes(filesize))
|
||||
|
||||
if "status" in stats_dict:
|
||||
# If we are post processing try to calculate the size of
|
||||
# the output file since youtube-dl does not
|
||||
if stats_dict["status"] == self.ACTIVE_STAGES[2] and len(self.filesizes) == 2:
|
||||
post_proc_filesize = self.filesizes[0] + self.filesizes[1]
|
||||
|
||||
self.filesizes.append(post_proc_filesize)
|
||||
self.progress_stats["filesize"] = format_bytes(post_proc_filesize)
|
||||
|
||||
self._set_stage(stats_dict["status"])
|
||||
|
||||
def _set_stage(self, status):
|
||||
if status in self.ACTIVE_STAGES:
|
||||
self._stage = self.STAGES[1]
|
||||
|
||||
if status in self.COMPLETED_STAGES:
|
||||
self._stage = self.STAGES[3]
|
||||
|
||||
if status in self.ERROR_STAGES:
|
||||
self._stage = self.STAGES[4]
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.object_id == other.object_id
|
||||
|
||||
|
||||
|
||||
class DownloadList(object):
|
||||
|
||||
"""List like data structure that contains DownloadItems.
|
||||
|
||||
Args:
|
||||
items (list): List that contains DownloadItems.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, items=None):
|
||||
assert isinstance(items, list) or items is None
|
||||
|
||||
if items is None:
|
||||
self._items_dict = {} # Speed up lookup
|
||||
self._items_list = [] # Keep the sequence
|
||||
else:
|
||||
self._items_list = [item.object_id for item in items]
|
||||
self._items_dict = {item.object_id: item for item in items}
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def clear(self):
|
||||
"""Removes all the items from the list even the 'Active' ones."""
|
||||
self._items_list = []
|
||||
self._items_dict = {}
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def insert(self, item):
|
||||
"""Inserts the given item to the list. Does not check for duplicates. """
|
||||
self._items_list.append(item.object_id)
|
||||
self._items_dict[item.object_id] = item
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def remove(self, object_id):
|
||||
"""Removes an item from the list.
|
||||
|
||||
Removes the item with the corresponding object_id from
|
||||
the list if the item is not in 'Active' state.
|
||||
|
||||
Returns:
|
||||
True on success else False.
|
||||
|
||||
"""
|
||||
if self._items_dict[object_id].stage != "Active":
|
||||
self._items_list.remove(object_id)
|
||||
del self._items_dict[object_id]
|
||||
|
||||
return True
|
||||
return False
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def fetch_next(self):
|
||||
"""Returns the next queued item on the list.
|
||||
|
||||
Returns:
|
||||
Next queued item or None if no other item exist.
|
||||
|
||||
"""
|
||||
for object_id in self._items_list:
|
||||
cur_item = self._items_dict[object_id]
|
||||
|
||||
if cur_item.stage == "Queued":
|
||||
return cur_item
|
||||
|
||||
return None
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def move_up(self, object_id):
|
||||
"""Moves the item with the corresponding object_id up to the list."""
|
||||
index = self._items_list.index(object_id)
|
||||
|
||||
if index > 0:
|
||||
self._swap(index, index - 1)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def move_down(self, object_id):
|
||||
"""Moves the item with the corresponding object_id down to the list."""
|
||||
index = self._items_list.index(object_id)
|
||||
|
||||
if index < (len(self._items_list) - 1):
|
||||
self._swap(index, index + 1)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def get_item(self, object_id):
|
||||
"""Returns the DownloadItem with the given object_id."""
|
||||
return self._items_dict[object_id]
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def has_item(self, object_id):
|
||||
"""Returns True if the given object_id is in the list else False."""
|
||||
return object_id in self._items_list
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def get_items(self):
|
||||
"""Returns a list with all the items."""
|
||||
return [self._items_dict[object_id] for object_id in self._items_list]
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def change_stage(self, object_id, new_stage):
|
||||
"""Change the stage of the item with the given object_id."""
|
||||
self._items_dict[object_id].stage = new_stage
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def index(self, object_id):
|
||||
"""Get the zero based index of the item with the given object_id."""
|
||||
if object_id in self._items_list:
|
||||
return self._items_list.index(object_id)
|
||||
return -1
|
||||
|
||||
@synchronized(_SYNC_LOCK)
|
||||
def __len__(self):
|
||||
return len(self._items_list)
|
||||
|
||||
def _swap(self, index1, index2):
|
||||
self._items_list[index1], self._items_list[index2] = self._items_list[index2], self._items_list[index1]
|
||||
|
||||
|
||||
class DownloadManager(Thread):
|
||||
|
||||
@ -55,9 +354,7 @@ class DownloadManager(Thread):
|
||||
WAIT_TIME (float): Time in seconds to sleep.
|
||||
|
||||
Args:
|
||||
urls_list (list): Python list that contains multiple dictionaries
|
||||
with the url to download and the corresponding row(index) in
|
||||
which the worker should send the download process information.
|
||||
download_list (DownloadList): List that contains items to download.
|
||||
|
||||
opt_manager (optionsmanager.OptionsManager): Object responsible for
|
||||
managing the youtubedlg options.
|
||||
@ -69,11 +366,12 @@ class DownloadManager(Thread):
|
||||
|
||||
WAIT_TIME = 0.1
|
||||
|
||||
def __init__(self, urls_list, opt_manager, log_manager=None):
|
||||
def __init__(self, parent, download_list, opt_manager, log_manager=None):
|
||||
super(DownloadManager, self).__init__()
|
||||
self.parent = parent
|
||||
self.opt_manager = opt_manager
|
||||
self.log_manager = log_manager
|
||||
self.urls_list = urls_list
|
||||
self.download_list = download_list
|
||||
|
||||
self._time_it_took = 0
|
||||
self._successful = 0
|
||||
@ -82,7 +380,7 @@ class DownloadManager(Thread):
|
||||
# Init the custom workers thread pool
|
||||
log_lock = None if log_manager is None else Lock()
|
||||
wparams = (opt_manager, self._youtubedl_path(), log_manager, log_lock)
|
||||
self._workers = [Worker(*wparams) for i in xrange(opt_manager.options['workers_number'])]
|
||||
self._workers = [Worker(*wparams) for _ in xrange(opt_manager.options["workers_number"])]
|
||||
|
||||
self.start()
|
||||
|
||||
@ -102,16 +400,19 @@ class DownloadManager(Thread):
|
||||
self._time_it_took = time.time()
|
||||
|
||||
while self._running:
|
||||
for worker in self._workers:
|
||||
if worker.available() and self.urls_list:
|
||||
worker.download(self.urls_list.pop(0))
|
||||
item = self.download_list.fetch_next()
|
||||
|
||||
time.sleep(self.WAIT_TIME)
|
||||
if item is not None:
|
||||
worker = self._get_worker()
|
||||
|
||||
if not self.urls_list and self._jobs_done():
|
||||
if worker is not None:
|
||||
worker.download(item.url, item.options, item.object_id)
|
||||
self.download_list.change_stage(item.object_id, "Active")
|
||||
|
||||
if item is None and self._jobs_done():
|
||||
break
|
||||
|
||||
self._talk_to_gui('report_active')
|
||||
time.sleep(self.WAIT_TIME)
|
||||
|
||||
# Close all the workers
|
||||
for worker in self._workers:
|
||||
@ -136,14 +437,14 @@ class DownloadManager(Thread):
|
||||
active_items = (workers that work) + (items waiting in the url_list).
|
||||
|
||||
"""
|
||||
counter = 0
|
||||
for worker in self._workers:
|
||||
if not worker.available():
|
||||
counter += 1
|
||||
#counter = 0
|
||||
#for worker in self._workers:
|
||||
#if not worker.available():
|
||||
#counter += 1
|
||||
|
||||
counter += len(self.urls_list)
|
||||
#counter += len(self.download_list)
|
||||
|
||||
return counter
|
||||
return len(self.download_list)
|
||||
|
||||
def stop_downloads(self):
|
||||
"""Stop the download process. Also send 'closing'
|
||||
@ -158,7 +459,7 @@ class DownloadManager(Thread):
|
||||
self._running = False
|
||||
|
||||
def add_url(self, url):
|
||||
"""Add given url to the urls_list.
|
||||
"""Add given url to the download_list.
|
||||
|
||||
Args:
|
||||
url (dict): Python dictionary that contains two keys.
|
||||
@ -167,7 +468,7 @@ class DownloadManager(Thread):
|
||||
download process.
|
||||
|
||||
"""
|
||||
self.urls_list.append(url)
|
||||
self.download_list.append(url)
|
||||
|
||||
def send_to_worker(self, data):
|
||||
"""Send data to the Workers.
|
||||
@ -204,8 +505,17 @@ class DownloadManager(Thread):
|
||||
|
||||
def _check_youtubedl(self):
|
||||
"""Check if youtube-dl binary exists. If not try to download it. """
|
||||
if not os_path_exists(self._youtubedl_path()):
|
||||
UpdateThread(self.opt_manager.options['youtubedl_path'], True).join()
|
||||
if not os_path_exists(self._youtubedl_path()) and self.parent.update_thread is None:
|
||||
self.parent.update_thread = UpdateThread(self.opt_manager.options['youtubedl_path'], True)
|
||||
self.parent.update_thread.join()
|
||||
self.parent.update_thread = None
|
||||
|
||||
def _get_worker(self):
|
||||
for worker in self._workers:
|
||||
if worker.available():
|
||||
return worker
|
||||
|
||||
return None
|
||||
|
||||
def _jobs_done(self):
|
||||
"""Returns True if the workers have finished their jobs else False. """
|
||||
@ -260,6 +570,7 @@ class Worker(Thread):
|
||||
self._options_parser = OptionsParser()
|
||||
self._successful = 0
|
||||
self._running = True
|
||||
self._options = None
|
||||
|
||||
self._wait_for_reply = False
|
||||
|
||||
@ -284,19 +595,20 @@ class Worker(Thread):
|
||||
def run(self):
|
||||
while self._running:
|
||||
if self._data['url'] is not None:
|
||||
options = self._options_parser.parse(self.opt_manager.options)
|
||||
ret_code = self._downloader.download(self._data['url'], options)
|
||||
#options = self._options_parser.parse(self.opt_manager.options)
|
||||
ret_code = self._downloader.download(self._data['url'], self._options)
|
||||
|
||||
if (ret_code == YoutubeDLDownloader.OK or
|
||||
ret_code == YoutubeDLDownloader.ALREADY):
|
||||
ret_code == YoutubeDLDownloader.ALREADY or
|
||||
ret_code == YoutubeDLDownloader.WARNING):
|
||||
self._successful += 1
|
||||
|
||||
# Ask GUI for name updates
|
||||
self._talk_to_gui('receive', {'source': 'filename', 'dest': 'new_filename'})
|
||||
#self._talk_to_gui('receive', {'source': 'filename', 'dest': 'new_filename'})
|
||||
|
||||
# Wait until you get a reply
|
||||
while self._wait_for_reply:
|
||||
time.sleep(self.WAIT_TIME)
|
||||
#while self._wait_for_reply:
|
||||
#time.sleep(self.WAIT_TIME)
|
||||
|
||||
self._reset()
|
||||
|
||||
@ -305,7 +617,7 @@ class Worker(Thread):
|
||||
# Call the destructor function of YoutubeDLDownloader object
|
||||
self._downloader.close()
|
||||
|
||||
def download(self, item):
|
||||
def download(self, url, options, object_id):
|
||||
"""Download given item.
|
||||
|
||||
Args:
|
||||
@ -315,8 +627,9 @@ class Worker(Thread):
|
||||
download process.
|
||||
|
||||
"""
|
||||
self._data['url'] = item['url']
|
||||
self._data['index'] = item['index']
|
||||
self._data['url'] = url
|
||||
self._options = options
|
||||
self._data['index'] = object_id
|
||||
|
||||
def stop_download(self):
|
||||
"""Stop the download process of the worker. """
|
||||
@ -381,26 +694,28 @@ class Worker(Thread):
|
||||
extract_data() function under the downloaders.py module.
|
||||
|
||||
"""
|
||||
# Temp dictionary which holds the updates
|
||||
temp_dict = {}
|
||||
## Temp dictionary which holds the updates
|
||||
#temp_dict = {}
|
||||
|
||||
# Update each key
|
||||
for key in data:
|
||||
if self._data[key] != data[key]:
|
||||
self._data[key] = data[key]
|
||||
temp_dict[key] = data[key]
|
||||
## Update each key
|
||||
#for key in data:
|
||||
#if self._data[key] != data[key]:
|
||||
#self._data[key] = data[key]
|
||||
#temp_dict[key] = data[key]
|
||||
|
||||
# Build the playlist status if there is an update
|
||||
if self._data['playlist_index'] is not None:
|
||||
if 'status' in temp_dict or 'playlist_index' in temp_dict:
|
||||
temp_dict['status'] = '{status} {index}/{size}'.format(
|
||||
status=self._data['status'],
|
||||
index=self._data['playlist_index'],
|
||||
size=self._data['playlist_size']
|
||||
)
|
||||
## Build the playlist status if there is an update
|
||||
## REFACTOR re-implement this on DownloadItem or ListCtrl level?
|
||||
##if self._data['playlist_index'] is not None:
|
||||
##if 'status' in temp_dict or 'playlist_index' in temp_dict:
|
||||
##temp_dict['status'] = '{status} {index}/{size}'.format(
|
||||
##status=self._data['status'],
|
||||
##index=self._data['playlist_index'],
|
||||
##size=self._data['playlist_size']
|
||||
##)
|
||||
|
||||
if len(temp_dict):
|
||||
self._talk_to_gui('send', temp_dict)
|
||||
#if len(temp_dict):
|
||||
#self._talk_to_gui('send', temp_dict)
|
||||
self._talk_to_gui('send', data)
|
||||
|
||||
def _talk_to_gui(self, signal, data):
|
||||
"""Communicate with the GUI using wxCallAfter and wxPublisher.
|
||||
|
182
youtube_dl_gui/formats.py
Normal file
@ -0,0 +1,182 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
import gettext
|
||||
|
||||
from .utils import TwoWayOrderedDict as tdict
|
||||
|
||||
|
||||
OUTPUT_FORMATS = tdict([
|
||||
(0, _("ID")),
|
||||
(1, _("Title")),
|
||||
(2, _("Title + ID")),
|
||||
(4, _("Title + Quality")),
|
||||
(5, _("Title + ID + Quality")),
|
||||
(3, _("Custom"))
|
||||
])
|
||||
|
||||
|
||||
DEFAULT_FORMATS = tdict([
|
||||
("0", _("default"))
|
||||
])
|
||||
|
||||
|
||||
VIDEO_FORMATS = tdict([
|
||||
("3gp", "3gp"),
|
||||
("17", "3gp [144p]"),
|
||||
("36", "3gp [240p]"),
|
||||
("flv", "flv"),
|
||||
("5", "flv [240p]"),
|
||||
("34", "flv [360p]"),
|
||||
("35", "flv [480p]"),
|
||||
("webm", "webm"),
|
||||
("43", "webm [360p]"),
|
||||
("44", "webm [480p]"),
|
||||
("45", "webm [720p]"),
|
||||
("46", "webm [1080p]"),
|
||||
("mp4", "mp4"),
|
||||
("18", "mp4 [360p]"),
|
||||
("22", "mp4 [720p]"),
|
||||
("37", "mp4 [1080p]"),
|
||||
("38", "mp4 [4K]"),
|
||||
("160", "mp4 [144p] (DASH Video)"),
|
||||
("133", "mp4 [240p] (DASH Video)"),
|
||||
("134", "mp4 [360p] (DASH Video)"),
|
||||
("135", "mp4 [480p] (DASH Video)"),
|
||||
("136", "mp4 [720p] (DASH Video)"),
|
||||
("137", "mp4 [1080p] (DASH Video)"),
|
||||
("264", "mp4 [1440p] (DASH Video)"),
|
||||
("138", "mp4 [2160p] (DASH Video)"),
|
||||
("242", "webm [240p] (DASH Video)"),
|
||||
("243", "webm [360p] (DASH Video)"),
|
||||
("244", "webm [480p] (DASH Video)"),
|
||||
("247", "webm [720p] (DASH Video)"),
|
||||
("248", "webm [1080p] (DASH Video)"),
|
||||
("271", "webm [1440p] (DASH Video)"),
|
||||
("272", "webm [2160p] (DASH Video)"),
|
||||
("82", "mp4 [360p] (3D)"),
|
||||
("83", "mp4 [480p] (3D)"),
|
||||
("84", "mp4 [720p] (3D)"),
|
||||
("85", "mp4 [1080p] (3D)"),
|
||||
("100", "webm [360p] (3D)"),
|
||||
("101", "webm [480p] (3D)"),
|
||||
("102", "webm [720p] (3D)"),
|
||||
("139", "m4a 48k (DASH Audio)"),
|
||||
("140", "m4a 128k (DASH Audio)"),
|
||||
("141", "m4a 256k (DASH Audio)"),
|
||||
("171", "webm 48k (DASH Audio)"),
|
||||
("172", "webm 256k (DASH Audio)")
|
||||
])
|
||||
|
||||
|
||||
AUDIO_FORMATS = tdict([
|
||||
("mp3", "mp3"),
|
||||
("wav", "wav"),
|
||||
("aac", "aac"),
|
||||
("m4a", "m4a"),
|
||||
("vorbis", "vorbis"),
|
||||
("opus", "opus")
|
||||
])
|
||||
|
||||
|
||||
FORMATS = DEFAULT_FORMATS.copy()
|
||||
FORMATS.update(VIDEO_FORMATS)
|
||||
FORMATS.update(AUDIO_FORMATS)
|
||||
|
||||
|
||||
def reload_strings():
|
||||
# IF YOU DONT WANT YOUR EYES TO BLEED STOP HERE
|
||||
# YOU HAVE BEEN WARNED
|
||||
# DO NOT LOOK THE CODE BELOW
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#NOTE Remove
|
||||
# Code is so messed up that i need to reload strings else
|
||||
# the translations wont work on the about gettext tags
|
||||
global OUTPUT_FORMATS
|
||||
global DEFAULT_FORMATS
|
||||
global VIDEO_FORMATS
|
||||
global AUDIO_FORMATS
|
||||
global FORMATS
|
||||
|
||||
OUTPUT_FORMATS = tdict([
|
||||
(0, _("ID")),
|
||||
(1, _("Title")),
|
||||
(2, _("Title + ID")),
|
||||
(4, _("Title + Quality")),
|
||||
(5, _("Title + ID + Quality")),
|
||||
(3, _("Custom"))
|
||||
])
|
||||
|
||||
|
||||
DEFAULT_FORMATS = tdict([
|
||||
("0", _("default"))
|
||||
])
|
||||
|
||||
|
||||
VIDEO_FORMATS = tdict([
|
||||
("3gp", "3gp"),
|
||||
("17", "3gp [144p]"),
|
||||
("36", "3gp [240p]"),
|
||||
("flv", "flv"),
|
||||
("5", "flv [240p]"),
|
||||
("34", "flv [360p]"),
|
||||
("35", "flv [480p]"),
|
||||
("webm", "webm"),
|
||||
("43", "webm [360p]"),
|
||||
("44", "webm [480p]"),
|
||||
("45", "webm [720p]"),
|
||||
("46", "webm [1080p]"),
|
||||
("mp4", "mp4"),
|
||||
("18", "mp4 [360p]"),
|
||||
("22", "mp4 [720p]"),
|
||||
("37", "mp4 [1080p]"),
|
||||
("38", "mp4 [4K]"),
|
||||
("160", "mp4 [144p] (DASH Video)"),
|
||||
("133", "mp4 [240p] (DASH Video)"),
|
||||
("134", "mp4 [360p] (DASH Video)"),
|
||||
("135", "mp4 [480p] (DASH Video)"),
|
||||
("136", "mp4 [720p] (DASH Video)"),
|
||||
("137", "mp4 [1080p] (DASH Video)"),
|
||||
("264", "mp4 [1440p] (DASH Video)"),
|
||||
("138", "mp4 [2160p] (DASH Video)"),
|
||||
("242", "webm [240p] (DASH Video)"),
|
||||
("243", "webm [360p] (DASH Video)"),
|
||||
("244", "webm [480p] (DASH Video)"),
|
||||
("247", "webm [720p] (DASH Video)"),
|
||||
("248", "webm [1080p] (DASH Video)"),
|
||||
("271", "webm [1440p] (DASH Video)"),
|
||||
("272", "webm [2160p] (DASH Video)"),
|
||||
("82", "mp4 [360p] (3D)"),
|
||||
("83", "mp4 [480p] (3D)"),
|
||||
("84", "mp4 [720p] (3D)"),
|
||||
("85", "mp4 [1080p] (3D)"),
|
||||
("100", "webm [360p] (3D)"),
|
||||
("101", "webm [480p] (3D)"),
|
||||
("102", "webm [720p] (3D)"),
|
||||
("139", "m4a 48k (DASH Audio)"),
|
||||
("140", "m4a 128k (DASH Audio)"),
|
||||
("141", "m4a 256k (DASH Audio)"),
|
||||
("171", "webm 48k (DASH Audio)"),
|
||||
("172", "webm 256k (DASH Audio)")
|
||||
])
|
||||
|
||||
|
||||
AUDIO_FORMATS = tdict([
|
||||
("mp3", "mp3"),
|
||||
("wav", "wav"),
|
||||
("aac", "aac"),
|
||||
("m4a", "m4a"),
|
||||
("vorbis", "vorbis"),
|
||||
("opus", "opus")
|
||||
])
|
||||
|
||||
|
||||
FORMATS = DEFAULT_FORMATS.copy()
|
||||
FORMATS.update(VIDEO_FORMATS)
|
||||
FORMATS.update(AUDIO_FORMATS)
|
Before Width: | Height: | Size: 42 KiB |
@ -1,444 +0,0 @@
|
||||
# Youtube-dlG localization file.
|
||||
# FIRST AUTHOR: Sotiris Papadopoulos <ytubedlg@gmail.com>, 2015.
|
||||
# Snosi <fixall.dz@gmail.com>, 2015.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:39+EEST\n"
|
||||
"Last-Translator: Snosi <fixall.dz@gmail.com>\n"
|
||||
"Language-Team: العربية <>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "الرابط"
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "تحديث"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "الخيارات"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "خطأ"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "إيقاف"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "معلومات"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "مرحباً"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "إنتهاء التحميلات {0} رابط {1} يوم {2} ساعة {3} دقيقة {4} ثانية"
|
||||
|
||||
#: mainframe.py:92
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "إكتمال التحميل"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "تحميل {0} رابط"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "إيقاف التحميل"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "تم إيقاف التحميل"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "أدخل رابطا على الأقل"
|
||||
|
||||
#: mainframe.py:97
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "تحديث محمل فيديوهات يوتيوب. يرجى الإنتظار..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "فشل تحديث محمل فيديوهات يوتيوب [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "محمل فيديوهات يوتيوب محدث"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "فعل لفتح الدليل : '{dir}'. المسار خاطئ"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "تعذر إيقاف الجهاز . تأكد من كلمة المرور"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "إيقاف تشغيل النظام"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "العنوان"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "الحجم"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "النِسبة"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "الوقت المتبقي"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "السرعة"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "الحالة"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "عام"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "الفيديو"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "الصوت"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "قائمة التشغيل"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "المخرجات"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "الترجمة"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "ملفات النظام"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "إيقاف التشغيل"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "إستيثاق"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "الإتصال"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "السِجِل"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "أوامر"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "اللغة"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "فعّل السِجِل"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "كتابة الوقت"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "إمسح السِجِل"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "شاهد السِجِل"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "المسار: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "حجم السِجِل: {0} Octets"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "إعادة التشغيل"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "أعد التشغيل {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "أوقف تشغيل النظام عند الإنتهاء"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "كلمة مرور المسؤول"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "بدأ قائمة التشغيل"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "إيقاف قائمة التشغيل"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "أقصى حد للتحميلات"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "فحص"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "اسم العميل"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "يدل"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "الخادم الوكيل"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "اسم المستخدم"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "كلمة المرور"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "كلمة المرور (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "عالي"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "منخفض"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "متوسط"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "حول الى صوت"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "فيديو"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "صيغة الصوت"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "جودة الصوت"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "مبدئي"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "بدون"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "صيغة الفيديو"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "خلط الصيغة"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "حول الاسماء الى (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "الإسم = الهوية"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "الإسم = العنوان"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "قالب مخصص"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "تجاهل الأخطاء"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "افتح وجهة المجلد"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "اكتب المعلومات في ملف (.json)"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "اكتب الوصف"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "إحفظ المصغرات"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "حجم الملف"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "اقل"
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "اقصى"
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "الانجليزية"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "اليونانية"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "البرتغالية"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "الفرنسية"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "الايطالية"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "الروسية"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "الاسبانية"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "الالمانية"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "تحميل الترجمة حسب المرشح"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "تحميل كل الترجمات المتوفرة"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "تحميل تلقائي للترجمة (يوتيوب فقط)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "اضف الترجمة للفيديو (mp4 فقط)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "لغة الترجمة"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "عن"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "فتح"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "إعادة تعين"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "حفظ المسار"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "خيارات الملف : {0}"
|
||||
|
||||
#: optionsframe.py:1285
|
||||
msgid "Choose Directory"
|
||||
msgstr "اختيار الوجهة"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "معطيات سطر الاوامر (e.g. --help)"
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "اللغة"
|
||||
|
||||
#: optionsframe.py:1427
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "لتصبح التغييرات سارية المفعول أعد تشغيل {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
msgid "Log Viewer"
|
||||
msgstr "عارض السجل"
|
623
youtube_dl_gui/locale/ar_SA/LC_MESSAGES/youtube_dl_gui.po
Normal file
@ -0,0 +1,623 @@
|
||||
# Youtube-dlG localization file.
|
||||
# FIRST AUTHOR: Sotiris Papadopoulos <ytubedlg@gmail.com>, 2015.
|
||||
# Snosi <fixall.dz@gmail.com>, 2015.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:39+EEST\n"
|
||||
"Last-Translator: Snosi <fixall.dz@gmail.com>\n"
|
||||
"Language-Team: العربية <>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "العنوان"
|
||||
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "جودة الصوت"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "مبدئي"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "تحديث"
|
||||
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "الخيارات"
|
||||
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "إيقاف"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "معلومات"
|
||||
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "مرحباً"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "قائمة التشغيل"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "إعادة التشغيل"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "عن"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "شاهد السِجِل"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "إنتهاء التحميلات {0} رابط {1} يوم {2} ساعة {3} دقيقة {4} ثانية"
|
||||
|
||||
#: mainframe.py:119
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "إكتمال التحميل"
|
||||
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "إيقاف التحميل"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "تم إيقاف التحميل"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "أدخل رابطا على الأقل"
|
||||
|
||||
#: mainframe.py:124
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "اختيار الوجهة"
|
||||
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "تحديث محمل فيديوهات يوتيوب. يرجى الإنتظار..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "فشل تحديث محمل فيديوهات يوتيوب [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "فعل لفتح الدليل : '{dir}'. المسار خاطئ"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "تعذر إيقاف الجهاز . تأكد من كلمة المرور"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "إيقاف تشغيل النظام"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "الحجم"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "النِسبة"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "الوقت المتبقي"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "السرعة"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "الحالة"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "أوامر"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "افتح وجهة المجلد"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "الفيديو"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "الصوت"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "إكتمال التحميل"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "إكتمال التحميل"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "إيقاف التشغيل"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "إيقاف تشغيل النظام"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "عام"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "خلط الصيغة"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "بدأ التحميل"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "لغة الترجمة"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "إعادة تعين"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "حول الاسماء الى (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "إعادة تعين"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "إكتمال التحميل"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "كلمة مرور المسؤول"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "لتصبح التغييرات سارية المفعول أعد تشغيل {0}"
|
||||
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "إعادة التشغيل"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "عالي"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "منخفض"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "متوسط"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "صيغة الفيديو"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "صيغة الصوت"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "جودة الصوت"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "الانجليزية"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "الفرنسية"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "الالمانية"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "اليونانية"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "الايطالية"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "البرتغالية"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "الروسية"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "الاسبانية"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "تحميل تلقائي للترجمة (يوتيوب فقط)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "تحميل كل الترجمات المتوفرة"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "لغة الترجمة"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "الترجمة"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "الترجمة"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "اضف الترجمة للفيديو (mp4 فقط)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "قائمة التشغيل"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "اقصى"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "حجم الملف"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "اقل"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "فحص"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "إستيثاق"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "اسم المستخدم"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "كلمة المرور"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "كلمة مرور المسؤول"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "الخادم الوكيل"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "اسم العميل"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "يدل"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "فعّل السِجِل"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "شاهد السِجِل"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "إمسح السِجِل"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "معطيات سطر الاوامر (e.g. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "إعادة تعين"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "تجاهل الأخطاء"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "عارض السجل"
|
@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2016-09-03 15:37+EEST\n"
|
||||
"Last-Translator: Ondrej Kovar <ondrej95kovar@gmail.com>\n"
|
||||
"Language-Team: Czech\n"
|
||||
@ -15,426 +15,606 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Odkazy"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Stáhni"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Update"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Nastavení"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Stop"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Vítejte"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Úspěšně staženo {0} odkaz(ů) za {1} dní {2} hodin {3} minut {4} sekund"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "Stahování dokončeno"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Stahuji {0} odkaz(y)"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Zastavují stahování"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Stahování zastaveno"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "Musíte poskytnout alespoň jeden odkaz"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "Stahování zahájeno"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Stahuji poslední youtube-dl. Prosím vyčkejte..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl stažení skončilo chybou [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl staženo"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Nemohu otevřít adresář: '{dir}'. Zadaná cesta neexistuje"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Chyba při ukončování. Ujistěte se, že jste zadali správné heslo"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Vypínám"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Titul"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Velikost"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Procent"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "OZČ"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Rychlost"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Obecné"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Zvuk"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Seznam stop"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Výstup"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Titulky"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Filesystem"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Vypnout"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Autentikace"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Připojení"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Příkazy"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Lokalizace"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Povolit logování"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Zapiš čas"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Vyčisti log"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Zhlédni log"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Cesta: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Velikost logu: {0}"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Restartujte prosím {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Po skončení vypnout"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO password"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Začít seznam stop"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Zastavit seznam stop"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Max stažení"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Obnovení"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Uživatelské jméno"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Heslo"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Video heslo (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "vysoké"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "nízké"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "střední"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Překonvertovat do zvuku"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Zachovej video"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Formát zvuku"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Kvalita zvuku"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "výchozí"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "žádné"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Formát videa"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Update"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Formát mix"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Nastavení"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Omezit názvy souborů (ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Stop"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID jako název"
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Titul jako název"
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Vítejte"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Vlastní šablona (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignorovat chyby"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Otevřít cílový adresář"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Stáhni"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Zapiš info do (.json) souboru"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Zapiš popis do souboru"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Seznam stop"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Zapiš nádhled na disk"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Velikost souboru"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Stáhni"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Angličtina"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Restart"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Řečtina"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugalština"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Francouzština"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italština"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Ruština"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Španělština"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Němčina"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Stáhni soubor s titulkami podle jazyka"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Stáhni všechny dostupné titulky"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Stáhni automaticky soubor s titulkami (POUZE YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Vlož titulky přímo do videa (pouze mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Jazyk titulek"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "O aplikaci"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Otevřít"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Zhlédni log"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Obnovit nastavení"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Úspěšně staženo {0} odkaz(ů) za {1} dní {2} hodin {3} minut {4} sekund"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Uložit cestu"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "Stahování dokončeno"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Soubor nastavení: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Zastavují stahování"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Stahování zastaveno"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Musíte poskytnout alespoň jeden odkaz"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "Stahování zahájeno"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Vyberte adresář"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Argumenty příkazové řádky (např. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Jazyk"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Stahuji poslední youtube-dl. Prosím vyčkejte..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl stažení skončilo chybou [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Nemohu otevřít adresář: '{dir}'. Zadaná cesta neexistuje"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Chyba při ukončování. Ujistěte se, že jste zadali správné heslo"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Vypínám"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Velikost"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Procent"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "OZČ"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Rychlost"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Příkazy"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Otevřít cílový adresář"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Zvuk"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Stahování dokončeno"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Stahování dokončeno"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Vypnout"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Vypínám"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Obecné"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Formát mix"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Stáhni"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Jazyk titulek"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Obnovit nastavení"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Omezit názvy souborů (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Obnovit nastavení"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Stahování dokončeno"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO password"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Restartuje prosím, aby se projevily změny {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "vysoké"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "nízké"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "střední"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Formát videa"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Formát zvuku"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Kvalita zvuku"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Angličtina"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Francouzština"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Němčina"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Řečtina"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italština"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugalština"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Ruština"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Španělština"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Stáhni automaticky soubor s titulkami (POUZE YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Stáhni všechny dostupné titulky"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Jazyk titulek"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Titulky"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Titulky"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Vlož titulky přímo do videa (pouze mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Seznam stop"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Velikost souboru"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Obnovení"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Autentikace"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Uživatelské jméno"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Heslo"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "SUDO password"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Povolit logování"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Zhlédni log"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Vyčisti log"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Argumenty příkazové řádky (např. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Obnovit nastavení"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignorovat chyby"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Náhled logu"
|
||||
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:31+EEST\n"
|
||||
"Last-Translator: Max Bruckner <max at maxbruckner dot de>\n"
|
||||
"Language-Team: de\n"
|
||||
@ -13,429 +13,608 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "URLs"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: mainframe.py:84
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Audio-Qualität"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "standard"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Updaten"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Optionen"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: mainframe.py:87
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Anhalten"
|
||||
|
||||
#: mainframe.py:88
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: mainframe.py:89
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Willkommen"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Neustarten"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Protokoll anzeigen"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} url(s) wurden innerhalb von {1} Tage(n) {2} Stunde(n) {3} Minute(n) {4} Sekunde(n) erfolgreich heruntergeladen"
|
||||
|
||||
#: mainframe.py:92
|
||||
#: mainframe.py:119
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "Download abgeschlossen"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Lade {0} URL(s) herunter"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:94
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Halte Downloads an"
|
||||
|
||||
#: mainframe.py:95
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Downloads angehalten"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Sie müssen mindestens eine URL angeben"
|
||||
|
||||
#: mainframe.py:97
|
||||
#: mainframe.py:124
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "Download gestartet"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Lade neuestes youtube-dl herunter. Bitte warten..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Herunterladen von youtube-dl fehlgeschlagen [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl erfolgreich heruntergeladen"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Konnte '{dir}' nicht öffnen. Der angegebene Pfad existiert nicht"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Fehler beim Herunterfahren. Stellen Sie sicher dass sie das Passwort korrekt eingegeben haben"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "System wird heruntergefahren"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Größe"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Prozent"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Verbleibend"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Geschwindigkeit"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Ausgabe"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Untertitel"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Dateisystem"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Herunterfahren"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Authentifizierung"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Verbindung"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Protokoll"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Befehle"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Sprache"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Protokollierung aktivieren"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Zeit protokollieren"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Protokoll leeren"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Protokoll anzeigen"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Pfad: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Protokollgröße: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Neustarten"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Bitte starten Sie {0} neu"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Herunterfahren sobald abgeschlossen"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO Passwort"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Starten mit"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Aufhören mit"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Maximale Downloads"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Verbindungsversuche"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Nutzername"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Video-Passwort (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "gut"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "schlecht"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "mittel"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Zu Audio konvertieren"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Video behalten"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Audio-Format"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "Audio-Qualität"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "standard"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "keines"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Video-Format"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Mix-Format"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Dateinamen einschränken (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID als Name"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Titel als Name"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Benutzerdefiniertes Template (youtube-dl)"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Fehler ignorieren"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Zielordner öffnen"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "In JSON-Datei schreiben"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Beschreibung in Datei speichern"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Vorschaubild speichern"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Dateigröße"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Englisch"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Griechisch"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugiesisch"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Französisch"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italienisch"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Russisch"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Spanisch"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Untertitel nach Sprache herunterladen"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Alle verfügbaren Untertitel herunterladen"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Automatische Untertitel-Datei herunterladen (NUR YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Untertitel in Video einbetten (nur MP4-Videos)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Untertitel-Sprache"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Speicherort"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Konfigurationsdatei: {0}"
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Ordner auswählen"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Kommandozeilen-Parameter (z.B. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Sprache"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Lade neuestes youtube-dl herunter. Bitte warten..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Herunterladen von youtube-dl fehlgeschlagen [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Konnte '{dir}' nicht öffnen. Der angegebene Pfad existiert nicht"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Fehler beim Herunterfahren. Stellen Sie sicher dass sie das Passwort korrekt eingegeben haben"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "System wird heruntergefahren"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Größe"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Prozent"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Verbleibend"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Geschwindigkeit"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Befehle"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Zielordner öffnen"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Download abgeschlossen"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Download abgeschlossen"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Herunterfahren"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "System wird heruntergefahren"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Mix-Format"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Untertitel-Sprache"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Dateinamen einschränken (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Download abgeschlossen"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO Passwort"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "{0} neustarten, um Änderungen anzuwenden"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Neustarten"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "gut"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "schlecht"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "mittel"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Video-Format"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Audio-Format"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Audio-Qualität"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Englisch"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Französisch"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Deutsch"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Griechisch"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italienisch"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugiesisch"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Russisch"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Spanisch"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Automatische Untertitel-Datei herunterladen (NUR YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Alle verfügbaren Untertitel herunterladen"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Untertitel-Sprache"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Untertitel"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Untertitel"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Untertitel in Video einbetten (nur MP4-Videos)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Wiedergabeliste"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Dateigröße"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Verbindungsversuche"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Authentifizierung"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Nutzername"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "SUDO Passwort"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Protokollierung aktivieren"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Protokoll anzeigen"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Protokoll leeren"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Kommandozeilen-Parameter (z.B. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Fehler ignorieren"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Protokoll"
|
||||
|
@ -4,8 +4,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:37+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2016-12-17 17:08+EET\n"
|
||||
"Last-Translator: Sotiris Papadopoulos <ytubedlg@gmail.com>\n"
|
||||
"Language-Team: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -13,426 +13,570 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
#: formats.py:12 formats.py:111
|
||||
msgid "Title + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
#: mainframe.py:106
|
||||
msgid "Download list"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
#: mainframe.py:108
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
#: mainframe.py:110
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
#: mainframe.py:117
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:123
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
msgid "Get command"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:237
|
||||
msgid "Open destination"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove completed"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
msgid "Item is not completed"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:73
|
||||
msgid "Formats"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:74
|
||||
msgid "Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
msgid "Filename options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:322
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:324
|
||||
msgid "More options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:471
|
||||
msgid "Video formats"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:474
|
||||
msgid "Audio formats"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
msgid "Audio quality"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:569
|
||||
msgid "All available subtitles"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Subtitles by language"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:580
|
||||
msgid "Subtitles options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:581
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:735
|
||||
msgid "Video password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:742
|
||||
msgid "User agent"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
msgid "Enable log"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:750
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:751
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:861
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:864
|
||||
msgid "Extra options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
msgid "Ignore errors"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr ""
|
||||
|
@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:32+EEST\n"
|
||||
"Last-Translator: Ismael Ferreras Morezuelas <swyterzone+youtubedlgui@gmail.com>\n"
|
||||
"Language-Team: Spanish <>\n"
|
||||
@ -17,426 +17,606 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Direcciones de Internet a descargar"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Ajustes"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Detener"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Bienvenid@"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Se han terminado de descargar {0} elementos en {1} días, {2} horas, {3} minutos y {4} segundos"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "Se han completado todas las descargas."
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Descargando {0} elementos."
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Parando descargas en curso."
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Se ha detenido todas las descargas en curso."
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "Es necesario proporcionar al menos una dirección de descarga para poder empezar."
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "Comenzando descargas."
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Descargando última versión de youtube-dl. Un momento..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "No se ha podido descargar youtube-dl [{0}]."
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl se ha actualizado correctamente."
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "No se ha podido abrir la carpeta: '{dir}'. La ruta no existe."
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "No se ha podido apagar el equipo. Asegúrate de que la contraseña esté bien escrita."
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Apagando el equipo"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Tiempo estimado"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Vídeo"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Nomenclatura"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Sistema de archivos"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticación"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Conexión"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Registro"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Utilizar archivo de registro"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Hora de escritura"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Borrar registro"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Ruta: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Tamaño de archivo de registro: {0} bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Es necesario reiniciar {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Apagar el equipo al terminar"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "Contraseña de superusuario"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Inicio de lista de reproducción"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Fin de lista de reproducción"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Nº máximo de elementos a descargar"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Reintentos"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "Agente de usuario"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Página de origen"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Contraseña de vídeo (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "Alta"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "Baja"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "Intermedia"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Convertir vídeos a audio"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Conservar el vídeo original"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Formato de audio:"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Calidad de audio:"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "predeterminada"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "ninguno"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Formato de vídeo"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Formato mixto"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Ajustes"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Restringir nombres de archivo (a ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Detener"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "Utilizar el identificador como nombre de archivo."
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Utilizar el título como nombre de archivo."
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Bienvenid@"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Plantilla personalizada (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignorar errores"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Abrir carpeta de destino"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Guardar info en archivo (.json)"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Guardar descripción en archivo"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Guardar miniatura en disco"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Tamaño de archivo"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Mínimo"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Máximo"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Inglés"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Griego"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugués"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Francés"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Ruso"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Español"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Alemán"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Descargar archivo de subtítulos por idioma"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Descargar todos los subtítulos disponibles"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Descargar archivo con subtítulos automáticos (SÓLO PARA YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Insertar los subtítulos en el vídeo (sólo para vídeos en mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Restablecer"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Se han terminado de descargar {0} elementos en {1} días, {2} horas, {3} minutos y {4} segundos"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Ruta de destino"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "Se han completado todas las descargas."
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Archivo de configuración: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Parando descargas en curso."
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Se ha detenido todas las descargas en curso."
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Es necesario proporcionar al menos una dirección de descarga para poder empezar."
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "Comenzando descargas."
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Elegir carpeta"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Argumentos de línea de comandos (p. ej. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Idioma de interfaz"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Descargando última versión de youtube-dl. Un momento..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "No se ha podido descargar youtube-dl [{0}]."
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "No se ha podido abrir la carpeta: '{dir}'. La ruta no existe."
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "No se ha podido apagar el equipo. Asegúrate de que la contraseña esté bien escrita."
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Apagando el equipo"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Tiempo estimado"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Abrir carpeta de destino"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Vídeo"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Se han completado todas las descargas."
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Se han completado todas las descargas."
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Apagando el equipo"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Formato mixto"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Restringir nombres de archivo (a ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Se han completado todas las descargas."
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "Contraseña de superusuario"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Por favor, reinicia {0} para que los efectos surtan efecto"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "Alta"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "Baja"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "Intermedia"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Formato de vídeo"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Formato de audio:"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Calidad de audio:"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Inglés"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Francés"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Alemán"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Griego"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugués"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Ruso"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Español"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Descargar archivo con subtítulos automáticos (SÓLO PARA YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Descargar todos los subtítulos disponibles"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Insertar los subtítulos en el vídeo (sólo para vídeos en mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Máximo"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Tamaño de archivo"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Mínimo"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Reintentos"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticación"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "Contraseña de superusuario"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Agente de usuario"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Página de origen"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Utilizar archivo de registro"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Borrar registro"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Argumentos de línea de comandos (p. ej. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignorar errores"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Visor de registro"
|
||||
|
@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:32+EEST\n"
|
||||
"Last-Translator: Israel Torres <dnlsrl.kaiser@gmail.com>\n"
|
||||
"Language-Team: Spanish <>\n"
|
||||
@ -17,429 +17,608 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "URLs"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Descargar"
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mainframe.py:84
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Calidad de audio"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "por defecto"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Opciones"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: mainframe.py:87
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Detener"
|
||||
|
||||
#: mainframe.py:88
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: mainframe.py:89
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Bienvenido"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} url(s) descargadas exitosamente en {1} día(s) {2} hora(s) {3} minuto(s) {4} segundo(s)"
|
||||
|
||||
#: mainframe.py:92
|
||||
#: mainframe.py:119
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "Descarga terminada"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Descargando {0} url(s)"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:94
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Deteniendo descargas"
|
||||
|
||||
#: mainframe.py:95
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Descargas detenidas"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Tienes que especificar una url como mínimo"
|
||||
|
||||
#: mainframe.py:97
|
||||
#: mainframe.py:124
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "Descarga iniciada"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Descargando la versión más reciente de youtube-dl. Espera..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Falló la descarga de youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl se descargó correctamente"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "No se pudo abrir el directorio: '{dir}'. La ruta no existe"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Error al apagar. Asegúrate de que introdujiste la contraseña correcta"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Apagando sistema"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Tiempo estimado"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Sistema de archivos"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticación"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Conexión"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Registro"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Habilitar archivo de registro"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Hora de escritura"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Limpiar registro"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Ruta: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Tamaño de archivo de registro: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Por favor, reinicia {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Apagar al finalizar"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "Contraseña SUDO"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Inicio de lista de reproducción"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Final de lista de reproducción"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Máximo de descargas"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Reintentos"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "Agente de usuario"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referidor"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Contraseña de video (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "alta"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "baja"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "media"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Convertir a audio"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Mantener video"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Formato de audio"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "Calidad de audio"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "por defecto"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "ninguno"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Formato de video"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Formato mixto"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Restringir nombres de archivo (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID como nombre"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Título como nombre"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Plantilla personalizada (youtube-dl)"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignorar errores"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Abrir directorio destino"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Escribir info a archivo (.json)"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Grabar descripción al archivo"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Grabar miniatura a disco"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Tamaño de archivo"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Mínimo"
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Máximo"
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Inglés"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Griego"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugués"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Francés"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Ruso"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Español"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Alemán"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Descargar archivo de subtítulos por idioma"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Descargar todos los subtítulos disponibles"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Descargar archivo de subtítulos automático (SOLO YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Insertar los subtítulos en el video (solo para videos mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Ruta de destino"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Archivo de opciones: {0}"
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Elegir directorio"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Argumentos de línea de comandos (p. ej. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Idioma de localización"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Descargando la versión más reciente de youtube-dl. Espera..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Falló la descarga de youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "No se pudo abrir el directorio: '{dir}'. La ruta no existe"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Error al apagar. Asegúrate de que introdujiste la contraseña correcta"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Apagando sistema"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Tiempo estimado"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Abrir directorio destino"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Descarga terminada"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Descarga terminada"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Apagando sistema"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Formato mixto"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Restringir nombres de archivo (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Descarga terminada"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "Contraseña SUDO"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Por favor, reinicia {0} para que los efectos surtan efecto"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "alta"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "baja"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "media"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Formato de video"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Formato de audio"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Calidad de audio"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Inglés"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Francés"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Alemán"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Griego"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugués"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Ruso"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Español"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Descargar archivo de subtítulos automático (SOLO YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Descargar todos los subtítulos disponibles"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Idioma de subtítulos"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Subtítulos"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Insertar los subtítulos en el video (solo para videos mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Lista de reproducción"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Máximo"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Tamaño de archivo"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Mínimo"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Reintentos"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticación"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "Contraseña SUDO"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Agente de usuario"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referidor"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Habilitar archivo de registro"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Ver registro"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Limpiar registro"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Argumentos de línea de comandos (p. ej. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignorar errores"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Visor de registro"
|
||||
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:38+EEST\n"
|
||||
"Last-Translator: Thierry Roussel <thierry.roussel@gmx.com>\n"
|
||||
"Language-Team: fr\n"
|
||||
@ -13,429 +13,607 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Lien(s)"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: mainframe.py:84
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Qualité Audio"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "par défaut"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Mise à jour"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: mainframe.py:87
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Arrêter"
|
||||
|
||||
#: mainframe.py:88
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:89
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Bienvenue"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "A propos"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Afficher les traces"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Téléchargements réussis {0} lien(s) en {1} jour(s) {2} heure(s) {3} minute(s) {4} seconde(s)"
|
||||
|
||||
#: mainframe.py:92
|
||||
#: mainframe.py:119
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "Téléchargement terminé"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Téléchargement de {0} lien(s)"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:94
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Arrêt des téléchargements"
|
||||
|
||||
#: mainframe.py:95
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Téléchargements arrêtés"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Vous devez fournir au moins 1 lien"
|
||||
|
||||
#: mainframe.py:97
|
||||
#: mainframe.py:124
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "Téléchargement démarré"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Mise à jour de youtube-dl. Merci de patienter"
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Echec de la mise à jour de Youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl a été mis à jour"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Impossible d'ouvrir le répertoire: '{dir}'. Le chemin n'existe pas"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Erreur d'arrêt du système. Vérifiez le mot de passe saisi"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Arrêt du système"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Taille"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "%"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "ETA"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Vitesse"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Etat"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Vidéo"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Sortie"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Sous-titres"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Fichiers"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêt"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Authentification"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Commandes"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Langue"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Activer les traces"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Temps d'écriture"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Effacer les traces"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Afficher les traces"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Répertoire: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Taille des traces: {0} Octets"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Veuillez redémarrer {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Arrêter une fois terminé"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Téléchargements Max"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Essais"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "haute"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "basse"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "moyenne"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Convertir la piste Audio"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Conserver la piste Vidéo"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Format Audio"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "Qualité Audio"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "par défaut"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "aucune"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Format Vidéo"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Convertir les noms (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "Nom = ID"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Nom = Titre"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Format personnalisé"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignorer les erreurs"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Ouvrir le répertoire de destination"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Renseigner le fichier (.json)"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Ecrire la description"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Enregistrer la miniature"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Taille de fichier"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Anglais"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Grec"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugais"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italien"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Russe"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Espagnol"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Allemand"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Télécharger les sous-titres suivant la langue"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Télécharger tous les sous-titres disponibles"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Télécharger le fichier sous-titre automatique (YOUTUBE ONLY)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Ajouter les sous-titres à la vidéo (mp4 uniquement)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Langue sous-titres"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "A propos"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Reset options"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Enregistrer sous..."
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Sélectionner le répertoire"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Langue"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Mise à jour de youtube-dl. Merci de patienter"
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Echec de la mise à jour de Youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Impossible d'ouvrir le répertoire: '{dir}'. Le chemin n'existe pas"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Erreur d'arrêt du système. Vérifiez le mot de passe saisi"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Arrêt du système"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Taille"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "%"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "ETA"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Vitesse"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Etat"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Commandes"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Ouvrir le répertoire de destination"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Vidéo"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Téléchargement terminé"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Téléchargement terminé"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêt"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Arrêt du système"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Format Audio"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Langue sous-titres"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Reset options"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Convertir les noms (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Reset options"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Téléchargement terminé"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Pour que les changements prennent effet, veuillez redémarrer {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "haute"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "basse"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "moyenne"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Format Vidéo"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Format Audio"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Qualité Audio"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Anglais"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Allemand"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Grec"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italien"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugais"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Russe"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Espagnol"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Télécharger le fichier sous-titre automatique (YOUTUBE ONLY)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Télécharger tous les sous-titres disponibles"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Langue sous-titres"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Sous-titres"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Sous-titres"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Ajouter les sous-titres à la vidéo (mp4 uniquement)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Taille de fichier"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Essais"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Authentification"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Activer les traces"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Afficher les traces"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Effacer les traces"
|
||||
|
||||
#: optionsframe.py:861
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Reset options"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignorer les erreurs"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Afficher les traces"
|
||||
|
618
youtube_dl_gui/locale/he_IL/LC_MESSAGES/youtube_dl_gui.po
Normal file
@ -0,0 +1,618 @@
|
||||
# Youtube-dlG localization file.
|
||||
# FIRST AUTHOR: Sotiris Papadopoulos <ytubedlg@gmail.com>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-09-28 16:28+EEST\n"
|
||||
"Last-Translator: Yuval Bar-on <hyuvii@gmail.com>\n"
|
||||
"Language-Team: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "כותרת"
|
||||
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "איכות אודיו"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "ברירת מחדל"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "עדכן"
|
||||
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "אפשרויות"
|
||||
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "עצור"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "מידע"
|
||||
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "ברוכים הבאים"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "הורדה"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "פלייליסט"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "הורדה"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "הפעל מחדש"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "אודות"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "צפה לוג"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "הוריד בהצלחה {0} קישור(ים) תוך {1} יום(ימים) {2} שעה(ות) {3} דקה(ות) {4} שנייה(ות)"
|
||||
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "ההורדה הושלמה"
|
||||
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "מפסיק הורדה"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "ההורדה נפסקה"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "עלייך לספק לפחות קישור אחד"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "ההורדה החלה"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "בחר תיקייה"
|
||||
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "מוריד את youtube-dl האחרון. אנא המתן..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "ההורדה של youtube-dl נכשלה [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "לא הצליח לפתוח תיקייה: '{dir}'. הכתובת שצויינה איננה קיימת"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "שגיאה בזמן יציאה. אנא וודאו שהכנסתם את הסיסמא הנכונה"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "יוצא מהתוכנה"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "גודל"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "אחוז(ים)"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "זמן סיום משוער"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "מהירות"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "סטטוס"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "פקודות"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "פתח תיקיית יעד"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "וידאו"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "אודיו"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "ההורדה הושלמה"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "ההורדה הושלמה"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "כיבוי"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "יוצא מהתוכנה"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "כללי"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "פורמט משולב (mix)"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "הורדה"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "שפת כתוביות"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "אפס הגדרות"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "הגבל שמות קבצים ללועזית (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "אפס הגדרות"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "ההורדה הושלמה"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "סיסמאת SUDO"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "על מנת להחיל את השינויים יש לאתחל את {0}"
|
||||
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "הפעל מחדש"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "גבוהה"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "נמוכה"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "בינונית"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "פורמט וידאו"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "פורמט אודיו"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "איכות אודיו"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "אנגלית"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "צרפתית"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "גרמנית"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "יוונית"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "איטלקית"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "פורטוגזית"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "רוסית"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "ספרדית"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "הורד כתוביות אוטומטיות (רק Youtube!)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "הורד את כל הכתוביות הקיימות"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "שפת כתוביות"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "כתוביות"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "כתוביות"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "שמור כתוביות כחלק מהוידאו (רק לקבצי mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "פלייליסט"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "מקסימום"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "גודל הקובץ"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "מינימום"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "נסיונות חוזרים"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "אימות משתמש"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "שם משתמש"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "סיסמא"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "סיסמאת SUDO"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "אפשר לוג"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "צפה לוג"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "נקה לוג"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "פקודות למסוף (למשל --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "אפס הגדרות"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "התעלם משגיאות"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "צפייה בלוג"
|
@ -1,438 +0,0 @@
|
||||
# Youtube-dlG localization file.
|
||||
# FIRST AUTHOR: Sotiris Papadopoulos <ytubedlg@gmail.com>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"PO-Revision-Date: 2015-09-28 16:28+EEST\n"
|
||||
"Last-Translator: Yuval Bar-on <hyuvii@gmail.com>\n"
|
||||
"Language-Team: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "קישורים"
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "הורדה"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "עדכן"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "אפשרויות"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "שגיאה"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "עצור"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "מידע"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "ברוכים הבאים"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "הוריד בהצלחה {0} קישור(ים) תוך {1} יום(ימים) {2} שעה(ות) {3} דקה(ות) {4} שנייה(ות)"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "ההורדה הושלמה"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "מוריד {0} קישור(ים)"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "מפסיק הורדה"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "ההורדה נפסקה"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "עלייך לספק לפחות קישור אחד"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "ההורדה החלה"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "מוריד את youtube-dl האחרון. אנא המתן..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "ההורדה של youtube-dl נכשלה [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "youtube-dl ירד בהצלחה"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "לא הצליח לפתוח תיקייה: '{dir}'. הכתובת שצויינה איננה קיימת"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "שגיאה בזמן יציאה. אנא וודאו שהכנסתם את הסיסמא הנכונה"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "יוצא מהתוכנה"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "כותרת"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "גודל"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "אחוז(ים)"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "זמן סיום משוער"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "מהירות"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "סטטוס"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "כללי"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "וידאו"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "אודיו"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "פלייליסט"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "פלט"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "כתוביות"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "קבצים"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "כיבוי"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "אימות משתמש"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "חיבור"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "לוג"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "פקודות"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "שפה"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "אפשר לוג"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "ציין זמן"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "נקה לוג"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "צפה לוג"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "כתובת: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "גודל לוג: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "הפעל מחדש"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "אנא הפעל מחדש {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "צא בסיום הורדה"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "סיסמאת SUDO"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "התחל פלייליסט בקטע"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "עצור פלייליסט בקטע"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "מקסימום הורדות"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "נסיונות חוזרים"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "שם משתמש"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "סיסמא"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "סיסמא לוידאו (vimeo, smorti)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "גבוהה"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "נמוכה"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "בינונית"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "המר לאודיו"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "שמור וידאו בנפרד"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "פורמט אודיו"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "איכות אודיו"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "ברירת מחדל"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "ריק"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "פורמט וידאו"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "פורמט משולב (mix)"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "הגבל שמות קבצים ללועזית (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID הוידאו כשם"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "כותרת הוידאו כשם"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "תבנית מותאמת אישית (youtube-dl)"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "התעלם משגיאות"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "פתח תיקיית יעד"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "שמור מידע בתוך קובץ (.json)"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "שמור את הקובץ עם התיאור"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "שמור thumbnail"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "גודל הקובץ"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "מינימום"
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "מקסימום"
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "אנגלית"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "יוונית"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "פורטוגזית"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "צרפתית"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "איטלקית"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "רוסית"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "ספרדית"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "גרמנית"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "הורד קובץ כתוביות לפי שפה"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "הורד את כל הכתוביות הקיימות"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "הורד כתוביות אוטומטיות (רק Youtube!)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "שמור כתוביות כחלק מהוידאו (רק לקבצי mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "שפת כתוביות"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "אודות"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "פתח"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "אפס הגדרות"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "נתיב הורדה"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "קובץ הגדרות: {0}"
|
||||
|
||||
#: optionsframe.py:1285
|
||||
msgid "Choose Directory"
|
||||
msgstr "בחר תיקייה"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "פקודות למסוף (למשל --help)"
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "שפה לוקאלית"
|
||||
|
||||
#: optionsframe.py:1427
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "על מנת להחיל את השינויים יש לאתחל את {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
msgid "Log Viewer"
|
||||
msgstr "צפייה בלוג"
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-12-29 17:04+EEST\n"
|
||||
"Last-Translator: Bodri Zoltán <bdr75@citromail.com>\n"
|
||||
"Language-Team: hu\n"
|
||||
@ -13,426 +13,606 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "URL-ek"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Letöltés"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Frissítés"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Beállítások"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Hiba"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Állj"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Infó"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Üdvözlöm"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Sikeresen letöltve {0} url {1} nap {2} óra {3} perc {4} másodperc alatt"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "Letöltés kész"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Letöltve {0} url"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Megállított letöltés"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Letöltés megállítva"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "Meg kell adnia legalább egy url-t"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "Letöltés elindítva"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Legutolsó youtube-dl letöltése. Kérlek várj..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl letöltése sikertelen [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl sikeresen letöltve"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Nem sikerült megnyitni a könyvtárat: '{dir}'. A megadott elérési út nem létezik"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Hiba történt leállításkor. Győződjön meg róla, hogy a beírt jelszó helyes"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Rendszer leállítása"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Cím"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Méret"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Százalék"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Hátravan"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Sebesség"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Állapot"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Általános"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Videó"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audió"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Lejátszási lista"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Kimenet"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Felirat"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Fájlrendszer"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Leállítás"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Hitelesítés"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Csatlakozás"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Napló"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Parancsok"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Lokalizáció"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Naplózás engedélyezése"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Idő hozzáadása"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Napló törlése"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Naplót mutat"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Útvonal: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Napló mérete: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Újraindítás"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Kérem, indítsa újra {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Leállítás, ha végzett"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO jelszó"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Lejátszási lista eleje"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Lejátszási lista vége"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Max letöltés"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Ismétlés"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "Kiszolgáló"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Hivatkozás"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Felhasználó név"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Jelszó"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Videó jelszó (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "magas"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "alacsony"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "közepes"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Audió konvertálása"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Videó megtartása"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Audió formátum"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Audió minőség"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "alapértelmezett"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "nincs"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Videó formátum"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Mixelt formátum"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Fájlnév hossz korlátozása (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID beállítása névnek"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Cím beállítása névnek"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Egyedi sablon (youtube-dl)"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Hibák figyelmen kívül hagyása"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Célmappa megnyitása"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Infó írása (.json) fájlba"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Leírás írása fájlba"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Bélyegkép létrehozása a meghajtón"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Fájlméret"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Frissítés"
|
||||
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Beállítások"
|
||||
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Állj"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Infó"
|
||||
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Üdvözlöm"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Angol"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Görög"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Letöltés"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugál"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Francia"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Lejátszási lista"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Olasz"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Orosz"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Letöltés"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Spanyol"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Német"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Felirat letöltése saját nyelven"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Újraindítás"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Az összes elérhető felirat letöltése"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Felirat automatikus letöltése (CSAK YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Felirat beágyazása a videóba (csak mp4 videók)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Felirat nyelve"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Névjegy"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Megnyit"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Naplót mutat"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Visszaállít"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Sikeresen letöltve {0} url {1} nap {2} óra {3} perc {4} másodperc alatt"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Mentés helye"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "Letöltés kész"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Beállítás fájl: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Megállított letöltés"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Letöltés megállítva"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Meg kell adnia legalább egy url-t"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "Letöltés elindítva"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Válasszon könyvtárat"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Parancssori argumentumok (pl. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Lokalizált nyelv"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Legutolsó youtube-dl letöltése. Kérlek várj..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl letöltése sikertelen [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Nem sikerült megnyitni a könyvtárat: '{dir}'. A megadott elérési út nem létezik"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Hiba történt leállításkor. Győződjön meg róla, hogy a beírt jelszó helyes"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Rendszer leállítása"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Méret"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Százalék"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Hátravan"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Sebesség"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Állapot"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Parancsok"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Célmappa megnyitása"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Videó"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audió"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Letöltés kész"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Letöltés kész"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Leállítás"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Rendszer leállítása"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Általános"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Mixelt formátum"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Letöltés"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Felirat nyelve"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Visszaállít"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Fájlnév hossz korlátozása (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Visszaállít"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Letöltés kész"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO jelszó"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "A változtatásokhoz indítsa újra a {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Újraindítás"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "magas"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "alacsony"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "közepes"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Videó formátum"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Audió formátum"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Audió minőség"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Angol"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Francia"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Német"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Görög"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Olasz"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugál"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Orosz"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Spanyol"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Felirat automatikus letöltése (CSAK YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Az összes elérhető felirat letöltése"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Felirat nyelve"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Felirat"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Felirat"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Felirat beágyazása a videóba (csak mp4 videók)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Lejátszási lista"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Fájlméret"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Ismétlés"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Hitelesítés"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Felhasználó név"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Jelszó"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "SUDO jelszó"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Kiszolgáló"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Hivatkozás"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Naplózás engedélyezése"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Naplót mutat"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Napló törlése"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Parancssori argumentumok (pl. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Visszaállít"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Hibák figyelmen kívül hagyása"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Naplókezelő"
|
||||
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2016-09-16 14:20+EEST\n"
|
||||
"Last-Translator: Penaz <https://github.com/Penaz91>\n"
|
||||
"Language-Team: en\n"
|
||||
@ -13,426 +13,606 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Indirizzi"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Scaricamenti"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Aggiorna"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Opzioni"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Ferma"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Informazioni"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Benvenuto"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} URL scaricati in {1} giorni {2} ore {3} minuti e {4} secondi"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "Scaricamenti Completati"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Scaricamento di {0} URLs"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Sto fermando gli scaricamenti"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Scaricamenti Fermati"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "Devi inserire almeno un indirizzo"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "Scaricamenti Iniziati"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Aggiornamento di youtube-dl. Attendere..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Scaricamento di Youtube-dl Fallito [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl scaricato correttamente"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Impossibile aprire la cartella: '{dir}'. Il percorso non esiste"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Errore durante lo spegnimento. Assicurati di aver digitato la password corretta."
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Spegnimento del sistema"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Titolo"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Dimensione"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Percentuale"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Tempo Rimanente"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Velocità"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Stato"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Output"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Sottotitoli"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Filesystem"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Spegnimento"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticazione"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Connessione"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Comandi"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Traduzioni"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Abilita Log"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Inserisci l'ora"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Cancella Log"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Visualizza Log"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Percorso: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Dimensione Log: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Per favore, riavviare {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Spegni al termine"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "Password per SUDO"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Inizia Playlist"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Ferma Playlist"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Download Massimi"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Tentativi"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referente"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Nome Utente"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Passowrd Video (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "alto"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "basso"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "medio"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Converti ad Audio"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Mantieni Video"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Formato Audio"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Qualità Audio"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "predefinito"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "nessuno"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Formato Video"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Aggiorna"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Formato di Miscelazione"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Opzioni"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Restrizione nomi file (ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Ferma"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID come Nome"
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Informazioni"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Titolo come Nome"
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Benvenuto"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Personalizzato (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignora Errori"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Apri cartella di destinazione"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Scaricamenti"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Scrivi informazioni in un file (.json)"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Scrivi descrizione in un file"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Scrivi anteprime su disco"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Dimensione File"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Scaricamenti"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Inglese"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Greco"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portoghese"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Francese"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Russo"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Spagnolo"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Tedesco"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Scarica sottotitoli per lingua"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Scarica tutti i sottotitoli disponibili"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Scarica file sottotitoli automatici (SOLO YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Incorpora sottotitoli nel video (Solo mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Lingua Sottotitoli"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Info Su"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Visualizza Log"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Resetta Opzioni"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} URL scaricati in {1} giorni {2} ore {3} minuti e {4} secondi"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Salva Percorso"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "Scaricamenti Completati"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "File Impostazioni: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Sto fermando gli scaricamenti"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Scaricamenti Fermati"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Devi inserire almeno un indirizzo"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "Scaricamenti Iniziati"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Scegli Directory"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Argomenti da linea di comando (es. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Lingua traduzione"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Aggiornamento di youtube-dl. Attendere..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Scaricamento di Youtube-dl Fallito [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Impossibile aprire la cartella: '{dir}'. Il percorso non esiste"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Errore durante lo spegnimento. Assicurati di aver digitato la password corretta."
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Spegnimento del sistema"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Dimensione"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Percentuale"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Tempo Rimanente"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Velocità"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Stato"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Comandi"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Apri cartella di destinazione"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Scaricamenti Completati"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Scaricamenti Completati"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Spegnimento"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Spegnimento del sistema"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Formato di Miscelazione"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Scaricamenti"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Lingua Sottotitoli"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Resetta Opzioni"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Restrizione nomi file (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Resetta Opzioni"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Scaricamenti Completati"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "Password per SUDO"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Per applicare le modifiche, per favore riavvia {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "alto"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "basso"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "medio"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Formato Video"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Formato Audio"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Qualità Audio"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Inglese"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Francese"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Tedesco"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Greco"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portoghese"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Russo"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Spagnolo"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Scarica file sottotitoli automatici (SOLO YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Scarica tutti i sottotitoli disponibili"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Lingua Sottotitoli"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Sottotitoli"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Sottotitoli"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Incorpora sottotitoli nel video (Solo mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Dimensione File"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Tentativi"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticazione"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Nome Utente"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "Password per SUDO"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referente"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Abilita Log"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Visualizza Log"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Cancella Log"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Argomenti da linea di comando (es. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Resetta Opzioni"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignora Errori"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Visualizzatore Log"
|
||||
|
582
youtube_dl_gui/locale/ko_KR/LC_MESSAGES/youtube_dl_gui.po
Normal file
@ -0,0 +1,582 @@
|
||||
# Youtube-dlG localization file.
|
||||
# FIRST AUTHOR: Sotiris Papadopoulos <ytubedlg@gmail.com>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2017-02-22 02:49+GMT\n"
|
||||
"Last-Translator: Yi Soo, An <yisooan@gmail.com>\n"
|
||||
"Language-Team: kr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: vim\n"
|
||||
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "제목"
|
||||
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr "제목 + ID"
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
msgid "Title + Quality"
|
||||
msgstr "제목 + 화질"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr "제목 + ID + 화질"
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr "사용자 설정"
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "기본값"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr "URL을 입력하세요."
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "업데이트"
|
||||
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "옵션"
|
||||
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "정지"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "정보"
|
||||
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "환영합니다."
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr "주의"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr "추가"
|
||||
|
||||
#: mainframe.py:106
|
||||
msgid "Download list"
|
||||
msgstr "다운로드 목록"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr "삭제"
|
||||
|
||||
#: mainframe.py:108
|
||||
msgid "Play"
|
||||
msgstr "재생"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr "위로"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Down"
|
||||
msgstr "아래로"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr "새로고침"
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr "일시정지"
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
msgid "Start"
|
||||
msgstr "시작"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "정보"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "로그 보기"
|
||||
|
||||
#: mainframe.py:117
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0}개의 URL을 받는데 총 {1}일 {2}시간 {3}분 {4}초가 걸렸습니다."
|
||||
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "다운로드 완료"
|
||||
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr "진행 상태: {0:.1f}% | 대기 ({1}) 일시정지 ({2}) 진행중 ({3}) 완료 ({4}) 오류 ({5})"
|
||||
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "다운로드 정지중"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "다운로드 정지"
|
||||
|
||||
#: mainframe.py:123
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "최소 한 개 이상의 URL을 입력해야 합니다."
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "다운로드 시작됨"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "저장 경로"
|
||||
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr "다운로드가 완료될 때까지 기다려주세요."
|
||||
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr "업데이트 진행중입니다."
|
||||
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "최신 youtube-dl을 다운로드하고 있습니다. 잠시만 기다려주세요."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl 다운로드 실패 [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr "Youtube-dl 다운로드가 완료되었습니다."
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "'{dir}'을 열 수 없습니다. 올바른 경로가 아닙니다."
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "시스템을 종료할 수 없습니다. 패스워드가 올바른지 확인하세요."
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "시스템 종료 중.."
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr "확장자"
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "크기"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "퍼센트"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "기타"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "속도"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "상태"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr "클립보드로 URL 복사"
|
||||
|
||||
#: mainframe.py:236
|
||||
msgid "Get command"
|
||||
msgstr "커맨드라인 명령어 복사"
|
||||
|
||||
#: mainframe.py:237
|
||||
msgid "Open destination"
|
||||
msgstr "폴더 열기"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr "대기열에 넣기"
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr "이어받기"
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "비디오"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "오디오"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr "선택된 아이템이 없습니다. 다음 중 하나를 실행하시겠습니까?"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr "전체삭제"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove completed"
|
||||
msgstr "완료된 것만 삭제"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr "해당 아이템을 삭제하시겠습니까?"
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr "삭제할 수 없습니다."
|
||||
|
||||
#: mainframe.py:574
|
||||
msgid "Item is not completed"
|
||||
msgstr "다운로드가 완료되지 않았습니다."
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr "업데이트가 완료될 때까지 기다려주세요."
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr "로깅이 비활성화되었습니다."
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "시스템 종료"
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "{0}초 후에 시스템이 종료됩니다."
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr "다운로드할 아이템이 없습니다."
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr "종료하시겠습니까?"
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr "종료"
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr "취소"
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr "확인"
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr "초기화"
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr "닫기"
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "일반"
|
||||
|
||||
#: optionsframe.py:73
|
||||
msgid "Formats"
|
||||
msgstr "포맷"
|
||||
|
||||
#: optionsframe.py:74
|
||||
msgid "Downloads"
|
||||
msgstr "다운로드"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr "고급설정"
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr "기타"
|
||||
|
||||
#: optionsframe.py:313
|
||||
msgid "Language"
|
||||
msgstr "언어"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr "파일이름 형식"
|
||||
|
||||
#: optionsframe.py:321
|
||||
msgid "Filename options"
|
||||
msgstr "파일이름 옵션"
|
||||
|
||||
#: optionsframe.py:322
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "ASCII 문자로 제한"
|
||||
|
||||
#: optionsframe.py:324
|
||||
msgid "More options"
|
||||
msgstr "추가옵션"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr "종료시 확인"
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr "아이템 삭제시 확인"
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr "완료시 알림"
|
||||
|
||||
#: optionsframe.py:329
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "완료시 시스템종료"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO 암호"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "설정값을 적용하기 위해 {0}을 재시작하세요."
|
||||
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "재시작"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "높음"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "낮음"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "중간"
|
||||
|
||||
#: optionsframe.py:471
|
||||
msgid "Video formats"
|
||||
msgstr "비디오 형식"
|
||||
|
||||
#: optionsframe.py:474
|
||||
msgid "Audio formats"
|
||||
msgstr "오디오 형식"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr "후처리 옵션"
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr "원본파일 유지"
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr "오디오 추출"
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr "오디오에 섬네일 추가"
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr "메타데이터 추가"
|
||||
|
||||
#: optionsframe.py:483
|
||||
msgid "Audio quality"
|
||||
msgstr "오디오 음질"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "English"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "French"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "German"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Greek"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr "Hebrew"
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italian"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portuguese"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Russian"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Spanish"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr "Swedish"
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr "Turkish"
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr "없음"
|
||||
|
||||
#: optionsframe.py:568
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "오토매틱 자막 (유튜브 전용)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
msgid "All available subtitles"
|
||||
msgstr "사용가능한 모든 자막"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Subtitles by language"
|
||||
msgstr "언어에 따른 자막"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "자막"
|
||||
|
||||
#: optionsframe.py:580
|
||||
msgid "Subtitles options"
|
||||
msgstr "자막 옵션"
|
||||
|
||||
#: optionsframe.py:581
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "비디오에 자막 삽입 (mp4 전용)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "재생목록"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "최대"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "파일크기"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "최소"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "재시도 횟수"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "인증"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "사용자 이름"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "비밀번호"
|
||||
|
||||
#: optionsframe.py:735
|
||||
msgid "Video password"
|
||||
msgstr "비디오 비밀번호"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr "네트워크"
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "프록시"
|
||||
|
||||
#: optionsframe.py:742
|
||||
msgid "User agent"
|
||||
msgstr "User agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr "로그"
|
||||
|
||||
#: optionsframe.py:749
|
||||
msgid "Enable log"
|
||||
msgstr "로그 사용"
|
||||
|
||||
#: optionsframe.py:750
|
||||
msgid "View"
|
||||
msgstr "보기"
|
||||
|
||||
#: optionsframe.py:751
|
||||
msgid "Clear"
|
||||
msgstr "초기화"
|
||||
|
||||
#: optionsframe.py:861
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Youtube-dl 커맨드라인 옵션 (예: --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
msgid "Extra options"
|
||||
msgstr "기타 옵션"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr "Youtube-dl 디버그"
|
||||
|
||||
#: optionsframe.py:867
|
||||
msgid "Ignore errors"
|
||||
msgstr "오류 무시"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr "Youtube-dl 설정 무시"
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr "mtime 사용안함"
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr "네이티브 HLS 사용"
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "로그 뷰어"
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-07-02 15:34+EEST\n"
|
||||
"Last-Translator: Cleiton Meurer <cleitonme@gmail.com>\n"
|
||||
"Language-Team: pt_BR\n"
|
||||
@ -16,429 +16,608 @@ msgstr ""
|
||||
"X-Generator: Poedit 1.8\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Endereços"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Download"
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mainframe.py:84
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Qualidade do Audio"
|
||||
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "Padrão"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: mainframe.py:87
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Parar"
|
||||
|
||||
#: mainframe.py:88
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Informações"
|
||||
|
||||
#: mainframe.py:89
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Bem Vindo"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Download"
|
||||
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Download"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Sobre"
|
||||
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Ver Log"
|
||||
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Baixado com sucesso {0} url(s) em {1} day(s) {2} hora (s) {3} minuto(s) {4} secondo(s)"
|
||||
|
||||
#: mainframe.py:92
|
||||
#: mainframe.py:119
|
||||
#, fuzzy
|
||||
msgid "Downloads completed"
|
||||
msgstr "Download completo"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Baixando {0} url(s)"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:94
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Parar downloads"
|
||||
|
||||
#: mainframe.py:95
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Downloads parados"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Você precisa fornecer pelo menos um endereço"
|
||||
|
||||
#: mainframe.py:97
|
||||
#: mainframe.py:124
|
||||
#, fuzzy
|
||||
msgid "Downloads started"
|
||||
msgstr "Download iniciado"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Atualizando para ultima versão youtube-dl. Aguarde..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl download falhou [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl atualizado"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Não é possível abrir diretório: '{dir}'. O caminho especificado não existe"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Erro ao desligar. Certifique-se de que você digitou a senha correta"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Desligar sistema"
|
||||
|
||||
#: mainframe.py:109
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Tamanho"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Porcentagem"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "ETA"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Velocidade"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Saida"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Legenda"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Sistema De Arquivo"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Desligar"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticação"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Conexão"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Log"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Habiliar Log"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Gravar Hora"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Limpar Log"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Ver Log"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Pasta: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Tamanho do Log: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Por Favor reiniciar {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Desligar quando terminar"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO senha"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Iniciar lista"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Parar lista"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Maximo de downloads"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Tentativas"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Senha Vídeo (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "Alto"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "Baixo"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "Medio"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Converter em Audio"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Mantenha Vídeo"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Formado Audio"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
msgstr "Qualidade do Audio"
|
||||
|
||||
#: optionsframe.py:890
|
||||
msgid "default"
|
||||
msgstr "Padrão"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "nenhum"
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Formato Video"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Mix Format"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Restringem nomes de arquivos (ASCII)"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID como Nome"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Título como Nome"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Modelo Template (youtube-dl)"
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Ignora erros"
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Abrir pasta de destino"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Gravar informações para (.json) arquivo"
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Faça descrição para arquivo"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Escrever miniatura para disco"
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Tamanho"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Inglês"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Grego"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Português"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "França"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Russo"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Espa"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Alemão"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Baixar arquivo de legenda por lingua"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Baixar todas legendas disponiveis"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Baixar arquivo de legenda automática (YOUTUBE SOMENTE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Incorporar as legendas do vídeo (apenas para vídeos mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Língua Legendas"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
msgid "About"
|
||||
msgstr "Sobre"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Voltar opções"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Pasta para salvar"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Arquivo de Configuração: {0}"
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Escolher pasta"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Argumentos de linha de comando (e.x. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Idioma"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Atualizando para ultima versão youtube-dl. Aguarde..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl download falhou [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Não é possível abrir diretório: '{dir}'. O caminho especificado não existe"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Erro ao desligar. Certifique-se de que você digitou a senha correta"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Desligar sistema"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Tamanho"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Porcentagem"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "ETA"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Velocidade"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Comandos"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Abrir pasta de destino"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Download completo"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Download completo"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Desligar"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Desligar sistema"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Mix Format"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Download"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Língua Legendas"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Voltar opções"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Restringem nomes de arquivos (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Voltar opções"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Download completo"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO senha"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Para que as alterações tenham efeito, reinicie {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "Alto"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "Baixo"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "Medio"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Formato Video"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Formado Audio"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Qualidade do Audio"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Inglês"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "França"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Alemão"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Grego"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Português"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Russo"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Espa"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Baixar arquivo de legenda automática (YOUTUBE SOMENTE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Baixar todas legendas disponiveis"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Língua Legendas"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Legenda"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Legenda"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Incorporar as legendas do vídeo (apenas para vídeos mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Playlist"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Max"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Tamanho"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Tentativas"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Autenticação"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "SUDO senha"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "User Agent"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Referer"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Habiliar Log"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Ver Log"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Limpar Log"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Argumentos de linha de comando (e.x. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Voltar opções"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Ignora erros"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Ver log"
|
||||
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2016-06-22 07:43+1000\n"
|
||||
"Last-Translator: Nikita «Arttse» Bystrov <arttsesoft@gmail.com>\n"
|
||||
"Language-Team: ru\n"
|
||||
@ -15,430 +15,606 @@ msgstr ""
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
"X-Generator: Poedit 1.7.4\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Ссылки (каждая на новой строке)"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "Скачать"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Обновить приложение"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Остановить скачивание"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Информация"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Добро пожаловать"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Успешно скачано {0} по указанным ссылкам за {1} дней {2} часов {3} минут {4} секунд"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "Скачивание завершено"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "Скачивание по {0} ссылке"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Производится остановка скачивания"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Скачивание остановлено"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "Вы должны указать хотя бы одну ссылку"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "Началось скачивание"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Производится скачивание последней версии youtube-dl. Пожалуйста, подождите..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Не удалось скачать Youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl скачан успешно"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Невозможно открыть каталог: '{dir}'. Указанный путь не существует"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Ошибка при выключении. Убедитесь, что вы ввели корректный пароль вашей учетной записи администратора"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Выключение системы"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: mainframe.py:108
|
||||
msgid "Extension"
|
||||
msgstr "Расширение"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Размер"
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Процент"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "Осталось"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Скорость скачивания"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Главные"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Видео"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Аудио"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Плейлист"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Вывод"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Субтитры"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Файловая система"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Выключение"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Аутентификация"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Подключение"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Журнал событий"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Команды"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Язык"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Включить ведение журнала событий"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Время записи"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Очистить журнал событий"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Посмотреть журнал событий"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Путь: {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Размер системного журнала: {0} Байт"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Перезагрузка"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Пожалуйста, перезапустите {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Завершение работы по завершении скачки"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "Пароль от вашей учетной записи (администратора)"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Начинать с видео под номером"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Последнее видео под номером"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Максимальное число файлов для скачивания"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Количество попыток"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "Агент пользователя"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Реферер"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Прокси"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Имя пользователя"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Пароль для видео (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "высокое"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "низкое"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "среднее"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Конвертировать Аудио"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Сохранить видео после пост-обработки"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Формат Аудио"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Качество Аудио"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "По умолчанию"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "нет"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Формат Видео"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Обновить приложение"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Смешать формат"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Сокращать имена файлов (ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Остановить скачивание"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "ID как Имя"
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Информация"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "Заголовок как Имя"
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Добро пожаловать"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Пользовательский шаблон (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Игнорировать ошибки"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Открыть папку назначения после скачки"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "Скачать"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Записать информацию в (.json) файл"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Записать описание в файл"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Плейлист"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Записать миниатюру (thumbnail) на диск"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Размер файла"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "Скачать"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "Минимум"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "Максимум"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "Английский"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Перезагрузка"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Греческий"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Португальский"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Французский"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "Итальянский"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Русский"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "Испанский"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Немецкий"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Скачать файл субтитров указанного языка"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Скачать все имеющиеся субтитры"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Скачать файл авто-субтитров (ТОЛЬКО YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Встроить субтитры в видео (только mp4)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Язык Субтитров"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "О программе"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Посмотреть журнал событий"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Сбросить настройки"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "Успешно скачано {0} по указанным ссылкам за {1} дней {2} часов {3} минут {4} секунд"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Путь для сохранения"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "Скачивание завершено"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Файл настроек: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "Производится остановка скачивания"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "Скачивание остановлено"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "Вы должны указать хотя бы одну ссылку"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "Началось скачивание"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Выбрать Директорию"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Аргументы командной строки (например, --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Язык"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "Производится скачивание последней версии youtube-dl. Пожалуйста, подождите..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Не удалось скачать Youtube-dl [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "Невозможно открыть каталог: '{dir}'. Указанный путь не существует"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Ошибка при выключении. Убедитесь, что вы ввели корректный пароль вашей учетной записи администратора"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Выключение системы"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr "Расширение"
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Размер"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Процент"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "Осталось"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Скорость скачивания"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Команды"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Открыть папку назначения после скачки"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Видео"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Аудио"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "Скачивание завершено"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "Скачивание завершено"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Выключение"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Выключение системы"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Главные"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Смешать формат"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "Скачать"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Язык Субтитров"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Сбросить настройки"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Сокращать имена файлов (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Сбросить настройки"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "Скачивание завершено"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "Пароль от вашей учетной записи (администратора)"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Для того, чтобы изменения вступили в силу, пожалуйста, перезапустите {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Перезагрузка"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "высокое"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "низкое"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "среднее"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Формат Видео"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Формат Аудио"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Качество Аудио"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "Английский"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Французский"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Немецкий"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Греческий"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "Итальянский"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Португальский"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Русский"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "Испанский"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Скачать файл авто-субтитров (ТОЛЬКО YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Скачать все имеющиеся субтитры"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Язык Субтитров"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Субтитры"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Субтитры"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Встроить субтитры в видео (только mp4)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Плейлист"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "Максимум"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Размер файла"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "Минимум"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Количество попыток"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Аутентификация"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Имя пользователя"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "Пароль от вашей учетной записи (администратора)"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Прокси"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Агент пользователя"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Реферер"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Включить ведение журнала событий"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Посмотреть журнал событий"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Очистить журнал событий"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Аргументы командной строки (например, --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Сбросить настройки"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Игнорировать ошибки"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Журнал событий"
|
||||
|
@ -4,7 +4,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: youtube-dlg 0.3.8\n"
|
||||
"POT-Creation-Date: 2015-07-02 15:31+EEST\n"
|
||||
"POT-Creation-Date: 2016-12-17 17:07+EET\n"
|
||||
"PO-Revision-Date: 2015-11-03 16:37+EEST\n"
|
||||
"Last-Translator: Ali KOÇ <alikoc@protonmail.ch>\n"
|
||||
"Language-Team: tr\n"
|
||||
@ -13,426 +13,606 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: mainframe.py:82
|
||||
msgid "URLs"
|
||||
msgstr "Url(ler)"
|
||||
#: formats.py:9 formats.py:108
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:83
|
||||
msgid "Download"
|
||||
msgstr "İndirme"
|
||||
|
||||
#: mainframe.py:84
|
||||
msgid "Update"
|
||||
msgstr "Güncelleme"
|
||||
|
||||
#: mainframe.py:85 optionsframe.py:40
|
||||
msgid "Options"
|
||||
msgstr "Ayarlar"
|
||||
|
||||
#: mainframe.py:86
|
||||
msgid "Error"
|
||||
msgstr "Hata"
|
||||
|
||||
#: mainframe.py:87
|
||||
msgid "Stop"
|
||||
msgstr "Dur"
|
||||
|
||||
#: mainframe.py:88
|
||||
msgid "Info"
|
||||
msgstr "Bilgi"
|
||||
|
||||
#: mainframe.py:89
|
||||
msgid "Welcome"
|
||||
msgstr "Hoşgeldiniz"
|
||||
|
||||
#: mainframe.py:90
|
||||
msgid "Successfully downloaded {0} url(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} url(ler) {1} gün {2} saat {3} dakika {4} saniye içinde başarı ile indirildi"
|
||||
|
||||
#: mainframe.py:92
|
||||
msgid "Downloads completed"
|
||||
msgstr "İndirmeler tamamlandı"
|
||||
|
||||
#: mainframe.py:93
|
||||
msgid "Downloading {0} url(s)"
|
||||
msgstr "İndiriliyor {0} url(ler)"
|
||||
|
||||
#: mainframe.py:94
|
||||
msgid "Stopping downloads"
|
||||
msgstr "İndirmeler durduruluyor"
|
||||
|
||||
#: mainframe.py:95
|
||||
msgid "Downloads stopped"
|
||||
msgstr "İndirmeler durduruldu"
|
||||
|
||||
#: mainframe.py:96
|
||||
msgid "You need to provide at least one url"
|
||||
msgstr "En az bir url belirtmeniz gerek"
|
||||
|
||||
#: mainframe.py:97
|
||||
msgid "Downloads started"
|
||||
msgstr "İndirmeler başlatıldı"
|
||||
|
||||
#: mainframe.py:99
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "youtube-dl'nin en son sürümü indiriliyor. Lütfen bekleyin..."
|
||||
|
||||
#: mainframe.py:100
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl indirme başarısız [{0}]"
|
||||
|
||||
#: mainframe.py:101
|
||||
msgid "Youtube-dl downloaded correctly"
|
||||
msgstr "Youtube-dl başarılı olarak indirildi"
|
||||
|
||||
#: mainframe.py:103
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "'{dir}' klasörüne erişilemiyor. Belirtilen yol geçerli değil"
|
||||
|
||||
#: mainframe.py:105
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Kapanırken hata oluştu. Doğru şifreyi girdinizden emin olun"
|
||||
|
||||
#: mainframe.py:107
|
||||
msgid "Shutting down system"
|
||||
msgstr "Sistem kapatılıyor"
|
||||
|
||||
#: mainframe.py:109
|
||||
#: formats.py:10 formats.py:109 mainframe.py:140
|
||||
msgid "Title"
|
||||
msgstr "Başlık"
|
||||
|
||||
#: mainframe.py:110
|
||||
msgid "Size"
|
||||
msgstr "Boyut"
|
||||
#: formats.py:11 formats.py:110
|
||||
msgid "Title + ID"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:111
|
||||
msgid "Percent"
|
||||
msgstr "Yüzde"
|
||||
|
||||
#: mainframe.py:112
|
||||
msgid "ETA"
|
||||
msgstr "TKZ"
|
||||
|
||||
#: mainframe.py:113
|
||||
msgid "Speed"
|
||||
msgstr "Hız"
|
||||
|
||||
#: mainframe.py:114
|
||||
msgid "Status"
|
||||
msgstr "Durum"
|
||||
|
||||
#: optionsframe.py:42
|
||||
msgid "General"
|
||||
msgstr "Genel"
|
||||
|
||||
#: optionsframe.py:43
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: optionsframe.py:44
|
||||
msgid "Audio"
|
||||
msgstr "Ses"
|
||||
|
||||
#: optionsframe.py:45
|
||||
msgid "Playlist"
|
||||
msgstr "Çalma listesi"
|
||||
|
||||
#: optionsframe.py:46
|
||||
msgid "Output"
|
||||
msgstr "Çıkış"
|
||||
|
||||
#: optionsframe.py:47
|
||||
msgid "Subtitles"
|
||||
msgstr "Altyazılar"
|
||||
|
||||
#: optionsframe.py:48
|
||||
msgid "Filesystem"
|
||||
msgstr "Dosya sistemi"
|
||||
|
||||
#: optionsframe.py:49
|
||||
msgid "Shutdown"
|
||||
msgstr "Kapat"
|
||||
|
||||
#: optionsframe.py:50
|
||||
msgid "Authentication"
|
||||
msgstr "Yetkilendirme"
|
||||
|
||||
#: optionsframe.py:51
|
||||
msgid "Connection"
|
||||
msgstr "Bağlantı"
|
||||
|
||||
#: optionsframe.py:52
|
||||
msgid "Log"
|
||||
msgstr "Günlük"
|
||||
|
||||
#: optionsframe.py:53
|
||||
msgid "Commands"
|
||||
msgstr "Komutlar"
|
||||
|
||||
#: optionsframe.py:54
|
||||
msgid "Localization"
|
||||
msgstr "Bölgeselleştirme"
|
||||
|
||||
#: optionsframe.py:400
|
||||
msgid "Enable Log"
|
||||
msgstr "Günlüğü Etkinleştir"
|
||||
|
||||
#: optionsframe.py:401
|
||||
msgid "Write Time"
|
||||
msgstr "Yazma Zamanı"
|
||||
|
||||
#: optionsframe.py:402
|
||||
msgid "Clear Log"
|
||||
msgstr "Günlüğü Temizle"
|
||||
|
||||
#: optionsframe.py:403
|
||||
msgid "View Log"
|
||||
msgstr "Günlüğü Görüntüle"
|
||||
|
||||
#: optionsframe.py:404
|
||||
msgid "Path: {0}"
|
||||
msgstr "Yol {0}"
|
||||
|
||||
#: optionsframe.py:405
|
||||
msgid "Log Size: {0} Bytes"
|
||||
msgstr "Günlük Boyutu: {0} Bytes"
|
||||
|
||||
#: optionsframe.py:406 optionsframe.py:1425
|
||||
msgid "Restart"
|
||||
msgstr "Yeniden başlat"
|
||||
|
||||
#: optionsframe.py:407
|
||||
msgid "Please restart {0}"
|
||||
msgstr "Lütfen yeniden başlatın {0}"
|
||||
|
||||
#: optionsframe.py:517
|
||||
msgid "Shutdown when finished"
|
||||
msgstr "Tamamlandığında kapat"
|
||||
|
||||
#: optionsframe.py:518
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO parola"
|
||||
|
||||
#: optionsframe.py:570
|
||||
msgid "Playlist Start"
|
||||
msgstr "Çalma listesini başlat"
|
||||
|
||||
#: optionsframe.py:571
|
||||
msgid "Playlist Stop"
|
||||
msgstr "Çalma listesini durdur"
|
||||
|
||||
#: optionsframe.py:572
|
||||
msgid "Max Downloads"
|
||||
msgstr "Maks İndirme"
|
||||
|
||||
#: optionsframe.py:630
|
||||
msgid "Retries"
|
||||
msgstr "Deneme"
|
||||
|
||||
#: optionsframe.py:631
|
||||
msgid "User Agent"
|
||||
msgstr "Kullancı Aracısı"
|
||||
|
||||
#: optionsframe.py:632
|
||||
msgid "Referer"
|
||||
msgstr "Yönlendirici"
|
||||
|
||||
#: optionsframe.py:633
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:707
|
||||
msgid "Username"
|
||||
msgstr "Kullancı Adı"
|
||||
|
||||
#: optionsframe.py:708
|
||||
msgid "Password"
|
||||
msgstr "Parola"
|
||||
|
||||
#: optionsframe.py:709
|
||||
msgid "Video Password (vimeo, smotri)"
|
||||
msgstr "Video parolası (vimeo, smotri)"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "high"
|
||||
msgstr "yüksek"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "low"
|
||||
msgstr "düşük"
|
||||
|
||||
#: optionsframe.py:767
|
||||
msgid "mid"
|
||||
msgstr "orta"
|
||||
|
||||
#: optionsframe.py:770
|
||||
msgid "Convert to Audio"
|
||||
msgstr "Sese Çevir"
|
||||
|
||||
#: optionsframe.py:771
|
||||
msgid "Keep Video"
|
||||
msgstr "Videoyu Tut"
|
||||
|
||||
#: optionsframe.py:772
|
||||
msgid "Audio Format"
|
||||
msgstr "Ses Formatı"
|
||||
|
||||
#: optionsframe.py:773
|
||||
msgid "Audio Quality"
|
||||
#: formats.py:12 formats.py:111
|
||||
#, fuzzy
|
||||
msgid "Title + Quality"
|
||||
msgstr "Ses Kalitesi"
|
||||
|
||||
#: optionsframe.py:890
|
||||
#: formats.py:13 formats.py:112
|
||||
msgid "Title + ID + Quality"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:14 formats.py:113
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: formats.py:19 formats.py:118 mainframe.py:498 mainframe.py:501
|
||||
msgid "default"
|
||||
msgstr "varsayılan"
|
||||
|
||||
#: optionsframe.py:891
|
||||
msgid "none"
|
||||
msgstr "hiçbiri"
|
||||
#: mainframe.py:97
|
||||
msgid "Enter URLs below"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:895
|
||||
msgid "Video Format"
|
||||
msgstr "Video Formatı"
|
||||
#: mainframe.py:98
|
||||
msgid "Update"
|
||||
msgstr "Güncelleme"
|
||||
|
||||
#: optionsframe.py:896
|
||||
msgid "Mix Format"
|
||||
msgstr "Karıştırma Formatı"
|
||||
#: mainframe.py:99 optionsframe.py:41
|
||||
msgid "Options"
|
||||
msgstr "Ayarlar"
|
||||
|
||||
#: optionsframe.py:955
|
||||
msgid "Restrict filenames (ASCII)"
|
||||
msgstr "Dosya isimlerini kısıtla (ASCII)"
|
||||
#: mainframe.py:100 optionsframe.py:587
|
||||
msgid "Stop"
|
||||
msgstr "Dur"
|
||||
|
||||
#: optionsframe.py:956
|
||||
msgid "ID as Name"
|
||||
msgstr "İsim yerine Kimlik"
|
||||
#: mainframe.py:101
|
||||
msgid "Info"
|
||||
msgstr "Bilgi"
|
||||
|
||||
#: optionsframe.py:957
|
||||
msgid "Title as Name"
|
||||
msgstr "İsim yerine Başlık"
|
||||
#: mainframe.py:102
|
||||
msgid "Welcome"
|
||||
msgstr "Hoşgeldiniz"
|
||||
|
||||
#: optionsframe.py:958
|
||||
msgid "Custom Template (youtube-dl)"
|
||||
msgstr "Özel Şablon (youtube-dl)"
|
||||
#: mainframe.py:103
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1052
|
||||
msgid "Ignore Errors"
|
||||
msgstr "Hataları Yoksay"
|
||||
#: mainframe.py:105
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1053
|
||||
msgid "Open destination folder"
|
||||
msgstr "Hedef klasörü aç"
|
||||
#: mainframe.py:106
|
||||
#, fuzzy
|
||||
msgid "Download list"
|
||||
msgstr "İndirme"
|
||||
|
||||
#: optionsframe.py:1054
|
||||
msgid "Write info to (.json) file"
|
||||
msgstr "Bilgiyi (.json) dosyasına yaz"
|
||||
#: mainframe.py:107 mainframe.py:511 mainframe.py:529
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1055
|
||||
msgid "Write description to file"
|
||||
msgstr "Açıklamayı dosyaya yaz"
|
||||
#: mainframe.py:108
|
||||
#, fuzzy
|
||||
msgid "Play"
|
||||
msgstr "Çalma listesi"
|
||||
|
||||
#: optionsframe.py:1056
|
||||
msgid "Write thumbnail to disk"
|
||||
msgstr "Önizleme resimini diske kaydet"
|
||||
#: mainframe.py:109
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1057
|
||||
msgid "Filesize"
|
||||
msgstr "Dosya boyutu"
|
||||
#: mainframe.py:110
|
||||
#, fuzzy
|
||||
msgid "Down"
|
||||
msgstr "İndirme"
|
||||
|
||||
#: optionsframe.py:1058
|
||||
msgid "Min"
|
||||
msgstr "En az"
|
||||
#: mainframe.py:111
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1059
|
||||
msgid "Max"
|
||||
msgstr "En fazla"
|
||||
#: mainframe.py:112 mainframe.py:443 mainframe.py:644
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1172
|
||||
msgid "English"
|
||||
msgstr "İngilizce"
|
||||
#: mainframe.py:113 mainframe.py:860 mainframe.py:861 optionsframe.py:585
|
||||
#, fuzzy
|
||||
msgid "Start"
|
||||
msgstr "Yeniden başlat"
|
||||
|
||||
#: optionsframe.py:1173
|
||||
msgid "Greek"
|
||||
msgstr "Yunanca"
|
||||
|
||||
#: optionsframe.py:1174
|
||||
msgid "Portuguese"
|
||||
msgstr "Portekizce"
|
||||
|
||||
#: optionsframe.py:1175
|
||||
msgid "French"
|
||||
msgstr "Fransızca"
|
||||
|
||||
#: optionsframe.py:1176
|
||||
msgid "Italian"
|
||||
msgstr "İtalyanca"
|
||||
|
||||
#: optionsframe.py:1177
|
||||
msgid "Russian"
|
||||
msgstr "Rusça"
|
||||
|
||||
#: optionsframe.py:1178
|
||||
msgid "Spanish"
|
||||
msgstr "İspanyolca"
|
||||
|
||||
#: optionsframe.py:1179
|
||||
msgid "German"
|
||||
msgstr "Almanca"
|
||||
|
||||
#: optionsframe.py:1182
|
||||
msgid "Download subtitle file by language"
|
||||
msgstr "Altyazı dosyasını dile göre indir"
|
||||
|
||||
#: optionsframe.py:1183
|
||||
msgid "Download all available subtitles"
|
||||
msgstr "Var olan tüm altyazıları indir"
|
||||
|
||||
#: optionsframe.py:1184
|
||||
msgid "Download automatic subtitle file (YOUTUBE ONLY)"
|
||||
msgstr "Otomatik altyazıyı indir (SADECE YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:1185
|
||||
msgid "Embed subtitles in the video (only mp4 videos)"
|
||||
msgstr "Altyazıyı videoya yerleştir (sadece mp4 videoları)"
|
||||
|
||||
#: optionsframe.py:1186
|
||||
msgid "Subtitles Language"
|
||||
msgstr "Altyazı Dili"
|
||||
|
||||
#: optionsframe.py:1280
|
||||
#: mainframe.py:114
|
||||
msgid "About"
|
||||
msgstr "Hakkında"
|
||||
|
||||
#: optionsframe.py:1281
|
||||
msgid "Open"
|
||||
msgstr "Aç"
|
||||
#: mainframe.py:115
|
||||
msgid "View Log"
|
||||
msgstr "Günlüğü Görüntüle"
|
||||
|
||||
#: optionsframe.py:1282
|
||||
msgid "Reset Options"
|
||||
msgstr "Ayarları Sıfırla"
|
||||
#: mainframe.py:117
|
||||
#, fuzzy
|
||||
msgid "Successfully downloaded {0} URL(s) in {1} day(s) {2} hour(s) {3} minute(s) {4} second(s)"
|
||||
msgstr "{0} url(ler) {1} gün {2} saat {3} dakika {4} saniye içinde başarı ile indirildi"
|
||||
|
||||
#: optionsframe.py:1283
|
||||
msgid "Save Path"
|
||||
msgstr "Yolu Kaydet"
|
||||
#: mainframe.py:119
|
||||
msgid "Downloads completed"
|
||||
msgstr "İndirmeler tamamlandı"
|
||||
|
||||
#: optionsframe.py:1284
|
||||
msgid "Settings File: {0}"
|
||||
msgstr "Ayar Dosyası: {0}"
|
||||
#: mainframe.py:120
|
||||
msgid "Total Progress: {0:.1f}% | Queued ({1}) Paused ({2}) Active ({3}) Completed ({4}) Error ({5})"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1285
|
||||
#: mainframe.py:121
|
||||
msgid "Stopping downloads"
|
||||
msgstr "İndirmeler durduruluyor"
|
||||
|
||||
#: mainframe.py:122
|
||||
msgid "Downloads stopped"
|
||||
msgstr "İndirmeler durduruldu"
|
||||
|
||||
#: mainframe.py:123
|
||||
#, fuzzy
|
||||
msgid "You need to provide at least one URL"
|
||||
msgstr "En az bir url belirtmeniz gerek"
|
||||
|
||||
#: mainframe.py:124
|
||||
msgid "Downloads started"
|
||||
msgstr "İndirmeler başlatıldı"
|
||||
|
||||
#: mainframe.py:125
|
||||
msgid "Choose Directory"
|
||||
msgstr "Klasör Seç"
|
||||
|
||||
#: optionsframe.py:1370
|
||||
msgid "Command line arguments (e.g. --help)"
|
||||
msgstr "Komut satırı argümanları (örn. --help)"
|
||||
#: mainframe.py:127
|
||||
msgid "Download in progress. Please wait for all downloads to complete"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1426
|
||||
msgid "Localization Language"
|
||||
msgstr "Dil"
|
||||
#: mainframe.py:128
|
||||
msgid "Update already in progress"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:1427
|
||||
#: mainframe.py:130
|
||||
msgid "Downloading latest youtube-dl. Please wait..."
|
||||
msgstr "youtube-dl'nin en son sürümü indiriliyor. Lütfen bekleyin..."
|
||||
|
||||
#: mainframe.py:131
|
||||
msgid "Youtube-dl download failed [{0}]"
|
||||
msgstr "Youtube-dl indirme başarısız [{0}]"
|
||||
|
||||
#: mainframe.py:132
|
||||
msgid "Successfully downloaded youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:134
|
||||
msgid "Unable to open directory: '{dir}'. The specified path does not exist"
|
||||
msgstr "'{dir}' klasörüne erişilemiyor. Belirtilen yol geçerli değil"
|
||||
|
||||
#: mainframe.py:136
|
||||
msgid "Error while shutting down. Make sure you typed the correct password"
|
||||
msgstr "Kapanırken hata oluştu. Doğru şifreyi girdinizden emin olun"
|
||||
|
||||
#: mainframe.py:138
|
||||
msgid "Shutting down system"
|
||||
msgstr "Sistem kapatılıyor"
|
||||
|
||||
#: mainframe.py:141
|
||||
msgid "Extension"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:142
|
||||
msgid "Size"
|
||||
msgstr "Boyut"
|
||||
|
||||
#: mainframe.py:143
|
||||
msgid "Percent"
|
||||
msgstr "Yüzde"
|
||||
|
||||
#: mainframe.py:144
|
||||
msgid "ETA"
|
||||
msgstr "TKZ"
|
||||
|
||||
#: mainframe.py:145
|
||||
msgid "Speed"
|
||||
msgstr "Hız"
|
||||
|
||||
#: mainframe.py:146
|
||||
msgid "Status"
|
||||
msgstr "Durum"
|
||||
|
||||
#: mainframe.py:235
|
||||
msgid "Get URL"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:236
|
||||
#, fuzzy
|
||||
msgid "Get command"
|
||||
msgstr "Komutlar"
|
||||
|
||||
#: mainframe.py:237
|
||||
#, fuzzy
|
||||
msgid "Open destination"
|
||||
msgstr "Hedef klasörü aç"
|
||||
|
||||
#: mainframe.py:238
|
||||
msgid "Re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:453
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:475
|
||||
msgid "Video"
|
||||
msgstr "Video"
|
||||
|
||||
#: mainframe.py:479
|
||||
msgid "Audio"
|
||||
msgstr "Ses"
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "No items selected. Please pick an action"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
msgid "Remove all"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:511
|
||||
#, fuzzy
|
||||
msgid "Remove completed"
|
||||
msgstr "İndirmeler tamamlandı"
|
||||
|
||||
#: mainframe.py:529
|
||||
msgid "Are you sure you want to remove selected items?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:541
|
||||
msgid "Item is active, cannot remove"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:574
|
||||
#, fuzzy
|
||||
msgid "Item is not completed"
|
||||
msgstr "İndirmeler tamamlandı"
|
||||
|
||||
#: mainframe.py:662
|
||||
msgid "Update in progress. Please wait for the update to complete"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:711
|
||||
msgid "Logging is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:886
|
||||
msgid "Shutdown"
|
||||
msgstr "Kapat"
|
||||
|
||||
#: mainframe.py:886
|
||||
#, fuzzy
|
||||
msgid "Shutting down in {0} second(s)"
|
||||
msgstr "Sistem kapatılıyor"
|
||||
|
||||
#: mainframe.py:975
|
||||
msgid "No items to download"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Are you sure you want to exit?"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1055
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1296 mainframe.py:1446
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mainframe.py:1445
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:65
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:66
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:72
|
||||
msgid "General"
|
||||
msgstr "Genel"
|
||||
|
||||
#: optionsframe.py:73
|
||||
#, fuzzy
|
||||
msgid "Formats"
|
||||
msgstr "Karıştırma Formatı"
|
||||
|
||||
#: optionsframe.py:74
|
||||
#, fuzzy
|
||||
msgid "Downloads"
|
||||
msgstr "İndirme"
|
||||
|
||||
#: optionsframe.py:75
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:76
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:313
|
||||
#, fuzzy
|
||||
msgid "Language"
|
||||
msgstr "Altyazı Dili"
|
||||
|
||||
#: optionsframe.py:316
|
||||
msgid "Filename format"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:321
|
||||
#, fuzzy
|
||||
msgid "Filename options"
|
||||
msgstr "Ayarları Sıfırla"
|
||||
|
||||
#: optionsframe.py:322
|
||||
#, fuzzy
|
||||
msgid "Restrict filenames to ASCII"
|
||||
msgstr "Dosya isimlerini kısıtla (ASCII)"
|
||||
|
||||
#: optionsframe.py:324
|
||||
#, fuzzy
|
||||
msgid "More options"
|
||||
msgstr "Ayarları Sıfırla"
|
||||
|
||||
#: optionsframe.py:325
|
||||
msgid "Confirm on exit"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:326
|
||||
msgid "Confirm item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:327
|
||||
msgid "Inform me on download completion"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:329
|
||||
#, fuzzy
|
||||
msgid "Shutdown on download completion"
|
||||
msgstr "İndirmeler tamamlandı"
|
||||
|
||||
#: optionsframe.py:340
|
||||
msgid "SUDO password"
|
||||
msgstr "SUDO parola"
|
||||
|
||||
#: optionsframe.py:418 optionsframe.py:819
|
||||
#, fuzzy
|
||||
msgid "In order for the changes to take effect please restart {0}"
|
||||
msgstr "Değişikliklerin etkin olaması için lütfen yeniden başlatın {0}"
|
||||
|
||||
#: optionsframe.py:1474
|
||||
#: optionsframe.py:419 optionsframe.py:820
|
||||
msgid "Restart"
|
||||
msgstr "Yeniden başlat"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "high"
|
||||
msgstr "yüksek"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "low"
|
||||
msgstr "düşük"
|
||||
|
||||
#: optionsframe.py:466
|
||||
msgid "mid"
|
||||
msgstr "orta"
|
||||
|
||||
#: optionsframe.py:471
|
||||
#, fuzzy
|
||||
msgid "Video formats"
|
||||
msgstr "Video Formatı"
|
||||
|
||||
#: optionsframe.py:474
|
||||
#, fuzzy
|
||||
msgid "Audio formats"
|
||||
msgstr "Ses Formatı"
|
||||
|
||||
#: optionsframe.py:477
|
||||
msgid "Post-Process options"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:478
|
||||
msgid "Keep original files"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:479
|
||||
msgid "Extract audio from video file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:480
|
||||
msgid "Embed thumbnail in audio file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:481
|
||||
msgid "Add metadata to file"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:483
|
||||
#, fuzzy
|
||||
msgid "Audio quality"
|
||||
msgstr "Ses Kalitesi"
|
||||
|
||||
#: optionsframe.py:541
|
||||
msgid "English"
|
||||
msgstr "İngilizce"
|
||||
|
||||
#: optionsframe.py:542
|
||||
msgid "French"
|
||||
msgstr "Fransızca"
|
||||
|
||||
#: optionsframe.py:543
|
||||
msgid "German"
|
||||
msgstr "Almanca"
|
||||
|
||||
#: optionsframe.py:544
|
||||
msgid "Greek"
|
||||
msgstr "Yunanca"
|
||||
|
||||
#: optionsframe.py:545
|
||||
msgid "Hebrew"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:546
|
||||
msgid "Italian"
|
||||
msgstr "İtalyanca"
|
||||
|
||||
#: optionsframe.py:547
|
||||
msgid "Portuguese"
|
||||
msgstr "Portekizce"
|
||||
|
||||
#: optionsframe.py:548
|
||||
msgid "Russian"
|
||||
msgstr "Rusça"
|
||||
|
||||
#: optionsframe.py:549
|
||||
msgid "Spanish"
|
||||
msgstr "İspanyolca"
|
||||
|
||||
#: optionsframe.py:550
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:551
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:567
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:568
|
||||
#, fuzzy
|
||||
msgid "Automatic subtitles (YOUTUBE ONLY)"
|
||||
msgstr "Otomatik altyazıyı indir (SADECE YOUTUBE)"
|
||||
|
||||
#: optionsframe.py:569
|
||||
#, fuzzy
|
||||
msgid "All available subtitles"
|
||||
msgstr "Var olan tüm altyazıları indir"
|
||||
|
||||
#: optionsframe.py:570
|
||||
#, fuzzy
|
||||
msgid "Subtitles by language"
|
||||
msgstr "Altyazı Dili"
|
||||
|
||||
#: optionsframe.py:576
|
||||
msgid "Subtitles"
|
||||
msgstr "Altyazılar"
|
||||
|
||||
#: optionsframe.py:580
|
||||
#, fuzzy
|
||||
msgid "Subtitles options"
|
||||
msgstr "Altyazılar"
|
||||
|
||||
#: optionsframe.py:581
|
||||
#, fuzzy
|
||||
msgid "Embed subtitles into video file (mp4 ONLY)"
|
||||
msgstr "Altyazıyı videoya yerleştir (sadece mp4 videoları)"
|
||||
|
||||
#: optionsframe.py:583
|
||||
msgid "Playlist"
|
||||
msgstr "Çalma listesi"
|
||||
|
||||
#: optionsframe.py:589 optionsframe.py:594
|
||||
msgid "Max"
|
||||
msgstr "En fazla"
|
||||
|
||||
#: optionsframe.py:592
|
||||
msgid "Filesize"
|
||||
msgstr "Dosya boyutu"
|
||||
|
||||
#: optionsframe.py:597
|
||||
msgid "Min"
|
||||
msgstr "En az"
|
||||
|
||||
#: optionsframe.py:726
|
||||
msgid "Retries"
|
||||
msgstr "Deneme"
|
||||
|
||||
#: optionsframe.py:729
|
||||
msgid "Authentication"
|
||||
msgstr "Yetkilendirme"
|
||||
|
||||
#: optionsframe.py:731
|
||||
msgid "Username"
|
||||
msgstr "Kullancı Adı"
|
||||
|
||||
#: optionsframe.py:733
|
||||
msgid "Password"
|
||||
msgstr "Parola"
|
||||
|
||||
#: optionsframe.py:735
|
||||
#, fuzzy
|
||||
msgid "Video password"
|
||||
msgstr "SUDO parola"
|
||||
|
||||
#: optionsframe.py:738
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:740
|
||||
msgid "Proxy"
|
||||
msgstr "Proxy"
|
||||
|
||||
#: optionsframe.py:742
|
||||
#, fuzzy
|
||||
msgid "User agent"
|
||||
msgstr "Kullancı Aracısı"
|
||||
|
||||
#: optionsframe.py:744
|
||||
msgid "Referer"
|
||||
msgstr "Yönlendirici"
|
||||
|
||||
#: optionsframe.py:747
|
||||
msgid "Logging"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:749
|
||||
#, fuzzy
|
||||
msgid "Enable log"
|
||||
msgstr "Günlüğü Etkinleştir"
|
||||
|
||||
#: optionsframe.py:750
|
||||
#, fuzzy
|
||||
msgid "View"
|
||||
msgstr "Günlüğü Görüntüle"
|
||||
|
||||
#: optionsframe.py:751
|
||||
#, fuzzy
|
||||
msgid "Clear"
|
||||
msgstr "Günlüğü Temizle"
|
||||
|
||||
#: optionsframe.py:861
|
||||
#, fuzzy
|
||||
msgid "Youtube-dl command line options (e.g. --help)"
|
||||
msgstr "Komut satırı argümanları (örn. --help)"
|
||||
|
||||
#: optionsframe.py:864
|
||||
#, fuzzy
|
||||
msgid "Extra options"
|
||||
msgstr "Ayarları Sıfırla"
|
||||
|
||||
#: optionsframe.py:866
|
||||
msgid "Debug youtube-dl"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:867
|
||||
#, fuzzy
|
||||
msgid "Ignore errors"
|
||||
msgstr "Hataları Yoksay"
|
||||
|
||||
#: optionsframe.py:868
|
||||
msgid "Ignore youtube-dl config"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:869
|
||||
msgid "No mtime"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:870
|
||||
msgid "Prefer native HLS"
|
||||
msgstr ""
|
||||
|
||||
#: optionsframe.py:931
|
||||
msgid "Log Viewer"
|
||||
msgstr "Günlük Görütünlüyücüsü"
|
||||
|
@ -16,6 +16,11 @@ from .utils import (
|
||||
check_path
|
||||
)
|
||||
|
||||
from .formats import (
|
||||
OUTPUT_FORMATS,
|
||||
FORMATS
|
||||
)
|
||||
|
||||
|
||||
class OptionsManager(object):
|
||||
|
||||
@ -87,12 +92,8 @@ class OptionsManager(object):
|
||||
restrict_filenames (boolean): If True youtube-dl will restrict
|
||||
the downloaded file filename to ASCII characters only.
|
||||
|
||||
output_format (string): This option sets the downloaded file
|
||||
output template. Available values are 'id', 'title', 'custom'
|
||||
|
||||
'id' -> '%(id)s.%(ext)s'
|
||||
'title' -> '%(title)s.%(ext)s'
|
||||
'custom' -> Use 'output_template' as output template.
|
||||
output_format (int): This option sets the downloaded file
|
||||
output template. See formats.OUTPUT_FORMATS for more info.
|
||||
|
||||
output_template (string): Can be any output template supported
|
||||
by youtube-dl.
|
||||
@ -198,18 +199,57 @@ class OptionsManager(object):
|
||||
If window becomes to small the program will reset its size.
|
||||
See _settings_are_valid method MIN_FRAME_SIZE.
|
||||
|
||||
save_path_dirs (list): List that contains temporary save paths.
|
||||
|
||||
selected_video_formats (list): List that contains the selected
|
||||
video formats to display on the main window.
|
||||
|
||||
selected_audio_formats (list): List that contains the selected
|
||||
audio formats to display on the main window.
|
||||
|
||||
selected_format (string): Current format selected on the main window.
|
||||
|
||||
youtube_dl_debug (boolean): When True will pass '-v' flag to youtube-dl.
|
||||
|
||||
ignore_config (boolean): When True will ignore youtube-dl config file options.
|
||||
|
||||
confirm_exit (boolean): When True create popup to confirm exiting youtube-dl-gui.
|
||||
|
||||
native_hls (boolean): When True youtube-dl will use the native HLS implementation.
|
||||
|
||||
show_completion_popup (boolean): When True youtube-dl-gui will create a popup
|
||||
to inform the user for the download completion.
|
||||
|
||||
confirm_deletion (boolean): When True ask user before item removal.
|
||||
|
||||
nomtime (boolean): When True will not use the Last-modified header to
|
||||
set the file modification time.
|
||||
|
||||
embed_thumbnail (boolean): When True will embed the thumbnail in
|
||||
the audio file as cover art.
|
||||
|
||||
add_metadata (boolean): When True will write metadata to file.
|
||||
|
||||
"""
|
||||
#REFACTOR Remove old options & check options validation
|
||||
self.options = {
|
||||
'save_path': os_path_expanduser('~'),
|
||||
'save_path_dirs': [
|
||||
os_path_expanduser('~'),
|
||||
os.path.join(os_path_expanduser('~'), "Downloads"),
|
||||
os.path.join(os_path_expanduser('~'), "Desktop"),
|
||||
os.path.join(os_path_expanduser('~'), "Videos"),
|
||||
os.path.join(os_path_expanduser('~'), "Music"),
|
||||
],
|
||||
'video_format': '0',
|
||||
'second_video_format': '0',
|
||||
'to_audio': False,
|
||||
'keep_video': False,
|
||||
'audio_format': 'mp3',
|
||||
'audio_format': '',
|
||||
'audio_quality': '5',
|
||||
'restrict_filenames': False,
|
||||
'output_format': 'title',
|
||||
'output_template': '%(uploader)s/%(title)s.%(ext)s',
|
||||
'output_format': 1,
|
||||
'output_template': os.path.join('%(uploader)s', '%(title)s.%(ext)s'),
|
||||
'playlist_start': 1,
|
||||
'playlist_end': 0,
|
||||
'max_downloads': 0,
|
||||
@ -223,7 +263,7 @@ class OptionsManager(object):
|
||||
'embed_subs': False,
|
||||
'subs_lang': 'en',
|
||||
'ignore_errors': True,
|
||||
'open_dl_dir': True,
|
||||
'open_dl_dir': False,
|
||||
'write_description': False,
|
||||
'write_info': False,
|
||||
'write_thumbnail': False,
|
||||
@ -239,11 +279,23 @@ class OptionsManager(object):
|
||||
'youtubedl_path': self.config_path,
|
||||
'cmd_args': '',
|
||||
'enable_log': True,
|
||||
'log_time': False,
|
||||
'log_time': True,
|
||||
'workers_number': 3,
|
||||
'locale_name': 'en_US',
|
||||
'main_win_size': (700, 490),
|
||||
'opts_win_size': (640, 270)
|
||||
'main_win_size': (740, 490),
|
||||
'opts_win_size': (640, 490),
|
||||
'selected_video_formats': ['webm', 'mp4'],
|
||||
'selected_audio_formats': ['mp3', 'm4a', 'vorbis'],
|
||||
'selected_format': '0',
|
||||
'youtube_dl_debug': False,
|
||||
'ignore_config': True,
|
||||
'confirm_exit': True,
|
||||
'native_hls': True,
|
||||
'show_completion_popup': True,
|
||||
'confirm_deletion': True,
|
||||
'nomtime': False,
|
||||
'embed_thumbnail': False,
|
||||
'add_metadata': False
|
||||
}
|
||||
|
||||
def load_from_file(self):
|
||||
@ -287,15 +339,13 @@ class OptionsManager(object):
|
||||
'264', '138', '242', '243', '244', '247', '248', '271', '272', '82',
|
||||
'83', '84', '85', '100', '101', '102', '139', '140', '141', '171', '172')
|
||||
|
||||
VALID_AUDIO_FORMAT = ('mp3', 'wav', 'aac', 'm4a', 'vorbis', 'opus')
|
||||
VALID_AUDIO_FORMAT = ('mp3', 'wav', 'aac', 'm4a', 'vorbis', 'opus', '')
|
||||
|
||||
VALID_AUDIO_QUALITY = ('0', '5', '9')
|
||||
|
||||
VALID_OUTPUT_FORMAT = ('title', 'id', 'custom')
|
||||
|
||||
VALID_FILESIZE_UNIT = ('', 'k', 'm', 'g', 't', 'p', 'e', 'z', 'y')
|
||||
|
||||
VALID_SUB_LANGUAGE = ('en', 'gr', 'pt', 'fr', 'it', 'ru', 'es', 'de')
|
||||
VALID_SUB_LANGUAGE = ('en', 'el', 'pt', 'fr', 'it', 'ru', 'es', 'de', 'he', 'sv', 'tr')
|
||||
|
||||
MIN_FRAME_SIZE = 100
|
||||
|
||||
@ -312,11 +362,11 @@ class OptionsManager(object):
|
||||
|
||||
# Check if each key has a valid value
|
||||
rules_dict = {
|
||||
'video_format': VALID_VIDEO_FORMAT,
|
||||
'video_format': FORMATS.keys(),
|
||||
'second_video_format': VALID_VIDEO_FORMAT,
|
||||
'audio_format': VALID_AUDIO_FORMAT,
|
||||
'audio_quality': VALID_AUDIO_QUALITY,
|
||||
'output_format': VALID_OUTPUT_FORMAT,
|
||||
'output_format': OUTPUT_FORMATS.keys(),
|
||||
'min_filesize_unit': VALID_FILESIZE_UNIT,
|
||||
'max_filesize_unit': VALID_FILESIZE_UNIT,
|
||||
'subs_lang': VALID_SUB_LANGUAGE
|
||||
|
@ -97,10 +97,16 @@ class OptionsParser(object):
|
||||
OptionHolder('save_path', '-o', ''),
|
||||
OptionHolder('embed_subs', '--embed-subs', False, ['write_auto_subs', 'write_subs']),
|
||||
OptionHolder('to_audio', '-x', False),
|
||||
OptionHolder('audio_format', '--audio-format', '', ['to_audio']),
|
||||
OptionHolder('audio_format', '--audio-format', ''),
|
||||
OptionHolder('video_format', '-f', '0'),
|
||||
OptionHolder('subs_lang', '--sub-lang', '', ['write_subs']),
|
||||
OptionHolder('audio_quality', '--audio-quality', '5', ['to_audio'])
|
||||
OptionHolder('audio_quality', '--audio-quality', '5', ['to_audio']),
|
||||
OptionHolder('youtube_dl_debug', '-v', False),
|
||||
OptionHolder('ignore_config', '--ignore-config', False),
|
||||
OptionHolder('native_hls', '--hls-prefer-native', False),
|
||||
OptionHolder('nomtime', '--no-mtime', False),
|
||||
OptionHolder('embed_thumbnail', '--embed-thumbnail', False),
|
||||
OptionHolder('add_metadata', '--add-metadata', False)
|
||||
]
|
||||
|
||||
def parse(self, options_dictionary):
|
||||
@ -128,7 +134,44 @@ class OptionsParser(object):
|
||||
|
||||
# Parse basic youtube-dl command line options
|
||||
for option in self._ydl_options:
|
||||
if option.check_requirements(options_dict):
|
||||
#NOTE Special case should be removed
|
||||
if option.name == "to_audio":
|
||||
if options_dict["audio_format"] == "":
|
||||
value = options_dict[option.name]
|
||||
|
||||
if value != option.default_value:
|
||||
options_list.append(option.flag)
|
||||
elif option.name == "audio_format":
|
||||
value = options_dict[option.name]
|
||||
|
||||
if value != option.default_value:
|
||||
options_list.append("-x")
|
||||
options_list.append(option.flag)
|
||||
options_list.append(to_string(value))
|
||||
|
||||
#NOTE Temp fix
|
||||
# If current 'audio_quality' is not the default one ('5')
|
||||
# then append the audio quality flag and value to the
|
||||
# options list
|
||||
if options_dict["audio_quality"] != "5":
|
||||
options_list.append("--audio-quality")
|
||||
options_list.append(to_string(options_dict["audio_quality"]))
|
||||
|
||||
elif option.name == "audio_quality":
|
||||
# If the '--audio-quality' is not already in the options list
|
||||
# from the above branch then follow the standard procedure.
|
||||
# We don't have to worry for the sequence in which the code
|
||||
# will be executed since the 'audio_quality' option is placed
|
||||
# after the 'audio_format' option in the self._ydl_options list
|
||||
if option.flag not in options_list:
|
||||
if option.check_requirements(options_dict):
|
||||
value = options_dict[option.name]
|
||||
|
||||
if value != option.default_value:
|
||||
options_list.append(option.flag)
|
||||
options_list.append(to_string(value))
|
||||
|
||||
elif option.check_requirements(options_dict):
|
||||
value = options_dict[option.name]
|
||||
|
||||
if value != option.default_value:
|
||||
@ -155,14 +198,20 @@ class OptionsParser(object):
|
||||
"""
|
||||
save_path = remove_shortcuts(options_dict['save_path'])
|
||||
|
||||
if options_dict['output_format'] == 'id':
|
||||
save_path = os.path.join(save_path, '%(id)s.%(ext)s')
|
||||
elif options_dict['output_format'] == 'title':
|
||||
save_path = os.path.join(save_path, '%(title)s.%(ext)s')
|
||||
if options_dict["output_format"] == 0:
|
||||
template = "%(id)s.%(ext)s"
|
||||
elif options_dict["output_format"] == 1:
|
||||
template = "%(title)s.%(ext)s"
|
||||
elif options_dict["output_format"] == 2:
|
||||
template = "%(title)s-%(id)s.%(ext)s"
|
||||
elif options_dict["output_format"] == 4:
|
||||
template = "%(title)s-%(height)sp.%(ext)s"
|
||||
elif options_dict["output_format"] == 5:
|
||||
template = "%(title)s-%(id)s-%(height)sp.%(ext)s"
|
||||
else:
|
||||
save_path = os.path.join(save_path, options_dict['output_template'])
|
||||
template = options_dict["output_template"]
|
||||
|
||||
options_dict['save_path'] = save_path
|
||||
options_dict["save_path"] = os.path.join(save_path, template)
|
||||
|
||||
def _build_videoformat(self, options_dict):
|
||||
"""Build the video format.
|
||||
|
@ -14,9 +14,17 @@ from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import math
|
||||
import locale
|
||||
import subprocess
|
||||
|
||||
try:
|
||||
from twodict import TwoWayOrderedDict
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
from .info import __appname__
|
||||
from .version import __version__
|
||||
|
||||
@ -29,6 +37,11 @@ if os.name == 'nt':
|
||||
YOUTUBEDL_BIN += '.exe'
|
||||
|
||||
|
||||
FILESIZE_METRICS = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]
|
||||
|
||||
KILO_SIZE = 1024.0
|
||||
|
||||
|
||||
def get_encoding():
|
||||
"""Return system encoding. """
|
||||
try:
|
||||
@ -74,7 +87,7 @@ def convert_on_bounds(func):
|
||||
|
||||
for sub_item in item:
|
||||
if isinstance(item, dict):
|
||||
temp_list.append((sub_item, covert_item(item[sub_item])))
|
||||
temp_list.append((sub_item, convert_item(item[sub_item])))
|
||||
else:
|
||||
temp_list.append(convert_item(sub_item))
|
||||
|
||||
@ -92,6 +105,7 @@ def convert_on_bounds(func):
|
||||
|
||||
# See: https://github.com/MrS0m30n3/youtube-dl-gui/issues/57
|
||||
# Patch os functions to convert between 'str' and 'unicode' on app bounds
|
||||
os_sep = unicode(os.sep)
|
||||
os_getenv = convert_on_bounds(os.getenv)
|
||||
os_makedirs = convert_on_bounds(os.makedirs)
|
||||
os_path_isdir = convert_on_bounds(os.path.isdir)
|
||||
@ -105,6 +119,12 @@ os_path_expanduser = convert_on_bounds(os.path.expanduser)
|
||||
if os.name == 'nt':
|
||||
os_startfile = convert_on_bounds(os.startfile)
|
||||
|
||||
def remove_file(filename):
|
||||
if os_path_exists(filename):
|
||||
os.remove(filename)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def remove_shortcuts(path):
|
||||
"""Return given path after removing the shortcuts. """
|
||||
@ -116,18 +136,22 @@ def absolute_path(filename):
|
||||
return os_path_dirname(os_path_realpath(os_path_abspath(filename)))
|
||||
|
||||
|
||||
def open_dir(path):
|
||||
"""Open path using default file navigator.
|
||||
Return True if path exists else False. """
|
||||
path = remove_shortcuts(path)
|
||||
def open_file(file_path):
|
||||
"""Open file in file_path using the default OS application.
|
||||
|
||||
if not os_path_exists(path):
|
||||
Returns:
|
||||
True on success else False.
|
||||
|
||||
"""
|
||||
file_path = remove_shortcuts(file_path)
|
||||
|
||||
if not os_path_exists(file_path):
|
||||
return False
|
||||
|
||||
if os.name == 'nt':
|
||||
os_startfile(path)
|
||||
if os.name == "nt":
|
||||
os_startfile(file_path)
|
||||
else:
|
||||
subprocess.call(('xdg-open', path))
|
||||
subprocess.call(("xdg-open", file_path))
|
||||
|
||||
return True
|
||||
|
||||
@ -244,20 +268,16 @@ def get_locale_file():
|
||||
Note:
|
||||
Paths that get_locale_file() func searches.
|
||||
|
||||
__main__ dir, library dir, /usr/share/youtube-dlg/locale
|
||||
__main__ dir, library dir
|
||||
|
||||
"""
|
||||
DIR_NAME = 'locale'
|
||||
DIR_NAME = "locale"
|
||||
|
||||
SEARCH_DIRS = [
|
||||
os.path.join(absolute_path(sys.argv[0]), DIR_NAME),
|
||||
os.path.join(os_path_dirname(__file__), DIR_NAME),
|
||||
os.path.join('/usr', 'share', __appname__.lower(), DIR_NAME)
|
||||
]
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
SEARCH_DIRS.append('/usr/local/Cellar/youtube-dl-gui/{version}/share/locale'.format(version=__version__))
|
||||
|
||||
for directory in SEARCH_DIRS:
|
||||
if os_path_isdir(directory):
|
||||
return directory
|
||||
@ -271,242 +291,77 @@ def get_icon_file():
|
||||
Returns:
|
||||
The path to youtube-dlg icon file if exists, else returns None.
|
||||
|
||||
Note:
|
||||
Paths that get_icon_file() function searches.
|
||||
|
||||
__main__ dir, library dir, /usr/share/pixmaps, $XDG_DATA_DIRS
|
||||
|
||||
"""
|
||||
SIZES = ('256x256', '128x128', '64x64', '48x48', '32x32', '16x16')
|
||||
ICON_NAME = 'youtube-dl-gui_%s.png'
|
||||
ICON_NAME = "youtube-dl-gui.png"
|
||||
|
||||
ICONS_LIST = [ICON_NAME % size for size in SIZES]
|
||||
pixmaps_dir = get_pixmaps_dir()
|
||||
|
||||
search_dirs = [
|
||||
os.path.join(absolute_path(sys.argv[0]), 'icons'),
|
||||
os.path.join(os_path_dirname(__file__), 'icons'),
|
||||
]
|
||||
if pixmaps_dir is not None:
|
||||
icon_file = os.path.join(pixmaps_dir, ICON_NAME)
|
||||
|
||||
# Append $XDG_DATA_DIRS on search_dirs
|
||||
path = os_getenv('XDG_DATA_DIRS')
|
||||
|
||||
if path is not None:
|
||||
for xdg_path in path.split(':'):
|
||||
xdg_path = os.path.join(xdg_path, 'icons', 'hicolor')
|
||||
|
||||
for size in SIZES:
|
||||
search_dirs.append(os.path.join(xdg_path, size, 'apps'))
|
||||
|
||||
# Also append /usr/share/pixmaps on search_dirs
|
||||
search_dirs.append('/usr/share/pixmaps')
|
||||
|
||||
for directory in search_dirs:
|
||||
for icon in ICONS_LIST:
|
||||
icon_file = os.path.join(directory, icon)
|
||||
|
||||
if os_path_exists(icon_file):
|
||||
return icon_file
|
||||
if os_path_exists(icon_file):
|
||||
return icon_file
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class TwoWayOrderedDict(dict):
|
||||
|
||||
"""Custom data structure which implements a two way ordrered dictionary.
|
||||
|
||||
TwoWayOrderedDict it's a custom dictionary in which you can get the
|
||||
key:value relationship but you can also get the value:key relationship.
|
||||
It also remembers the order in which the items were inserted and supports
|
||||
almost all the features of the build-in dict.
|
||||
def get_pixmaps_dir():
|
||||
"""Return absolute path to the pixmaps icons folder.
|
||||
|
||||
Note:
|
||||
Ways to create a new dictionary.
|
||||
|
||||
*) d = TwoWayOrderedDict(a=1, b=2) (Unordered)
|
||||
*) d = TwoWayOrderedDict({'a': 1, 'b': 2}) (Unordered)
|
||||
|
||||
*) d = TwoWayOrderedDict([('a', 1), ('b', 2)]) (Ordered)
|
||||
*) d = TwoWayOrderedDict(zip(['a', 'b', 'c'], [1, 2, 3])) (Ordered)
|
||||
|
||||
Examples:
|
||||
>>> d = TwoWayOrderedDict(a=1, b=2)
|
||||
>>> d['a']
|
||||
1
|
||||
>>> d[1]
|
||||
'a'
|
||||
>>> print d
|
||||
TwoWayOrderedDict([('a', 1), ('b', 2)])
|
||||
Paths we search: __main__ dir, library dir
|
||||
|
||||
"""
|
||||
search_dirs = [
|
||||
os.path.join(absolute_path(sys.argv[0]), "data"),
|
||||
os.path.join(os_path_dirname(__file__), "data")
|
||||
]
|
||||
|
||||
_PREV = 0
|
||||
_KEY = 1
|
||||
_NEXT = 2
|
||||
for directory in search_dirs:
|
||||
pixmaps_dir = os.path.join(directory, "pixmaps")
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._items = item = []
|
||||
self._items += [item, None, item] # Double linked list [prev, key, next]
|
||||
self._items_map = {} # Map link list items into keys to speed up lookup
|
||||
self._load(args, kwargs)
|
||||
if os_path_exists(pixmaps_dir):
|
||||
return pixmaps_dir
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
if key in self:
|
||||
# If self[key] == key for example {'b': 'b'} and we
|
||||
# do d['b'] = 2 then we dont want to remove the 'b'
|
||||
# from our linked list because we will lose the order
|
||||
if self[key] in self._items_map and key != self[key]:
|
||||
self._remove_mapped_key(self[key])
|
||||
return None
|
||||
|
||||
dict.__delitem__(self, self[key])
|
||||
|
||||
if value in self:
|
||||
# If value == key we dont have to remove the
|
||||
# value from the items_map because the value is
|
||||
# the key and we want to keep the key in our
|
||||
# linked list in order to keep the order.
|
||||
if value in self._items_map and key != value:
|
||||
self._remove_mapped_key(value)
|
||||
def to_bytes(string):
|
||||
"""Convert given youtube-dl size string to bytes."""
|
||||
value = 0.0
|
||||
|
||||
if self[value] in self._items_map:
|
||||
self._remove_mapped_key(self[value])
|
||||
for index, metric in enumerate(reversed(FILESIZE_METRICS)):
|
||||
if metric in string:
|
||||
value = float(string.split(metric)[0])
|
||||
break
|
||||
|
||||
# Check if self[value] is in the dict
|
||||
# for cases like {'a': 'a'} where we
|
||||
# have only one copy instead of {'a': 1, 1: 'a'}
|
||||
if self[value] in self:
|
||||
dict.__delitem__(self, self[value])
|
||||
exponent = index * (-1) + (len(FILESIZE_METRICS) - 1)
|
||||
|
||||
if key not in self._items_map:
|
||||
last = self._items[self._PREV] # self._items prev always points to the last item
|
||||
last[self._NEXT] = self._items[self._PREV] = self._items_map[key] = [last, key, self._items]
|
||||
return round(value * (KILO_SIZE ** exponent), 2)
|
||||
|
||||
dict.__setitem__(self, key, value)
|
||||
dict.__setitem__(self, value, key)
|
||||
|
||||
def __delitem__(self, key):
|
||||
if self[key] in self._items_map:
|
||||
self._remove_mapped_key(self[key])
|
||||
def format_bytes(bytes):
|
||||
"""Format bytes to youtube-dl size output strings."""
|
||||
if bytes == 0.0:
|
||||
exponent = 0
|
||||
else:
|
||||
exponent = int(math.log(bytes, KILO_SIZE))
|
||||
|
||||
if key in self._items_map:
|
||||
self._remove_mapped_key(key)
|
||||
suffix = FILESIZE_METRICS[exponent]
|
||||
output_value = bytes / (KILO_SIZE ** exponent)
|
||||
|
||||
dict.__delitem__(self, self[key])
|
||||
return "%.2f%s" % (output_value, suffix)
|
||||
|
||||
# Check if key is in the dict
|
||||
# for cases like {'a': 'a'} where we
|
||||
# have only one copy instead of {'a': 1, 1: 'a'}
|
||||
if key in self:
|
||||
dict.__delitem__(self, key)
|
||||
|
||||
def __len__(self):
|
||||
return len(self._items_map)
|
||||
def build_command(options_list, url):
|
||||
"""Build the youtube-dl command line string."""
|
||||
|
||||
def __iter__(self):
|
||||
curr = self._items[self._NEXT]
|
||||
while curr is not self._items:
|
||||
yield curr[self._KEY]
|
||||
curr = curr[self._NEXT]
|
||||
# If option has spaces wrap it with double quotes
|
||||
# Probably not the best solution since if the option already contains
|
||||
# double quotes it will be a mess, see issue #173
|
||||
options = ["\"{}\"".format(option) if " " in option else option for option in options_list]
|
||||
|
||||
def __reversed__(self):
|
||||
curr = self._items[self._PREV]
|
||||
while curr is not self._items:
|
||||
yield curr[self._KEY]
|
||||
curr = curr[self._PREV]
|
||||
# Always wrap the url with double quotes
|
||||
url = "\"{}\"".format(url)
|
||||
|
||||
def __repr__(self):
|
||||
return '%s(%r)' % (self.__class__.__name__, self.items())
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, self.__class__):
|
||||
return self.items() == other.items()
|
||||
return False
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self == other
|
||||
|
||||
def _remove_mapped_key(self, key):
|
||||
"""Remove the given key both from the linked list
|
||||
and the map dictionary. """
|
||||
prev, __, next = self._items_map.pop(key)
|
||||
prev[self._NEXT] = next
|
||||
next[self._PREV] = prev
|
||||
|
||||
def _load(self, args, kwargs):
|
||||
"""Load items into our dictionary. """
|
||||
for item in args:
|
||||
if type(item) == dict:
|
||||
item = item.iteritems()
|
||||
|
||||
for key, value in item:
|
||||
self[key] = value
|
||||
|
||||
for key, value in kwargs.items():
|
||||
self[key] = value
|
||||
|
||||
def items(self):
|
||||
return [(key, self[key]) for key in self]
|
||||
|
||||
def values(self):
|
||||
return [self[key] for key in self]
|
||||
|
||||
def keys(self):
|
||||
return list(self)
|
||||
|
||||
def pop(self, key, default=_RANDOM_OBJECT):
|
||||
try:
|
||||
value = self[key]
|
||||
|
||||
del self[key]
|
||||
except KeyError as error:
|
||||
if default == _RANDOM_OBJECT:
|
||||
raise error
|
||||
|
||||
value = default
|
||||
|
||||
return value
|
||||
|
||||
def popitem(self, last=True):
|
||||
"""Remove and return a (key, value) pair from the dictionary.
|
||||
If the dictionary is empty calling popitem() raises a KeyError.
|
||||
|
||||
Args:
|
||||
last (bool): When False popitem() will remove the first item
|
||||
from the list.
|
||||
|
||||
Note:
|
||||
popitem() is useful to destructively iterate over a dictionary.
|
||||
|
||||
Raises:
|
||||
KeyError
|
||||
|
||||
"""
|
||||
if not self:
|
||||
raise KeyError('popitem(): dictionary is empty')
|
||||
|
||||
if last:
|
||||
__, key, __ = self._items[self._PREV]
|
||||
else:
|
||||
__, key, __ = self._items[self._NEXT]
|
||||
|
||||
value = self.pop(key)
|
||||
|
||||
return key, value
|
||||
|
||||
def update(self, *args, **kwargs):
|
||||
self._load(args, kwargs)
|
||||
|
||||
def setdefault(self, key, default=None):
|
||||
try:
|
||||
return self[key]
|
||||
except KeyError:
|
||||
self[key] = default
|
||||
return default
|
||||
|
||||
def copy(self):
|
||||
return self.__class__(self.items())
|
||||
|
||||
def clear(self):
|
||||
self._items = item = []
|
||||
self._items += [item, None, item]
|
||||
self._items_map = {}
|
||||
dict.clear(self)
|
||||
return " ".join([YOUTUBEDL_BIN] + options + [url])
|
||||
|
434
youtube_dl_gui/widgets.py
Normal file
@ -0,0 +1,434 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
|
||||
try:
|
||||
import wx
|
||||
except ImportError as error:
|
||||
print error
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def crt_command_event(event_type, event_id=0):
|
||||
"""Shortcut to create command events."""
|
||||
return wx.CommandEvent(event_type.typeId, event_id)
|
||||
|
||||
|
||||
class ListBoxWithHeaders(wx.ListBox):
|
||||
|
||||
"""Custom ListBox object that supports 'headers'.
|
||||
|
||||
Attributes:
|
||||
NAME (string): Default name for the name argument of the __init__.
|
||||
|
||||
TEXT_PREFIX (string): Text to add before normal items in order to
|
||||
distinguish them (normal items) from headers.
|
||||
|
||||
EVENTS (list): List with events to overwrite to avoid header selection.
|
||||
|
||||
"""
|
||||
|
||||
NAME = "listBoxWithHeaders"
|
||||
|
||||
TEXT_PREFIX = " "
|
||||
|
||||
EVENTS = [
|
||||
wx.EVT_LEFT_DOWN,
|
||||
wx.EVT_LEFT_DCLICK,
|
||||
wx.EVT_RIGHT_DOWN,
|
||||
wx.EVT_RIGHT_DCLICK,
|
||||
wx.EVT_MIDDLE_DOWN,
|
||||
wx.EVT_MIDDLE_DCLICK
|
||||
]
|
||||
|
||||
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
|
||||
size=wx.DefaultSize, choices=[], style=0, validator=wx.DefaultValidator, name=NAME):
|
||||
super(ListBoxWithHeaders, self).__init__(parent, id, pos, size, [], style, validator, name)
|
||||
self.__headers = set()
|
||||
|
||||
# Ignore all key events i'm bored to handle the header selection
|
||||
self.Bind(wx.EVT_KEY_DOWN, lambda event: None)
|
||||
|
||||
# Make sure that a header is never selected
|
||||
self.Bind(wx.EVT_LISTBOX, self._on_listbox)
|
||||
for event in self.EVENTS:
|
||||
self.Bind(event, self._disable_header_selection)
|
||||
|
||||
# Append the items in our own way in order to add the TEXT_PREFIX
|
||||
self.AppendItems(choices)
|
||||
|
||||
def _disable_header_selection(self, event):
|
||||
"""Stop event propagation if the selected item is a header."""
|
||||
row = self.HitTest(event.GetPosition())
|
||||
event_skip = True
|
||||
|
||||
if row != wx.NOT_FOUND and self.GetString(row) in self.__headers:
|
||||
event_skip = False
|
||||
|
||||
event.Skip(event_skip)
|
||||
|
||||
def _on_listbox(self, event):
|
||||
"""Make sure no header is selected."""
|
||||
if event.GetString() in self.__headers:
|
||||
self.Deselect(event.GetSelection())
|
||||
event.Skip()
|
||||
|
||||
def _add_prefix(self, string):
|
||||
return self.TEXT_PREFIX + string
|
||||
|
||||
def _remove_prefix(self, string):
|
||||
if string[:len(self.TEXT_PREFIX)] == self.TEXT_PREFIX:
|
||||
return string[len(self.TEXT_PREFIX):]
|
||||
return string
|
||||
|
||||
# wx.ListBox methods
|
||||
|
||||
def FindString(self, string):
|
||||
index = super(ListBoxWithHeaders, self).FindString(string)
|
||||
|
||||
if index == wx.NOT_FOUND:
|
||||
# This time try with prefix
|
||||
index = super(ListBoxWithHeaders, self).FindString(self._add_prefix(string))
|
||||
|
||||
return index
|
||||
|
||||
def GetStringSelection(self):
|
||||
return self._remove_prefix(super(ListBoxWithHeaders, self).GetStringSelection())
|
||||
|
||||
def GetString(self, index):
|
||||
if index < 0 or index >= self.GetCount():
|
||||
# Return empty string based on the wx.ListBox docs
|
||||
# for some reason parent GetString does not handle
|
||||
# invalid indices
|
||||
return ""
|
||||
|
||||
return self._remove_prefix(super(ListBoxWithHeaders, self).GetString(index))
|
||||
|
||||
def InsertItems(self, items, pos):
|
||||
items = [self._add_prefix(item) for item in items]
|
||||
super(ListBoxWithHeaders, self).InsertItems(items, pos)
|
||||
|
||||
def SetSelection(self, index):
|
||||
if index == wx.NOT_FOUND:
|
||||
self.Deselect(self.GetSelection())
|
||||
elif self.GetString(index) not in self.__headers:
|
||||
super(ListBoxWithHeaders, self).SetSelection(index)
|
||||
|
||||
def SetString(self, index, string):
|
||||
old_string = self.GetString(index)
|
||||
|
||||
if old_string in self.__headers and string != old_string:
|
||||
self.__headers.remove(old_string)
|
||||
self.__headers.add(string)
|
||||
|
||||
super(ListBoxWithHeaders, self).SetString(index, string)
|
||||
|
||||
def SetStringSelection(self, string):
|
||||
if string in self.__headers:
|
||||
return False
|
||||
|
||||
self.SetSelection(self.FindString(string))
|
||||
return True
|
||||
|
||||
# wx.ItemContainer methods
|
||||
|
||||
def Append(self, string):
|
||||
super(ListBoxWithHeaders, self).Append(self._add_prefix(string))
|
||||
|
||||
def AppendItems(self, strings):
|
||||
strings = [self._add_prefix(string) for string in strings]
|
||||
super(ListBoxWithHeaders, self).AppendItems(strings)
|
||||
|
||||
def Clear(self):
|
||||
self.__headers.clear()
|
||||
super(ListBoxWithHeaders, self).Clear()
|
||||
|
||||
def Delete(self, index):
|
||||
string = self.GetString(index)
|
||||
|
||||
if string in self.__headers:
|
||||
self.__headers.remove(string)
|
||||
|
||||
super(ListBoxWithHeaders, self).Delete(index)
|
||||
|
||||
# Extra methods
|
||||
|
||||
def add_header(self, header_string):
|
||||
self.__headers.add(header_string)
|
||||
super(ListBoxWithHeaders, self).Append(header_string)
|
||||
|
||||
def add_item(self, item, with_prefix=True):
|
||||
if with_prefix:
|
||||
item = self._add_prefix(item)
|
||||
|
||||
super(ListBoxWithHeaders, self).Append(item)
|
||||
|
||||
def add_items(self, items, with_prefix=True):
|
||||
if with_prefix:
|
||||
items = [self._add_prefix(item) for item in items]
|
||||
|
||||
super(ListBoxWithHeaders, self).AppendItems(items)
|
||||
|
||||
|
||||
class ListBoxPopup(wx.PopupTransientWindow):
|
||||
|
||||
"""ListBoxWithHeaders as a popup.
|
||||
|
||||
This class uses the wx.PopupTransientWindow to create the popup and the
|
||||
API is based on the wx.combo.ComboPopup class.
|
||||
|
||||
Attributes:
|
||||
EVENTS_TABLE (dict): Dictionary that contains all the events
|
||||
that this class emits.
|
||||
|
||||
"""
|
||||
|
||||
EVENTS_TABLE = {
|
||||
"EVT_COMBOBOX": crt_command_event(wx.EVT_COMBOBOX),
|
||||
"EVT_COMBOBOX_DROPDOWN" : crt_command_event(wx.EVT_COMBOBOX_DROPDOWN),
|
||||
"EVT_COMBOBOX_CLOSEUP": crt_command_event(wx.EVT_COMBOBOX_CLOSEUP)
|
||||
}
|
||||
|
||||
def __init__(self, parent=None, flags=wx.BORDER_NONE):
|
||||
super(ListBoxPopup, self).__init__(parent, flags)
|
||||
self.__listbox = None
|
||||
|
||||
def _on_motion(self, event):
|
||||
row = self.__listbox.HitTest(event.GetPosition())
|
||||
|
||||
if row != wx.NOT_FOUND:
|
||||
self.__listbox.SetSelection(row)
|
||||
|
||||
if self.__listbox.IsSelected(row):
|
||||
self.curitem = row
|
||||
|
||||
def _on_left_down(self, event):
|
||||
self.value = self.curitem
|
||||
self.Dismiss()
|
||||
|
||||
# Send EVT_COMBOBOX to inform the parent for changes
|
||||
wx.PostEvent(self, self.EVENTS_TABLE["EVT_COMBOBOX"])
|
||||
|
||||
def Popup(self):
|
||||
super(ListBoxPopup, self).Popup()
|
||||
wx.PostEvent(self, self.EVENTS_TABLE["EVT_COMBOBOX_DROPDOWN"])
|
||||
|
||||
def OnDismiss(self):
|
||||
wx.PostEvent(self, self.EVENTS_TABLE["EVT_COMBOBOX_CLOSEUP"])
|
||||
|
||||
# wx.combo.ComboPopup methods
|
||||
|
||||
def Init(self):
|
||||
self.value = self.curitem = -1
|
||||
|
||||
def Create(self, parent):
|
||||
self.__listbox = ListBoxWithHeaders(parent, style=wx.LB_SINGLE)
|
||||
|
||||
self.__listbox.Bind(wx.EVT_MOTION, self._on_motion)
|
||||
self.__listbox.Bind(wx.EVT_LEFT_DOWN, self._on_left_down)
|
||||
|
||||
sizer = wx.BoxSizer()
|
||||
sizer.Add(self.__listbox, 1, wx.EXPAND)
|
||||
self.SetSizer(sizer)
|
||||
return True
|
||||
|
||||
def GetAdjustedSize(self, min_width, pref_height, max_height):
|
||||
width, height = self.GetBestSize()
|
||||
|
||||
if width < min_width:
|
||||
width = min_width
|
||||
|
||||
if pref_height != -1:
|
||||
height = pref_height * self.__listbox.GetCount() + 5
|
||||
|
||||
if height > max_height:
|
||||
height = max_height
|
||||
|
||||
return wx.Size(width, height)
|
||||
|
||||
def GetControl(self):
|
||||
return self.__listbox
|
||||
|
||||
def GetStringValue(self):
|
||||
return self.__listbox.GetString(self.value)
|
||||
|
||||
#def SetStringValue(self, string):
|
||||
#self.__listbox.SetStringSelection(string)
|
||||
|
||||
|
||||
class CustomComboBox(wx.Panel):
|
||||
|
||||
"""Custom combobox.
|
||||
|
||||
Attributes:
|
||||
CB_READONLY (long): Read-only style. The only one supported from the
|
||||
wx.ComboBox styles.
|
||||
|
||||
NAME (string): Default name for the name argument of the __init__.
|
||||
|
||||
"""
|
||||
#NOTE wx.ComboBox does not support EVT_MOTION inside the popup
|
||||
#NOTE Tried with ComboCtrl but i was not able to draw the button
|
||||
|
||||
CB_READONLY = wx.TE_READONLY
|
||||
|
||||
NAME = "customComboBox"
|
||||
|
||||
def __init__(self, parent, id=wx.ID_ANY, value="", pos=wx.DefaultPosition,
|
||||
size=wx.DefaultSize, choices=[], style=0, validator=wx.DefaultValidator, name=NAME):
|
||||
super(CustomComboBox, self).__init__(parent, id, pos, size, 0, name)
|
||||
|
||||
assert style == self.CB_READONLY or style == 0
|
||||
|
||||
# Create components
|
||||
self.textctrl = wx.TextCtrl(self, wx.ID_ANY, style=style, validator=validator)
|
||||
tc_height = self.textctrl.GetSize()[1]
|
||||
|
||||
self.button = wx.Button(self, wx.ID_ANY, "▾", size=(tc_height, tc_height))
|
||||
|
||||
# Create the ListBoxPopup in two steps
|
||||
self.listbox = ListBoxPopup(self)
|
||||
self.listbox.Init()
|
||||
self.listbox.Create(self.listbox)
|
||||
|
||||
# Set layout
|
||||
sizer = wx.BoxSizer()
|
||||
sizer.Add(self.textctrl, 1, wx.ALIGN_CENTER_VERTICAL)
|
||||
sizer.Add(self.button)
|
||||
self.SetSizer(sizer)
|
||||
|
||||
# Bind events
|
||||
self.button.Bind(wx.EVT_BUTTON, self._on_button)
|
||||
|
||||
for event in ListBoxPopup.EVENTS_TABLE.values():
|
||||
self.listbox.Bind(wx.PyEventBinder(event.GetEventType()), self._propagate)
|
||||
|
||||
# Append items since the ListBoxPopup does not have the 'choices' arg
|
||||
self.listbox.GetControl().AppendItems(choices)
|
||||
self.SetStringSelection(value)
|
||||
|
||||
def _propagate(self, event):
|
||||
if event.GetEventType() == wx.EVT_COMBOBOX.typeId:
|
||||
self.textctrl.SetValue(self.listbox.GetStringValue())
|
||||
|
||||
wx.PostEvent(self, event)
|
||||
|
||||
def _on_button(self, event):
|
||||
self.Popup()
|
||||
|
||||
def _calc_popup_position(self):
|
||||
tc_x_axis, tc_y_axis = self.textctrl.ClientToScreen((0, 0))
|
||||
_, tc_height = self.textctrl.GetSize()
|
||||
|
||||
return tc_x_axis, tc_y_axis + tc_height
|
||||
|
||||
def _calc_popup_size(self):
|
||||
me_width, _ = self.GetSize()
|
||||
_, tc_height = self.textctrl.GetSize()
|
||||
_, screen_height = wx.DisplaySize()
|
||||
|
||||
_, me_y_axis = self.GetScreenPosition()
|
||||
|
||||
available_height = screen_height - (me_y_axis + tc_height)
|
||||
sug_width, sug_height = self.listbox.GetAdjustedSize(me_width, tc_height, available_height)
|
||||
|
||||
return me_width, sug_height
|
||||
|
||||
# wx.ComboBox methods
|
||||
|
||||
def Dismiss(self):
|
||||
self.listbox.Dismiss()
|
||||
|
||||
def FindString(self, string, caseSensitive=False):
|
||||
#TODO handle caseSensitive
|
||||
return self.listbox.GetControl().FindString(string)
|
||||
|
||||
def GetCount(self):
|
||||
return self.listbox.GetControl().GetCount()
|
||||
|
||||
def GetCurrentSelection(self):
|
||||
return self.GetSelection()
|
||||
|
||||
def GetInsertionPoint(self):
|
||||
return self.textctrl.GetInsertionPoint()
|
||||
|
||||
def GetSelection(self):
|
||||
return self.listbox.value
|
||||
|
||||
def GetTextSelection(self):
|
||||
return self.textctrl.GetSelection()
|
||||
|
||||
def GetString(self, index):
|
||||
return self.listbox.GetControl().GetString(index)
|
||||
|
||||
def GetStringSelection(self):
|
||||
return self.listbox.GetStringValue()
|
||||
|
||||
def IsListEmpty(self):
|
||||
return self.listbox.GetControl().GetCount() == 0
|
||||
|
||||
def IsTextEmpty(self):
|
||||
return not self.textctrl.GetValue()
|
||||
|
||||
def Popup(self):
|
||||
self.listbox.SetPosition(self._calc_popup_position())
|
||||
self.listbox.SetSize(self._calc_popup_size())
|
||||
|
||||
self.listbox.Popup()
|
||||
|
||||
def SetSelection(self, index):
|
||||
self.listbox.GetControl().SetSelection(index)
|
||||
if self.listbox.GetControl().IsSelected(index):
|
||||
self.listbox.value = index
|
||||
self.textctrl.SetValue(self.listbox.GetStringValue())
|
||||
|
||||
def SetString(self, index, string):
|
||||
self.listbox.GetControl().SetString(index, string)
|
||||
|
||||
def SetTextSelection(self, from_, to_):
|
||||
self.textctrl.SetSelection(from_, to_)
|
||||
|
||||
def SetStringSelection(self, string):
|
||||
index = self.listbox.GetControl().FindString(string)
|
||||
self.listbox.GetControl().SetSelection(index)
|
||||
|
||||
if index != wx.NOT_FOUND and self.listbox.GetControl().GetSelection() == index:
|
||||
self.listbox.value = index
|
||||
self.textctrl.SetValue(string)
|
||||
|
||||
def SetValue(self, value):
|
||||
self.textctrl.SetValue(value)
|
||||
|
||||
# wx.ItemContainer methods
|
||||
|
||||
def Clear(self):
|
||||
self.textctrl.Clear()
|
||||
self.listbox.GetControl().Clear()
|
||||
|
||||
def Append(self, item):
|
||||
self.listbox.GetControl().Append(item)
|
||||
|
||||
def AppendItems(self, items):
|
||||
self.listbox.GetControl().AppendItems(items)
|
||||
|
||||
def Delete(self, index):
|
||||
self.listbox.GetControl().Delete(index)
|
||||
|
||||
# wx.TextEntry methods
|
||||
|
||||
def GetValue(self):
|
||||
return self.textctrl.GetValue()
|
||||
|
||||
# ListBoxWithHeaders methods
|
||||
|
||||
def add_header(self, header):
|
||||
self.listbox.GetControl().add_header(header)
|
||||
|
||||
def add_item(self, item, with_prefix=True):
|
||||
self.listbox.GetControl().add_item(item, with_prefix)
|
||||
|
||||
def add_items(self, items, with_prefix=True):
|
||||
self.listbox.GetControl().add_items(items, with_prefix)
|