From f4d821f3f692756071429f1da3ffb2be8a038ee6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 13 Nov 2009 15:55:15 -0700 Subject: [PATCH] calibre is now able to download social metadata like tags/rating/reviews etc. in addition to normal metadata and covers. Currently it uses Amazon as the only source for social metadata, but the download system supports plugins for the addition of more sources in the future. Fixes #2860 (Amazon Tag Scrapper) --- src/calibre/ebooks/metadata/fetch.py | 10 +- src/calibre/gui2/__init__.py | 2 + src/calibre/gui2/dialogs/config/__init__.py | 2 + src/calibre/gui2/dialogs/config/config.ui | 9 +- src/calibre/gui2/dialogs/config/social.py | 56 ++ src/calibre/gui2/dialogs/fetch_metadata.py | 3 +- src/calibre/gui2/dialogs/fetch_metadata.ui | 94 ++-- src/calibre/gui2/dialogs/metadata_single.py | 21 +- src/calibre/gui2/main.py | 3 +- src/calibre/gui2/metadata.py | 9 +- src/calibre/manual/custom.py | 3 + src/calibre/translations/calibre.pot | 582 +++++++++++--------- 12 files changed, 466 insertions(+), 328 deletions(-) create mode 100644 src/calibre/gui2/dialogs/config/social.py diff --git a/src/calibre/ebooks/metadata/fetch.py b/src/calibre/ebooks/metadata/fetch.py index ed69c6882e..717d5fd04e 100644 --- a/src/calibre/ebooks/metadata/fetch.py +++ b/src/calibre/ebooks/metadata/fetch.py @@ -201,11 +201,13 @@ def get_social_metadata(mi, verbose=0): mi.tags += list(tags) mi.tags = list(sorted(list(set(mi.tags)))) if comments: - mi.comments = '' - for x in comments: - mi.comments += '\n\n'+x + if not mi.comments or len(mi.comments) < len(comments): + mi.comments = '' + for x in comments: + mi.comments += '\n\n'+x - return [(x.name, x.exception, x.tb) for x in fetchers] + return [(x.name, x.exception, x.tb) for x in fetchers if x.exception is not + None] diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 51d88b06e2..01ce266e4f 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -83,6 +83,8 @@ def _config(): help='Search history for the recipe scheduler') c.add_opt('worker_limit', default=6, help=_('Maximum number of waiting worker processes')) + c.add_opt('get_social_metadata', default=True, + help=_('Download social metadata (tags/rating/etc.)')) return ConfigProxy(c) diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index 62f68054f1..4f84ae968c 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -455,6 +455,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog): self.opt_worker_limit.setValue(config['worker_limit']) self.connect(self.button_open_config_dir, SIGNAL('clicked()'), self.open_config_dir) + self.opt_get_social_metadata.setChecked(config['get_social_metadata']) def open_config_dir(self): from calibre.utils.config import config_dir @@ -740,6 +741,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog): config['delete_news_from_library_on_upload'] = self.delete_news.isChecked() config['upload_news_to_device'] = self.sync_news.isChecked() config['search_as_you_type'] = self.search_as_you_type.isChecked() + config['get_social_metadata'] = self.opt_get_social_metadata.isChecked() fmts = [] for i in range(self.viewer.count()): if self.viewer.item(i).checkState() == Qt.Checked: diff --git a/src/calibre/gui2/dialogs/config/config.ui b/src/calibre/gui2/dialogs/config/config.ui index c8044887ec..8f9c28aa8b 100644 --- a/src/calibre/gui2/dialogs/config/config.ui +++ b/src/calibre/gui2/dialogs/config/config.ui @@ -90,7 +90,7 @@ 0 0 524 - 682 + 680 @@ -164,6 +164,13 @@ + + + + Download &social metadata (tags/ratings/etc.) by default + + + diff --git a/src/calibre/gui2/dialogs/config/social.py b/src/calibre/gui2/dialogs/config/social.py new file mode 100644 index 0000000000..6a767e7b3b --- /dev/null +++ b/src/calibre/gui2/dialogs/config/social.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import with_statement + +__license__ = 'GPL v3' +__copyright__ = '2009, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + +from PyQt4.Qt import QDialog, QDialogButtonBox, Qt, QLabel, QVBoxLayout, \ + SIGNAL, QThread + +from calibre.ebooks.metadata import MetaInformation + +class Worker(QThread): + + def __init__(self, mi, parent): + QThread.__init__(self, parent) + self.mi = MetaInformation(mi) + self.exceptions = [] + + def run(self): + from calibre.ebooks.metadata.fetch import get_social_metadata + self.exceptions = get_social_metadata(self.mi) + +class SocialMetadata(QDialog): + + def __init__(self, mi, parent): + QDialog.__init__(self, parent) + + self.bbox = QDialogButtonBox(QDialogButtonBox.Ok, Qt.Horizontal, self) + self.mi = mi + self.layout = QVBoxLayout(self) + self.label = QLabel(_('Downloading social metadata, please wait...'), self) + self.label.setWordWrap(True) + self.layout.addWidget(self.label) + self.layout.addWidget(self.bbox) + + self.worker = Worker(mi, self) + self.connect(self.worker, SIGNAL('finished()'), self.accept) + self.connect(self.bbox, SIGNAL('rejected()'), self.reject) + self.worker.start() + + def reject(self): + self.disconnect(self.worker, SIGNAL('finished()'), self.accept) + QDialog.reject(self) + + def accept(self): + self.mi.tags = self.worker.mi.tags + self.mi.rating = self.worker.mi.rating + self.mi.comments = self.worker.mi.comments + QDialog.accept(self) + + @property + def exceptions(self): + return self.worker.exceptions diff --git a/src/calibre/gui2/dialogs/fetch_metadata.py b/src/calibre/gui2/dialogs/fetch_metadata.py index d092c1f5c4..59192fb466 100644 --- a/src/calibre/gui2/dialogs/fetch_metadata.py +++ b/src/calibre/gui2/dialogs/fetch_metadata.py @@ -11,7 +11,7 @@ from PyQt4.QtCore import Qt, QObject, SIGNAL, QVariant, QThread, \ from PyQt4.QtGui import QDialog, QItemSelectionModel from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata -from calibre.gui2 import error_dialog, NONE, info_dialog +from calibre.gui2 import error_dialog, NONE, info_dialog, config from calibre.gui2.widgets import ProgressIndicator from calibre import strftime from calibre.customize.ui import get_isbndb_key, set_isbndb_key @@ -115,6 +115,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata): self.show_summary) self.matches.setMouseTracking(True) self.fetch_metadata() + self.opt_get_social_metadata.setChecked(config['get_social_metadata']) def show_summary(self, current, *args): diff --git a/src/calibre/gui2/dialogs/fetch_metadata.ui b/src/calibre/gui2/dialogs/fetch_metadata.ui index edf4207b45..fe97b32f28 100644 --- a/src/calibre/gui2/dialogs/fetch_metadata.ui +++ b/src/calibre/gui2/dialogs/fetch_metadata.ui @@ -1,10 +1,11 @@ - + + FetchMetadata - - + + Qt::WindowModal - + 0 0 @@ -12,48 +13,48 @@ 642 - + Fetch metadata - - + + :/images/metadata.svg:/images/metadata.svg - + - - - <p>calibre can find metadata for your books from two locations: <b>Google Books</b> and <b>isbndb.com</b>. <p>To use isbndb.com you must sign up for a <a href="http://www.isbndb.com">free account</a> and enter your access key below. + + + <p>calibre can find metadata for your books from two locations: <b>Google Books</b> and <b>isbndb.com</b>. <p>To use isbndb.com you must sign up for a <a href="http://www.isbndb.com">free account</a> and enter your access key below. - + Qt::AlignCenter - + true - + true - + - - + + &Access Key: - + key - + - - + + Fetch @@ -61,56 +62,63 @@ - - + + - + true - - + + Matches - + - - + + Select the book that most closely matches your copy from the list below - - - + + + 0 1 - + true - + QAbstractItemView::SingleSelection - + QAbstractItemView::SelectRows - + - - + + + Download &social metadata (tags/rating/etc.) for the selected book + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok @@ -118,7 +126,7 @@ - + @@ -127,11 +135,11 @@ FetchMetadata accept() - + 460 599 - + 657 530 @@ -143,11 +151,11 @@ FetchMetadata reject() - + 417 599 - + 0 491 diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 77f214a793..63195f025a 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -16,7 +16,8 @@ from PyQt4.Qt import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread, QDa QPixmap, QListWidgetItem, QDialog from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \ - choose_files, choose_images, ResizableDialog + choose_files, choose_images, ResizableDialog, \ + warning_dialog from calibre.gui2.dialogs.metadata_single_ui import Ui_MetadataSingleDialog from calibre.gui2.dialogs.fetch_metadata import FetchMetadata from calibre.gui2.dialogs.tag_editor import TagEditor @@ -28,6 +29,7 @@ from calibre import islinux from calibre.ebooks.metadata.meta import get_metadata from calibre.utils.config import prefs from calibre.customize.ui import run_plugins_on_import, get_isbndb_key +from calibre.gui2.dialogs.config.social import SocialMetadata class CoverFetcher(QThread): @@ -541,6 +543,15 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): if d.exec_() == QDialog.Accepted: book = d.selected_book() if book: + if d.opt_get_social_metadata.isChecked(): + d2 = SocialMetadata(book, self) + d2.exec_() + if d2.exceptions: + det = '\n'.join([x[0]+'\n\n'+x[-1]+'\n\n\n' for + x in d2.exceptions]) + warning_dialog(self, _('There were errors'), + _('There were errors downloading social metadata'), + det_msg=det, show=True) self.title.setText(book.title) self.authors.setText(authors_to_string(book.authors)) if book.author_sort: self.author_sort.setText(book.author_sort) @@ -552,14 +563,18 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): self.pubdate.setDate(QDate(d.year, d.month, d.day)) summ = book.comments if summ: - prefix = qstring_to_unicode(self.comments.toPlainText()) + prefix = unicode(self.comments.toPlainText()) if prefix: prefix += '\n' self.comments.setText(prefix + summ) + if book.rating is not None: + self.rating.setValue(int(book.rating)) + if book.tags: + self.tags.setText(', '.join(book.tags)) else: error_dialog(self, _('Cannot fetch metadata'), _('You must specify at least one of ISBN, Title, ' - 'Authors or Publisher')) + 'Authors or Publisher'), show=True) def enable_series_index(self, *args): self.series_index.setEnabled(True) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 78469905a8..795841517e 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -1039,7 +1039,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): ids = [db.id(row.row()) for row in rows] from calibre.gui2.metadata import DownloadMetadata self._download_book_metadata = DownloadMetadata(db, ids, - get_covers=covers, set_metadata=set_metadata) + get_covers=covers, set_metadata=set_metadata, + get_social_metadata=config['get_social_metadata']) self._download_book_metadata.start() x = _('covers') if covers and not set_metadata else _('metadata') self.progress_indicator.start( diff --git a/src/calibre/gui2/metadata.py b/src/calibre/gui2/metadata.py index 106a42956b..d6c11c3bb6 100644 --- a/src/calibre/gui2/metadata.py +++ b/src/calibre/gui2/metadata.py @@ -11,7 +11,7 @@ from threading import Thread from Queue import Queue, Empty -from calibre.ebooks.metadata.fetch import search +from calibre.ebooks.metadata.fetch import search, get_social_metadata from calibre.ebooks.metadata.library_thing import cover_from_isbn from calibre.customize.ui import get_isbndb_key @@ -45,12 +45,15 @@ class Worker(Thread): class DownloadMetadata(Thread): - def __init__(self, db, ids, get_covers, set_metadata=True): + def __init__(self, db, ids, get_covers, set_metadata=True, + get_social_metadata=True): Thread.__init__(self) self.setDaemon(True) self.metadata = {} self.covers = {} self.set_metadata = set_metadata + self.get_social_metadata = get_social_metadata + self.social_metadata_exceptions = [] self.db = db self.updated = set([]) self.get_covers = get_covers @@ -95,6 +98,8 @@ class DownloadMetadata(Thread): if fmi.isbn and self.get_covers: self.worker.jobs.put(fmi.isbn) mi.smart_update(fmi) + if mi.isbn and self.get_social_metadata: + self.social_metadata_exceptions = get_social_metadata(mi) else: self.failures[id] = (mi.title, _('No matches found for this book')) diff --git a/src/calibre/manual/custom.py b/src/calibre/manual/custom.py index e174d2f838..75726951d6 100644 --- a/src/calibre/manual/custom.py +++ b/src/calibre/manual/custom.py @@ -40,6 +40,9 @@ Command Line Interface .. image:: ../images/cli.png +On OS X you have to go to Preferences->Advanced and click install command line +tools to make the command line tools available. On other platforms, just start +a terminal and type the command. Documented Commands -------------------- diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 6c178dcff5..f989c04535 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.6.21\n" -"POT-Creation-Date: 2009-11-09 08:59+MST\n" -"PO-Revision-Date: 2009-11-09 08:59+MST\n" +"POT-Creation-Date: 2009-11-13 15:53+MST\n" +"PO-Revision-Date: 2009-11-13 15:53+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -94,8 +94,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:266 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 @@ -108,8 +108,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:432 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:434 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 @@ -296,31 +296,31 @@ msgstr "" msgid "This profile is intended for the Amazon Kindle DX." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 msgid "Installed plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 msgid "Mapping for filetype plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 msgid "Local plugin customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 msgid "Disabled plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:76 msgid "No valid plugin found in " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:262 msgid "Initialization of plugin %s failed with traceback:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:367 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:396 msgid "" " %prog options\n" "\n" @@ -328,27 +328,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:402 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:404 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:406 msgid "Customize plugin. Specify name of plugin and customization string separated by a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:408 msgid "List all installed plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:381 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:410 msgid "Enable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:383 +#: /home/kovid/work/calibre/src/calibre/customize/ui.py:412 msgid "Disable the named plugin" msgstr "" @@ -1326,6 +1326,10 @@ msgstr "" msgid "Rights" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77 +msgid "EDITORIAL REVIEW" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:19 msgid "options" msgstr "" @@ -1400,6 +1404,14 @@ msgstr "" msgid "No cover found" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:26 +msgid "Metadata download" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:107 +msgid "To use isbndb.com you must sign up for a %sfree account%s and enter your access key below." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:94 msgid "" "\n" @@ -1965,20 +1977,24 @@ msgstr "" msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +msgid "Download social metadata (tags/rating/etc.)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:398 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:389 msgid "Choose Files" msgstr "" @@ -2199,12 +2215,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 @@ -2455,33 +2471,33 @@ msgid "Set the metadata. The output file will contain as much of this metadata a msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:98 msgid "Choose cover for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:105 msgid "Cannot read" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:114 msgid "Error reading file" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 msgid "

There was an error reading from file:
" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 msgid " is not a valid picture" msgstr "" @@ -2676,7 +2692,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1398 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1400 msgid "Choose the format to view" msgstr "" @@ -3277,126 +3293,126 @@ msgstr "" msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1072 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1074 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:474 msgid "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:529 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:542 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575 -msgid "Customize %s" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560 +msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:598 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:599 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:632 msgid "Error log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:639 msgid "Access log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:667 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:604 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:508 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:686 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:699 msgid "Invalid size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:757 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:753 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:754 msgid "
Must be a directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:758 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:792 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:803 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:817 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:818 msgid "The following books had formats listed in the database that are not actually available. The entries for the formats have been removed. You should check them manually. This can happen if you manipulate the files in the library folder directly." msgstr "" @@ -3480,263 +3496,271 @@ msgstr "" msgid "&Saving books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 msgid "Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 msgid "&Location of ebooks (The ebooks are stored in folders sorted by author and metadata is stored in the file metadata.db)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 -msgid "Default network &timeout:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 -msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 -msgid " seconds" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498 -msgid "Choose &language (requires restart):" +msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499 -msgid "Normal" +msgid "Default network &timeout:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500 -msgid "High" +msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 -msgid "Low" +msgid " seconds" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 -msgid "Job &priority:" +msgid "Choose &language (requires restart):" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 -msgid "Preferred &output format:" +msgid "Normal" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -msgid "Preferred &input format order:" +msgid "High" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +msgid "Low" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +msgid "Job &priority:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 -msgid "Use &Roman numerals for series number" +msgid "Preferred &output format:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 -msgid "Enable system &tray icon (needs restart)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 -msgid "Show ¬ifications in system tray" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 -msgid "Show cover &browser in a separate window (needs restart)" +msgid "Preferred &input format order:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 -msgid "Search as you type" +msgid "Use &Roman numerals for series number" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 -msgid "Automatically send downloaded &news to ebook reader" +msgid "Enable system &tray icon (needs restart)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 -msgid "&Delete news from library when it is automatically sent to reader" +msgid "Show ¬ifications in system tray" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 -msgid "&Number of covers to show in browse mode (needs restart):" +msgid "Show cover &browser in a separate window (needs restart)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 -msgid "Toolbar" +msgid "Search as you type" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 -msgid "Large" +msgid "Automatically send downloaded &news to ebook reader" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 -msgid "Medium" +msgid "&Delete news from library when it is automatically sent to reader" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 -msgid "Small" +msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 -msgid "&Button size in toolbar" +msgid "Toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 -msgid "Show &text in toolbar buttons" +msgid "Large" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 -msgid "Select visible &columns in library view" +msgid "Medium" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +msgid "Small" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +msgid "&Button size in toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 -msgid "Use internal &viewer for:" +msgid "Show &text in toolbar buttons" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 -msgid "Add an email address to which to send books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 -msgid "&Add email" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 -msgid "Make &default" +msgid "Select visible &columns in library view" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 -msgid "&Remove email" +msgid "Use internal &viewer for:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 -msgid "calibre can send your books to you (or your reader) by email" +msgid "Add an email address to which to send books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 -msgid "&Maximum number of waiting worker processes (needs restart):" +msgid "&Add email" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 -msgid "&Check database integrity" +msgid "Make &default" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 -msgid "&Install command line tools" +msgid "&Remove email" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 -msgid "Open calibre &configuration directory" +msgid "calibre can send your books to you (or your reader) by email" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart." +msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -msgid "Server &port:" +msgid "&Check database integrity" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +msgid "&Install command line tools" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +msgid "Open calibre &configuration directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +msgid "Server &port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 msgid "&Show password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as calibre is running.\n" "

Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Add" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 +msgid "Downloading social metadata, please wait..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" msgstr "" @@ -3757,58 +3781,62 @@ msgstr "" msgid "ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:147 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:159 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:160 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:169 msgid "Warning" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:170 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 msgid "No metadata found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:175 msgid "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 msgid "Fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 msgid "

calibre can find metadata for your books from two locations: Google Books and isbndb.com.

To use isbndb.com you must sign up for a free account and enter your access key below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:84 msgid "Fetch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "Matches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "Select the book that most closely matches your copy from the list below" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +msgid "Download &social metadata (tags/rating/etc.) for the selected book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "" @@ -3891,101 +3919,109 @@ msgstr "" msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:135 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:912 msgid "Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:162 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:163 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:198 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:199 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:242 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:250 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:245 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:249 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:251 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:288 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:491 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:501 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:506 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:514 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:502 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:515 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:509 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:521 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:522 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:552 +msgid "There were errors" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553 +msgid "There were errors downloading social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:575 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:628 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:614 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:629 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -4805,7 +4841,7 @@ msgid "Save to disk in a single directory" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:297 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1500 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1502 msgid "Save only %s format to disk" msgstr "" @@ -4845,7 +4881,7 @@ msgid "Calibre Library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1643 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1645 msgid "Choose a location for your ebook library." msgstr "" @@ -4942,235 +4978,235 @@ msgid "Cannot download metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1035 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1083 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1116 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1141 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1085 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1118 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1255 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1044 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1046 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1047 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1069 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1070 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1071 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1073 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1082 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1084 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1117 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1142 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1145 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1170 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1172 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1171 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1173 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1178 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1180 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1181 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1180 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1182 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1199 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1201 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1212 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1214 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1252 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1281 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1283 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1392 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1411 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1394 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1413 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1392 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1442 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1394 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1444 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1410 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1412 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1427 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1429 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1428 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430 msgid "You are attempting to open %d books. Opening too many books at once can be slow and have a negative effect on the responsiveness of your computer. Once started the process cannot be stopped until complete. Do you wish to continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1443 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1484 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1486 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1485 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1487 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1528 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1530 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1529 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1581 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1583 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1582 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1584 msgid "There was a temporary error talking to the device. Please unplug and reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1605 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1623 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1607 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1625 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1606 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1608 msgid "

Could not convert: %s

It is a DRMed book. You must first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1624 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1626 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1652 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1654 msgid "Invalid library location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1653 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1655 msgid "Could not access %s. Using %s as the library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1701 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1703 msgid "is the result of the efforts of many volunteers from all over the world. If you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1725 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1727 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1728 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1730 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1732 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1734 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1783 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1785 msgid "will keep running in the system tray. To close it, choose Quit in the context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1802 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1804 msgid "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1810 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1812 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1811 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1813 msgid "%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1829 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1831 msgid "Use the library located at the specified path." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1831 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1833 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1833 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1835 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1835 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1837 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1883 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1885 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1885 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1887 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1886 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1888 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1889 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1891 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1891 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1893 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1893 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1895 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1896 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1898 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1898 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1910 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1900 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1912 msgid "try deleting the file" msgstr "" @@ -5312,11 +5348,11 @@ msgstr "" msgid "ERROR: Unhandled exception" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:87 msgid "Book has neither title nor ISBN" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:105 msgid "No matches found for this book" msgstr "" @@ -6488,13 +6524,13 @@ msgstr "" msgid "Control email delivery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:101 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:103 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:125 msgid "Unknown feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:141 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:164 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:166 msgid "Untitled article" msgstr "" @@ -6550,43 +6586,43 @@ msgstr "" msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:708 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:768 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:784 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:794 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:801 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:927 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:998 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1026 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 msgid "Fetching feed" msgstr ""