diff --git a/Changelog.yaml b/Changelog.yaml index 9673832a81..4997cca255 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,65 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.2 + date: 2010-06-11 + + new features: + - title: "The Cover Browser can now be freely resized." + description: > + "You can now resize the Cover Browser just like the other areas of the user interface by dragging the edge. The Cover Browser now + also emphasizes the cetral book cover, making it larger than the others. Also on widescreen monitors the cover browser is now automatically placed + to the side of the book list instead of below it." + + - title: "Added tweak to control how titles and series names are sorted" + + - title: "Clicking on row numbers no longer open the viewer. Instead you have to double click" + + bug fixes: + - title: "SONY driver: The regression causing slow perfomance has been corrected. Various bug fixes to deal with corner cases" + + - title: "iPad driver: Various bugfixes, should now work much more seamlessly." + + - title: "Fix regression causing calibre to not start if the library path is invalid, because say a drive has been removed" + tickets: [5787] + + - title: "Fix regression in 0.7.1 that broke searching in the e-book viewers and for news sources" + + - title: "Fix regressions that caused the Publisher to change when updating Series and floating point custom columns to be rounded to integers." + tickets: [5788] + + - title: "Fix regression that broke check database integrity in the presence of custom coulmns or user categories" + tickets: [5779] + + - title: "Fix regresison that broke the Email to submenu in the send to device menu" + + - title: "Fix Tag browser re-opening closed tree after editing metadata" + tickets: [5744] + + - title: "Conversion pipeline: Handle missing/obsolete input/output profiles gracefully" + + - title: "Fix Adding/Deleting Search does not refresh Left Pane Correctly" + tickets: [5751] + + - title: "Content server: Fix serving of CBZ/CBR files to stanza" + + new recipes: + - title: Repantes, Haaretz + author: Darko Miletic + + - title: CBC Canada + author: rty + + + improved recipes: + - The Sun + - The Economist + - Boston Globe + - Honolulu Star Advertiser + - SMH + - Sueddeutsche + - Our Daily Bread + - version: 0.7.1 date: 2010-06-04 diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 69bad99723..4f9e1f3904 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.7.1' +__version__ = '0.7.2' __author__ = "Kovid Goyal " import re diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index afeba785d8..ca93990420 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -445,7 +445,7 @@ from calibre.devices.nook.driver import NOOK from calibre.devices.prs505.driver import PRS505 from calibre.devices.android.driver import ANDROID, S60 from calibre.devices.nokia.driver import N770, N810, E71X -from calibre.devices.eslick.driver import ESLICK +from calibre.devices.eslick.driver import ESLICK, EBK52 from calibre.devices.nuut2.driver import NUUT2 from calibre.devices.iriver.driver import IRIVER_STORY from calibre.devices.binatone.driver import README @@ -519,6 +519,7 @@ plugins += [ N810, COOL_ER, ESLICK, + EBK52, NUUT2, IRIVER_STORY, GER2, diff --git a/src/calibre/devices/apple/driver.py b/src/calibre/devices/apple/driver.py index 8d9d8f3a9a..3e16eccbbc 100644 --- a/src/calibre/devices/apple/driver.py +++ b/src/calibre/devices/apple/driver.py @@ -14,7 +14,6 @@ from calibre.devices.interface import DevicePlugin from calibre.ebooks.BeautifulSoup import BeautifulSoup from calibre.ebooks.metadata import MetaInformation from calibre.library.server.utils import strftime -from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.config import Config, config_dir from calibre.utils.date import parse_date from calibre.utils.logging import Log @@ -988,7 +987,6 @@ class ITUNES(DevicePlugin): connected_device = self.sources['iPod'] device = self.iTunes.sources.ItemByName(connected_device) - dev_books = None added = None for pl in device.Playlists: if pl.Kind == self.PlaylistKind.index('User') and \ @@ -1641,7 +1639,6 @@ class ITUNES(DevicePlugin): connected_device = self.sources['iPod'] device = self.iTunes.sources.ItemByName(connected_device) - dev_books = None for pl in device.Playlists: if pl.Kind == self.PlaylistKind.index('User') and \ pl.SpecialKind == self.PlaylistSpecialKind.index('Books'): @@ -1988,7 +1985,7 @@ class ITUNES(DevicePlugin): if isosx: if DEBUG: self.log.info(" deleting %s" % cached_book['dev_book']) - result = cached_book['dev_book'].delete() + cached_book['dev_book'].delete() elif iswindows: dev_pl = self._get_device_books_playlist() @@ -2000,7 +1997,7 @@ class ITUNES(DevicePlugin): if hit.Name == cached_book['title']: if DEBUG: self.log.info(" deleting '%s' by %s" % (hit.Name, hit.Artist)) - results = hit.Delete() + hit.Delete() break def _remove_from_iTunes(self, cached_book): diff --git a/src/calibre/devices/eslick/driver.py b/src/calibre/devices/eslick/driver.py index a38f742ecf..9f2ba7d252 100644 --- a/src/calibre/devices/eslick/driver.py +++ b/src/calibre/devices/eslick/driver.py @@ -36,4 +36,29 @@ class ESLICK(USBMS): SUPPORTS_SUB_DIRS = True + @classmethod + def can_handle(cls, dev, debug=False): + return (dev[3], dev[4]) != ('philips', 'Philips d') + + + +class EBK52(ESLICK): + + name = 'EBK-52 Device Interface' + gui_name = 'Sigmatek EBK' + description = _('Communicate with the Sigmatek eBook reader.') + + FORMATS = ['epub', 'fb2', 'pdf', 'txt'] + + VENDOR_NAME = '' + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = 'EBOOK_READER' + + MAIN_MEMORY_VOLUME_LABEL = 'Sigmatek Main Memory' + STORAGE_CARD_VOLUME_LABEL = 'Sigmatek Storage Card' + + + @classmethod + def can_handle(cls, dev, debug=False): + return (dev[3], dev[4]) == ('philips', 'Philips d') + diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index d806890807..9d7cf86dac 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -687,7 +687,7 @@ class DeviceMixin(object): self.emailer.send_mails(jobnames, Dispatcher(partial(self.emails_sent, remove=remove)), attachments, to_s, subjects, texts, attachment_names) - self.status_bar.showMessage(_('Sending email to')+' '+to, 3000) + self.status_bar.show_message(_('Sending email to')+' '+to, 3000) auto = [] if _auto_ids != []: @@ -748,7 +748,7 @@ class DeviceMixin(object): '%s'%errors, show=True ) else: - self.status_bar.showMessage(_('Sent by email:') + ', '.join(good), + self.status_bar.show_message(_('Sent by email:') + ', '.join(good), 5000) def cover_to_thumbnail(self, data): @@ -787,7 +787,7 @@ class DeviceMixin(object): attachments, to_s, subjects, texts, attachment_names) sent_mails.append(to_s[0]) if sent_mails: - self.status_bar.showMessage(_('Sent news to')+' '+\ + self.status_bar.show_message(_('Sent news to')+' '+\ ', '.join(sent_mails), 3000) def sync_catalogs(self, send_ids=None, do_auto_convert=True): @@ -846,7 +846,7 @@ class DeviceMixin(object): self.upload_books(files, names, metadata, on_card=on_card, memory=[files, remove]) - self.status_bar.showMessage(_('Sending catalogs to device.'), 5000) + self.status_bar.show_message(_('Sending catalogs to device.'), 5000) @@ -909,7 +909,7 @@ class DeviceMixin(object): self.upload_books(files, names, metadata, on_card=on_card, memory=[files, remove]) - self.status_bar.showMessage(_('Sending news to device.'), 5000) + self.status_bar.show_message(_('Sending news to device.'), 5000) def sync_to_device(self, on_card, delete_from_library, @@ -963,7 +963,7 @@ class DeviceMixin(object): names.append('%s_%d%s'%(prefix, id, os.path.splitext(f)[1])) remove = remove_ids if delete_from_library else [] self.upload_books(gf, names, good, on_card, memory=(_files, remove)) - self.status_bar.showMessage(_('Sending books to device.'), 5000) + self.status_bar.show_message(_('Sending books to device.'), 5000) auto = [] if _auto_ids != []: diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 05841d9178..0cd7c1d419 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -49,12 +49,12 @@ class BookInfo(QDialog, Ui_BookInfo): def open_book_path(self, path): if os.sep in unicode(path): - QDesktopServices.openUrl(QUrl('file:'+path)) + QDesktopServices.openUrl(QUrl.fromLocalFile(path)) else: format = unicode(path) path = self.view.model().db.format_abspath(self.current_row, format) if path is not None: - QDesktopServices.openUrl(QUrl('file:'+path)) + QDesktopServices.openUrl(QUrl.fromLocalFile(path)) def next(self): diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index 5a039e7bc1..5f42636dad 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -132,6 +132,7 @@ class ToolbarMixin(object): # {{{ self.action_open_containing_folder.setShortcut(Qt.Key_O) self.addAction(self.action_open_containing_folder) + self.action_open_containing_folder.triggered.connect(self.view_folder) self.action_sync.setShortcut(Qt.Key_D) self.action_sync.setEnabled(True) self.create_device_menu() @@ -231,7 +232,7 @@ class LibraryViewMixin(object): # {{{ ('connect_to_search_box', (self.search, self.search_done)), ('connect_to_book_display', - (self.status_bar.book_info.show_data,)), + (self.book_details.show_data,)), ]: for view in (self.library_view, self.memory_view, self.card_a_view, self.card_b_view): getattr(view, func)(*args) @@ -360,7 +361,7 @@ class LayoutMixin(object): # {{{ if config['gui_layout'] == 'narrow': from calibre.gui2.status import StatusBar - self.status_bar = StatusBar(self) + self.status_bar = self.book_details = StatusBar(self) self.stack = Stack(self) self.bd_splitter = Splitter('book_details_splitter', _('Book Details'), I('book.svg'), diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 6d8efd68fa..ad26e50b0e 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -292,7 +292,8 @@ class BooksView(QTableView): # {{{ old_state['column_positions'][name] = i if name != 'ondevice': old_state['column_sizes'][name] = \ - max(self.sizeHintForColumn(i), h.sectionSizeHint(i)) + min(350, max(self.sizeHintForColumn(i), + h.sectionSizeHint(i))) if name == 'timestamp': old_state['column_sizes'][name] += 12 return old_state diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index d35f5e0725..f34c52d221 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -7,8 +7,8 @@ __copyright__ = '2009, Kovid Goyal ' __docformat__ = 'restructuredtext en' from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, \ - pyqtSignal, SIGNAL, QObject, QDialog -from PyQt4.QtGui import QCompleter + pyqtSignal, SIGNAL, QObject, QDialog, QCompleter, \ + QAction, QKeySequence from calibre.gui2 import config from calibre.gui2.dialogs.confirm_delete import confirm @@ -348,8 +348,14 @@ class SearchBoxMixin(object): self.do_advanced_search) self.search.clear() - self.search.setFocus(Qt.OtherFocusReason) self.search.setMaximumWidth(self.width()-150) + self.action_focus_search = QAction(self) + shortcuts = QKeySequence.keyBindings(QKeySequence.Find) + shortcuts = list(shortcuts) + [QKeySequence('/')] + self.action_focus_search.setShortcuts(shortcuts) + self.action_focus_search.triggered.connect(lambda x: + self.search.setFocus(Qt.OtherFocusReason)) + self.addAction(self.action_focus_search) def search_box_cleared(self): self.tags_view.clear() diff --git a/src/calibre/gui2/status.py b/src/calibre/gui2/status.py index 14c6131fb8..50a256ef2d 100644 --- a/src/calibre/gui2/status.py +++ b/src/calibre/gui2/status.py @@ -61,7 +61,7 @@ class BookInfoDisplay(QWidget): pixmap = self.pixmap() pwidth, pheight = pixmap.width(), pixmap.height() width, height = fit_image(pwidth, pheight, - pwidth, self.statusbar_height-12)[1:] + pwidth, self.statusbar_height-20)[1:] self.setMaximumHeight(height) try: aspect_ratio = pwidth/float(pheight) @@ -162,17 +162,48 @@ class BookInfoDisplay(QWidget): self.updateGeometry() self.setVisible(True) - -class StatusBar(QStatusBar): - - resized = pyqtSignal(object) - files_dropped = pyqtSignal(object, object) - show_book_info = pyqtSignal() +class StatusBarInterface(object): def initialize(self, systray=None): self.systray = systray self.notifier = get_notifier(systray) - self.book_info = BookInfoDisplay(self.clearMessage) + + def show_message(self, msg, timeout=0): + QStatusBar.showMessage(self, msg, timeout) + if self.notifier is not None and not config['disable_tray_notification']: + if isosx and isinstance(msg, unicode): + try: + msg = msg.encode(preferred_encoding) + except UnicodeEncodeError: + msg = msg.encode('utf-8') + self.notifier(msg) + + def clear_message(self): + QStatusBar.clearMessage(self) + +class BookDetailsInterface(object): + + # These signals must be defined in the class implementing this interface + files_dropped = None + show_book_info = None + + def reset_info(self): + raise NotImplementedError() + + def show_data(self, data): + raise NotImplementedError() + +class StatusBar(QStatusBar, StatusBarInterface, BookDetailsInterface): + + files_dropped = pyqtSignal(object, object) + show_book_info = pyqtSignal() + + + resized = pyqtSignal(object) + + def initialize(self, systray=None): + StatusBarInterface.initialize(self, systray=systray) + self.book_info = BookInfoDisplay(self.clear_message) self.book_info.setAcceptDrops(True) self.scroll_area = QScrollArea() self.scroll_area.setWidget(self.book_info) @@ -192,15 +223,6 @@ class StatusBar(QStatusBar): def reset_info(self): self.book_info.show_data({}) - def showMessage(self, msg, timeout=0): - ret = QStatusBar.showMessage(self, msg, timeout) - if self.notifier is not None and not config['disable_tray_notification']: - if isosx and isinstance(msg, unicode): - try: - msg = msg.encode(preferred_encoding) - except UnicodeEncodeError: - msg = msg.encode('utf-8') - self.notifier(msg) - return ret - + def show_data(self, data): + self.book_info.show_data(data) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 6c9d0b3d52..5824171213 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -223,7 +223,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, ####################### Setup device detection ######################## self.device_manager = DeviceManager(Dispatcher(self.device_detected), - self.job_manager, Dispatcher(self.status_bar.showMessage)) + self.job_manager, Dispatcher(self.status_bar.show_message)) self.device_manager.start() @@ -256,8 +256,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, ####################### Status Bar ##################### self.status_bar.initialize(self.system_tray_icon) - self.status_bar.show_book_info.connect(self.show_book_info) - self.status_bar.files_dropped.connect(self.files_dropped_on_book) + self.book_details.show_book_info.connect(self.show_book_info) + self.book_details.files_dropped.connect(self.files_dropped_on_book) ####################### Setup Toolbar ##################### ToolbarMixin.__init__(self) @@ -482,7 +482,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, Dispatcher(self.info_read)) self.set_default_thumbnail(\ self.device_manager.device.THUMBNAIL_HEIGHT) - self.status_bar.showMessage(_('Device: ')+\ + self.status_bar.show_message(_('Device: ')+\ self.device_manager.device.__class__.get_gui_name()+\ _(' detected.'), 3000) self.device_connected = 'device' if not is_folder_device else 'folder' @@ -503,7 +503,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, dict(version=self.latest_version, device=' ')) self.device_info = ' ' if self.current_view() != self.library_view: - self.status_bar.reset_info() + self.book_details.reset_info() self.location_view.setCurrentIndex(self.location_view.model().index(0)) self.eject_action.setEnabled(False) self.refresh_ondevice_info (device_connected = False) @@ -861,7 +861,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, to_device = allow_device and self.stack.currentIndex() != 0 self._add_books(books, to_device) if to_device: - self.status_bar.showMessage(\ + self.status_bar.show_message(\ _('Uploading books to device.'), 2000) @@ -912,7 +912,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, self.upload_books(paths, list(map(ascii_filename, names)), infos, on_card=on_card) - self.status_bar.showMessage( + self.status_bar.show_message( _('Uploading books to device.'), 2000) if getattr(self._adder, 'number_of_books_added', 0) > 0: self.library_view.model().books_added(self._adder.number_of_books_added) @@ -1058,7 +1058,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, job = self.remove_paths(paths) self.delete_memory[job] = (paths, view.model()) view.model().mark_for_deletion(job, rows) - self.status_bar.showMessage(_('Deleting books from device.'), 1000) + self.status_bar.show_message(_('Deleting books from device.'), 1000) def remove_paths(self, paths): return self.device_manager.delete_books(\ @@ -1424,7 +1424,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, job.catalog_file_path = out job.fmt = fmt job.catalog_sync, job.catalog_title = sync, title - self.status_bar.showMessage(_('Generating %s catalog...')%fmt) + self.status_bar.show_message(_('Generating %s catalog...')%fmt) def catalog_generated(self, job): if job.result: @@ -1440,7 +1440,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, sync = dynamic.get('catalogs_to_be_synced', set([])) sync.add(id) dynamic.set('catalogs_to_be_synced', sync) - self.status_bar.showMessage(_('Catalog generated.'), 3000) + self.status_bar.show_message(_('Catalog generated.'), 3000) self.sync_catalogs() if job.fmt not in ['EPUB','MOBI']: export_dir = choose_dir(self, _('Export Catalog Directory'), @@ -1458,7 +1458,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, Dispatcher(self.scheduled_recipe_fetched), func, args=args, description=desc) self.conversion_jobs[job] = (temp_files, fmt, arg) - self.status_bar.showMessage(_('Fetching news from ')+arg['title'], 2000) + self.status_bar.show_message(_('Fetching news from ')+arg['title'], 2000) def scheduled_recipe_fetched(self, job): temp_files, fmt, arg = self.conversion_jobs.pop(job) @@ -1472,7 +1472,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, sync.add(id) dynamic.set('news_to_be_synced', sync) self.scheduler.recipe_downloaded(arg) - self.status_bar.showMessage(arg['title'] + _(' fetched.'), 3000) + self.status_bar.show_message(arg['title'] + _(' fetched.'), 3000) self.email_news(id) self.sync_news() @@ -1552,7 +1552,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, num = len(jobs) if num > 0: - self.status_bar.showMessage(_('Starting conversion of %d book(s)') % + self.status_bar.show_message(_('Starting conversion of %d book(s)') % num, 2000) def queue_convert_jobs(self, jobs, changed, bad, rows, previous, @@ -1599,7 +1599,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, self.library_view.model().db.add_format(book_id, \ fmt, data, index_is_id=True) data.close() - self.status_bar.showMessage(job.description + \ + self.status_bar.show_message(job.description + \ (' completed'), 2000) finally: for f in temp_files: @@ -1802,9 +1802,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, self.library_view.set_database(db) self.tags_view.set_database(db, self.tag_match, self.popularity) self.library_view.model().set_book_on_device_func(self.book_on_device) - self.status_bar.clearMessage() + self.status_bar.clear_message() self.search.clear_to_help() - self.status_bar.reset_info() + self.book_details.reset_info() self.library_view.model().count_changed() prefs['library_path'] = self.library_path @@ -1831,7 +1831,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, ''' page = 0 if location == 'library' else 1 if location == 'main' else 2 if location == 'carda' else 3 self.stack.setCurrentIndex(page) - self.status_bar.reset_info() + self.book_details.reset_info() for x in ('tb', 'cb'): splitter = getattr(self, x+'_splitter') splitter.button.setEnabled(location == 'library') diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index ae8499282a..3e1ee35289 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.7.1\n" -"POT-Creation-Date: 2010-06-06 14:20+MDT\n" -"PO-Revision-Date: 2010-06-06 14:20+MDT\n" +"Project-Id-Version: calibre 0.7.2\n" +"POT-Creation-Date: 2010-06-11 16:03+MDT\n" +"PO-Revision-Date: 2010-06-11 16:03+MDT\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -25,8 +25,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:418 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:431 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:385 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:98 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 @@ -48,10 +48,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:125 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:943 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 @@ -99,39 +99,39 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:293 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:666 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:946 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:949 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:674 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:955 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:958 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:491 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:826 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:989 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1806 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1809 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:843 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1015 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1300 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1303 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 #: /home/kovid/work/calibre/src/calibre/library/cli.py:213 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 #: /home/kovid/work/calibre/src/calibre/library/database2.py:302 #: /home/kovid/work/calibre/src/calibre/library/database2.py:314 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:876 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1392 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1394 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1516 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:880 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:917 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1515 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1517 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1639 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:131 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 @@ -416,50 +416,50 @@ msgstr "" msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:46 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:75 msgid "Communicate with iBooks through iTunes." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:52 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:81 msgid "Apple device detected, launching iTunes, please wait ..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:154 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:172 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:175 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:196 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:214 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:217 msgid "Updating device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:240 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:271 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:861 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1023 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:282 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:318 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:921 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:947 msgid "%d of %d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:277 -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1028 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:325 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:952 msgid "finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:452 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:499 msgid "" "Some books not found in iTunes database.\n" "Delete using the iBooks app.\n" "Click 'Show Details' for a list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:647 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:703 #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:649 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:705 #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:762 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:776 msgid "" "Some cover art could not be converted.\n" "Click 'Show Details' for a list." @@ -547,7 +547,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 #: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:38 msgid "John Schember" msgstr "" @@ -623,7 +623,7 @@ msgstr "" msgid "Comma separated list of metadata fields to turn into collections on the device. Possibilities include: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:140 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:142 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" msgstr "" @@ -677,22 +677,22 @@ msgstr "" msgid "Selected slot: %s is not supported." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775 msgid "There is insufficient free space in main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:781 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:783 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:777 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779 msgid "There is insufficient free space on the storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:813 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:819 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:847 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:809 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:815 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:843 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:239 #: /home/kovid/work/calibre/src/calibre/library/database2.py:141 #: /home/kovid/work/calibre/src/calibre/library/database2.py:152 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1276 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1399 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:120 msgid "News" msgstr "" @@ -719,44 +719,44 @@ msgstr "" msgid "Extra customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:28 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:37 msgid "Communicate with an eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:44 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:53 msgid "Get device information..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:53 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:56 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:59 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:126 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:149 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:64 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:67 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:130 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:137 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:160 msgid "Getting list of books on device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:174 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:176 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:188 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:190 msgid "Transferring books to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:191 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:220 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:208 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:237 msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:224 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:242 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:243 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:261 msgid "Removing books from device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:246 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:251 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:268 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:273 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:269 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:294 msgid "Sending metadata to device..." msgstr "" @@ -1218,15 +1218,15 @@ msgstr "" msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:802 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:809 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:836 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:916 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:923 msgid "Creating" msgstr "" @@ -1496,24 +1496,24 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:336 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:831 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:848 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:536 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:341 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:849 msgid "Author(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:374 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 msgid "Publisher" msgstr "" @@ -1526,29 +1526,29 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:297 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1008 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1034 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:146 msgid "Comments" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:384 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:54 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:286 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1004 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1030 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:103 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:130 msgid "Tags" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:386 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:302 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1013 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1039 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:102 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:82 msgid "Series" msgstr "" @@ -1558,13 +1558,13 @@ msgid "Language" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:389 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:996 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1022 msgid "Timestamp" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 msgid "Published" msgstr "" @@ -2268,20 +2268,24 @@ msgstr "" msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:103 +msgid "The layout of the user interface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:185 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:395 msgid "Choose Files" msgstr "" @@ -2306,12 +2310,12 @@ msgid "The specified directory could not be processed." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:260 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:608 msgid "No books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1938 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1432 msgid "No books found" msgstr "" @@ -2456,12 +2460,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:396 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:401 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:407 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:412 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:272 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 @@ -2557,8 +2561,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:222 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1239 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1257 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1362 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1380 msgid "Catalog" msgstr "" @@ -3218,7 +3222,7 @@ msgid "RB Output" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2183 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1677 msgid "Choose the format to view" msgstr "" @@ -3301,12 +3305,12 @@ msgid "Footer regular expression:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:73 msgid "Invalid regular expression" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:74 msgid "Invalid regular expression: %s" msgstr "" @@ -3511,11 +3515,19 @@ msgstr "" msgid "

For example, to match all h2 tags that have class=\"chapter\", set tag to h2, attribute to class and value to chapter.

Leaving attribute blank will match any attribute and leaving value blank will match any value. Setting tag to * will match any tag.

To learn more advanced usage of XPath see the XPath Tutorial." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:120 +msgid "Cover browser could not be loaded" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 +msgid "Browse by covers" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:205 @@ -3536,240 +3548,244 @@ msgstr "" msgid "No" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:115 msgid "star(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:116 msgid "Unrated" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:357 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:378 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:383 msgid "tags to remove" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:43 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:143 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:248 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:274 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:284 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:293 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:302 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:317 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:344 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:379 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:379 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:386 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:396 msgid "Email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:401 -msgid "Send to main memory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:403 -msgid "Send to storage card A" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:396 +msgid " and delete from library" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:405 +msgid "Send to main memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:407 +msgid "Send to storage card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:409 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419 -msgid "Main Memory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:421 -msgid "Storage Card A" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/device.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:423 +msgid "Main Memory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:416 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:425 +msgid "Storage Card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:427 msgid "Storage Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:437 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:441 msgid "Send and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:442 msgid "Send specific format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:477 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:481 msgid "Connect to folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:486 msgid "Disconnect from folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:494 msgid "Fetch annotations (experimental)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:609 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:622 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:623 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:617 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:621 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:626 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:630 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:618 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:627 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:631 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:672 msgid "E-book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:667 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:675 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:668 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 msgid "by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:677 msgid "in the %s format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:690 msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:712 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:719 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:871 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:727 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1006 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:713 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:721 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728 msgid "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:738 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:746 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:739 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:747 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:743 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:751 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:770 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:778 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:779 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:790 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1000 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:841 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:849 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:902 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:957 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:966 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1007 msgid "Could not upload the following books to the device, as no suitable formats were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1046 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1055 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1047 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1056 msgid "

Cannot upload books to device there is no more free space available " msgstr "" @@ -3791,9 +3807,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:293 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:994 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1020 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:99 msgid "Path" msgstr "" @@ -3802,8 +3818,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:219 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:292 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:100 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:91 msgid "Formats" msgstr "" @@ -3957,8 +3973,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:510 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:933 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:190 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "" @@ -4045,7 +4061,7 @@ msgid "Access log:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:781 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:761 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:419 msgid "Failed to start content server" msgstr "" @@ -4192,7 +4208,7 @@ msgid "Sending to &device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:297 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 msgid "Preferences" msgstr "" @@ -4526,9 +4542,9 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:833 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:850 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:535 msgid "Date" msgstr "" @@ -4549,82 +4565,82 @@ msgid "Create and edit tag-based columns" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:18 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:19 msgid "Text, column shown in the tag browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:22 msgid "Comma separated text, like tags, shown in the tag browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:24 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:25 msgid "Long text, like comments, not shown in the tag browser" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:29 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:30 msgid "Floating point numbers" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:32 msgid "Integers" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:34 msgid "Ratings, shown with stars" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:36 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:37 msgid "Yes/No" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:61 msgid "No column selected" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:62 msgid "No column has been selected" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:66 msgid "Selected column is not a user-defined column" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:97 msgid "No lookup name was provided" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:98 -msgid "The label must contain only letters and digits, and start with a letter" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:99 +msgid "The label must contain only letters, digits and underscores, and start with a letter" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:108 msgid "No column heading was provided" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:114 msgid "The lookup name %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:124 msgid "The heading %s is already used" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:126 msgid "The lookup name must be lower case and cannot contain \":\"s or spaces" msgstr "" @@ -4938,7 +4954,7 @@ msgid "Choose formats for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:139 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1391 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:876 msgid "Books" msgstr "" @@ -4980,67 +4996,67 @@ msgstr "" msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:442 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:447 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:444 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:449 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:452 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:548 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:558 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:563 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:571 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:559 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:572 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:562 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:566 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:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:578 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:579 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:613 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:642 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:641 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:643 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:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:714 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:713 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:715 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -5504,12 +5520,12 @@ msgid "Add tag to available tags and apply it to current book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:441 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:442 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -5778,11 +5794,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:82 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:96 msgid "No match" msgstr "" @@ -5818,54 +5834,194 @@ msgstr "" msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:33 +msgid "Save single format to disk..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:49 +msgid "Edit metadata individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:52 +msgid "Edit metadata in bulk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:55 +msgid "Download metadata and covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:57 +msgid "Download only metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:59 +msgid "Download only covers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:62 +msgid "Download only social metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:68 +msgid "Merge into first selected book - delete others" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:71 +msgid "Merge into first selected book - keep others" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:79 +msgid "Add books from a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:81 +msgid "Add books from directories, including sub-directories (One book per directory, assumes every ebook file is the same book in a different format)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:85 +msgid "Add books from directories, including sub directories (Multiple books per directory, assumes every ebook file is a different book)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:88 +msgid "Add Empty book. (Book entry with no formats)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:283 +msgid "Save to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:100 +msgid "Save to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1782 +msgid "Save only %s format to disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1785 +msgid "Save only %s format to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:289 +msgid "View" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 +msgid "View specific format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:122 +msgid "Remove selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:124 +msgid "Remove files of a specific format from selected books.." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +msgid "Remove all formats from selected books, except..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 +msgid "Remove covers from selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:145 +msgid "Convert individually" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:147 +msgid "Bulk convert" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:151 +msgid "Create catalog of books in your calibre library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:160 +msgid "Run welcome wizard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:192 +msgid "Similar books..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:297 +msgid "Cover Browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:315 +msgid "Tag Browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:336 +msgid "Side bar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:366 +msgid "Book Details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:60 msgid "Job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:61 msgid "Status" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:62 msgid "Progress" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:63 msgid "Running time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 msgid "There are %d running jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:101 msgid "Unknown job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:82 msgid "There are %d waiting jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:219 msgid "Cannot kill job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:217 msgid "Cannot kill jobs that communicate with the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:220 msgid "Job has already run" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:248 msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:278 +msgid "Jobs:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:294 +msgid "Click to see list of active jobs." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:354 msgid " - Jobs" msgstr "" @@ -5877,112 +6033,112 @@ msgstr "" msgid "Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:56 msgid "On Device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 msgid "Size (MB)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:61 msgid "Rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:285 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:291 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:296 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1003 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1007 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1029 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1033 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416 msgid "None" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:302 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1013 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1039 msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:639 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1071 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1097 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:350 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:830 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:847 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:834 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:851 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:835 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:997 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1023 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:101 msgid "Collections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:993 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1019 msgid "Format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1053 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1079 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1056 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1082 msgid "Double click to edit me

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:110 msgid "Hide column %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:115 msgid "Sort on %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:116 msgid "Ascending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:119 msgid "Descending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:131 msgid "Change text alignment for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133 msgid "Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133 msgid "Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:134 msgid "Center" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153 msgid "Show column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165 msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:504 msgid "Not allowed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:505 msgid "Dropping onto a device is not supported. First add the book to the calibre library." msgstr "" @@ -6076,274 +6232,245 @@ msgstr "" msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:67 -msgid "Choose a location for your calibre e-book library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:76 -msgid "Failed to create library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:77 -msgid "Failed to create calibre library at: %r. Aborting." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:132 -msgid "Initializing user interface..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:157 -msgid "Repairing failed" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:158 -msgid "The database repair failed. Starting with a new empty library." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:84 +msgid "Choose a location for your calibre e-book library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:93 +msgid "Failed to create library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:94 +msgid "Failed to create calibre library at: %r." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:151 +msgid "Initializing user interface..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:176 +msgid "Repairing failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:177 +msgid "The database repair failed. Starting with a new empty library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:224 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:205 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:206 msgid "Your calibre database appears to be corrupted. Do you want calibre to try and repair it automatically? If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:212 msgid "Repairing database. This can take a very long time for a large collection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:225 msgid "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:236 msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:281 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:283 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:284 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:287 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:289 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:291 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:294 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:290 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:308 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:253 msgid "calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:255 msgid "&Restrict to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:256 msgid "Books display will be restricted to those matching the selected saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:257 msgid "set in ui.py" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:258 msgid "Advanced search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:260 msgid "Alt+S" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:261 msgid "&Search:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:404 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:263 msgid "

Search the list of books by title, author, publisher, tags, comments, etc.

Words separated by spaces are ANDed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:264 msgid "Reset Quick Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:266 msgid "Choose saved search or enter name for new saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:267 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:269 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:413 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:271 msgid "Delete current saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:415 -msgid "Sort by &popularity" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:416 -msgid "Match any" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:417 -msgid "Match all" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:418 -msgid "Create, edit, and delete user categories" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:419 -msgid "Manage &user categories" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:420 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:273 msgid "Add books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:274 msgid "A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:422 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:423 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:276 msgid "Remove books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:277 msgid "Del" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:278 msgid "Edit meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:279 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:280 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:428 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:281 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:282 msgid "Send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:430 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:355 -msgid "Save to disk" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:431 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:284 msgid "S" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:432 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:285 msgid "Fetch news" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:433 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:286 msgid "F" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:434 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:287 msgid "Convert E-books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:435 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:288 msgid "C" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:436 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:369 -msgid "View" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:437 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:290 msgid "V" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:291 msgid "Open containing folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:292 msgid "Show book details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:293 msgid "Books by same author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:294 msgid "Books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:295 msgid "Books by this publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:296 msgid "Books with the same tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:445 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:298 msgid "Configure calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:446 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:299 msgid "Ctrl+P" msgstr "" @@ -6371,15 +6498,35 @@ msgstr "" msgid "No matches found for this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:83 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:249 msgid "Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:302 msgid "The selected search will be permanently deleted. Are you sure?" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:344 +msgid "Search (For Advanced Search click the button to the left)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:371 +msgid "Saved Searches" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:46 +msgid "({0} of {1})" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:52 +msgid "(all books)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:54 +msgid "({0} of all)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." msgstr "" @@ -6440,82 +6587,62 @@ msgstr "" msgid "&Alternate shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:24 -msgid "Jobs:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:32 -msgid "Click to see list of active jobs." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:83 -msgid "Hide Book Details" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:83 -msgid "Show Book Details" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:84 -msgid "Hide Tag Browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:84 -msgid "Show Tag Browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:85 -msgid "Hide Cover Browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:85 -msgid "Show Cover Browser" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:95 -msgid "Side bar" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:135 -msgid "Cover browser could not be loaded: " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:150 msgid "Rename" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:155 msgid "Hide category %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:158 msgid "Show category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:162 msgid "Show all categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:169 msgid "Manage " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:173 msgid "Manage Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:184 msgid "Manage User Categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:377 #: /home/kovid/work/calibre/src/calibre/library/database2.py:238 msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:420 -msgid "The name %s is already used." +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:451 +msgid "Duplicate search name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:452 +msgid "The saved search name %s is already used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:652 +msgid "Sort by &popularity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:656 +msgid "Match all" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:656 +msgid "Match any" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:661 +msgid "Manage &user categories" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 @@ -6553,189 +6680,59 @@ msgstr "" msgid "The following books have already been converted to %s format. Do you wish to reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:70 -msgid "Save single format to disk..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:162 -msgid "Search (For Advanced Search click the button to the left)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:168 -msgid "Saved Searches" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:172 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:189 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:191 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:194 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:199 msgid "&Restart" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:240 msgid "

For help see the: User Manual
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:281 -msgid "Edit metadata individually" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:283 -msgid "Edit metadata in bulk" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:285 -msgid "Download metadata and covers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:286 -msgid "Download only metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:287 -msgid "Download only covers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:288 -msgid "Download only social metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:292 -msgid "Merge into first selected book - delete others" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:294 -msgid "Merge into first selected book - keep others" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301 -msgid "Add books from a single directory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302 -msgid "Add books from directories, including sub-directories (One book per directory, assumes every ebook file is the same book in a different format)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 -msgid "Add books from directories, including sub directories (Multiple books per directory, assumes every ebook file is a different book)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:308 -msgid "Add Empty book. (Book entry with no formats)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:356 -msgid "Save to disk in a single directory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2299 -msgid "Save only %s format to disk" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2302 -msgid "Save only %s format to disk in a single directory" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:370 -msgid "View specific format" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:375 -msgid "Remove selected books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377 -msgid "Remove files of a specific format from selected books.." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:379 -msgid "Remove all formats from selected books, except..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:381 -msgid "Remove covers from selected books" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:420 -msgid "Convert individually" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:421 -msgid "Bulk convert" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:424 -msgid "Create catalog of books in your calibre library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:440 -msgid "Run welcome wizard" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:480 -msgid "Similar books..." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:564 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:689 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:347 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:800 -msgid "Browse by covers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:870 -msgid "({0} of {1})" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:875 -msgid "(all books)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 -msgid "({0} of all)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1000 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1002 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:487 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1034 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:519 msgid "Connected " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1046 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:531 msgid "Device database corrupted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1047 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532 msgid "" "\n" "

The database of books on the reader is corrupted. Try the following:\n" @@ -6746,386 +6743,386 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1110 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1287 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:772 msgid "Use library only" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1111 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:773 msgid "User annotations generated from main library only" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1118 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1661 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1699 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1720 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1850 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1915 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2033 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1098 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1155 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1214 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1409 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1527 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1119 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604 msgid "No books selected to fetch annotations from" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1144 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:629 msgid "Merging user annotations into database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1172 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:657 msgid "%s
Last Page Read: %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1178 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:663 msgid "%s
Last Page Read: Location %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Location %d • %s
%s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1206 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:691 msgid "Page %d • %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1211 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:696 msgid "Location %d • %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1331 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:816 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1332 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:817 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1380 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:865 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:916 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:877 msgid "EPUB Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1393 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:878 msgid "LRF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:879 msgid "HTML Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:880 msgid "LIT Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1396 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:881 msgid "MOBI Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:882 msgid "Topaz books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1398 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:883 msgid "Text books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:884 msgid "PDF Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1400 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:885 msgid "Comics" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1401 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:886 msgid "Archives" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:890 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1440 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:925 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1441 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:926 msgid "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:935 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1451 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:936 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1471 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:956 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1474 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2177 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2202 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1696 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1484 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:969 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1502 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:987 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1540 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1025 msgid "The selected books will be permanently deleted and the files removed from your computer. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1557 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1046 msgid "The selected books will be permanently deleted from your device. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1572 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1061 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1603 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1097 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1619 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1113 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1621 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1115 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1621 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1115 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1117 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1139 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1140 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1143 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1660 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1698 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1154 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1192 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1719 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1722 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1216 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1723 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1727 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1221 msgid "All book formats and metadata from the selected books will be added to the first selected book.

The second and subsequently selected books will not be deleted or changed.

Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1738 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1232 msgid "All book formats and metadata from the selected books will be merged into the first selected book.

After merger the second and subsequently selected books will be deleted.

All book formats of the first selected book will be kept and any duplicate formats in the second and subsequently selected books will be permanently deleted from your computer.

Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1244 msgid "You are about to merge more than 5 books. Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1849 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1343 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1852 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1346 msgid "Choose destination directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1885 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1379 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1380 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1893 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1894 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1387 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1895 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1389 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1410 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1933 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1427 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1939 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1949 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1443 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1952 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1446 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1953 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1447 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1967 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1461 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1981 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1475 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2032 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1526 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2061 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1555 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2177 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2235 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2191 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1685 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2192 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1686 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/ui.py:2201 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1695 msgid "Cannot open folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2236 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2277 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2282 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1764 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1769 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2278 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1765 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2283 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1770 msgid "Cannot configure before calibre is restarted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2334 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1817 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2335 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1818 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1870 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2391 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1876 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2392 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1877 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/ui.py:2415 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2443 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1900 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1928 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2416 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901 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/ui.py:2429 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1914 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2444 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1929 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2491 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1969 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/ui.py:2516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1994 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2519 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1997 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/ui.py:2523 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2001 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2575 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2053 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/ui.py:2594 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072 msgid "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2602 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2080 msgid "Update available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2603 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2081 msgid "%s has been updated to version %s. See the new features. Visit the download page?" msgstr "" @@ -7585,82 +7582,94 @@ msgstr "" msgid "Print eBook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:198 msgid "Copy Image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:199 msgid "Paste Image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 msgid "" "Library\n" "%d\n" "books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 msgid "" "Reader\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:230 msgid "" "Card A\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:231 msgid "" "Card B\n" "%s\n" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 msgid "Click to see the books available on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:238 msgid "Click to see the books in the main memory of your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:239 msgid "Click to see the books on storage card A in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:240 msgid "Click to see the books on storage card B in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:246 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:248 msgid "Books located at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:506 msgid "Change Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:507 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:508 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:509 msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:510 msgid "Title Case" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:932 +msgid "Drag to resize" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:963 +msgid "Show" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:968 +msgid "Hide" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 msgid "If you use the WordPlayer e-book app on your Android phone, you can access your calibre book collection directly on the device. To do this you have to turn on the content server." msgstr "" @@ -8346,27 +8355,27 @@ msgstr "" msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1542 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665 msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1571 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1694 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1588 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1711 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1681 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1804 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1720 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1845 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867 msgid "Checked id" msgstr "" @@ -8784,95 +8793,95 @@ msgstr "" msgid "Do not download latest version of builtin recipes from the calibre server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:43 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:44 msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:692 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:702 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:694 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:700 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:710 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:702 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:821 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:831 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:847 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:857 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:853 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:863 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:855 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:865 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:936 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:946 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:972 msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:974 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1024 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1205 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1220 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1291 msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1287 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1302 msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1304 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1319 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1451 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1466 msgid "Failed to log in, check your username and password for the calibre Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1467 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1482 msgid "You do not have permission to download this issue. Either your subscription has expired or you have exceeded the maximum allowed downloads for today." msgstr "" diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index 50b98b39b8..c5fba13f57 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -31,7 +31,7 @@ class SafeLocalTimeZone(tzlocal): def compute_locale_info_for_parse_date(): try: dt = datetime.strptime('1/5/2000', "%x") - except ValueError: + except: try: dt = datetime.strptime('1/5/01', '%x') except: