diff --git a/src/calibre/devices/kindle/driver.py b/src/calibre/devices/kindle/driver.py
index b1ec52d214..f5cde94ab6 100644
--- a/src/calibre/devices/kindle/driver.py
+++ b/src/calibre/devices/kindle/driver.py
@@ -12,6 +12,7 @@ from cStringIO import StringIO
from struct import unpack
from calibre.devices.usbms.driver import USBMS
+from calibre.ebooks.metadata.topaz import get_metadata as get_topaz_metadata
class KINDLE(USBMS):
@@ -159,11 +160,12 @@ class Bookmark():
self.id = id
self.last_read = 0
self.last_read_location = 0
+ self.path = path
self.timestamp = 0
self.user_notes = None
- self.get_bookmark_data(path)
- self.get_book_length(path)
+ self.get_bookmark_data()
+ self.get_book_length()
try:
self.percent_read = float(100*self.last_read / self.book_length)
except:
@@ -180,13 +182,13 @@ class Bookmark():
stop, = unpack('>I', self.data[offoff + 8:offoff + 12])
return StreamSlicer(self.stream, start, stop)
- def get_bookmark_data(self, path):
+ def get_bookmark_data(self):
''' Return the timestamp and last_read_location '''
from calibre.ebooks.metadata.mobi import StreamSlicer
user_notes = {}
if self.bookmark_extension == 'mbp':
MAGIC_MOBI_CONSTANT = 150
- with open(path,'rb') as f:
+ with open(self.path,'rb') as f:
stream = StringIO(f.read())
data = StreamSlicer(stream)
self.timestamp, = unpack('>I', data[0x24:0x28])
@@ -204,7 +206,7 @@ class Bookmark():
eo = bpar_offset + bpar_len
# Walk bookmark entries
- #print " --- %s --- " % path
+ #print " --- %s --- " % self.path
current_entry = 1
sig = data[eo:eo+4]
previous_block = None
@@ -243,18 +245,28 @@ class Bookmark():
while sig == 'BKMK':
# Fix start location for Highlights using BKMK data
end_loc, = unpack('>I', data[eo+0x10:eo+0x14])
- if end_loc in user_notes and user_notes[end_loc]['type'] == 'Highlight':
+
+ if end_loc in user_notes and \
+ (user_notes[end_loc]['type'] == 'Highlight' or \
+ user_notes[end_loc]['type'] == 'Note'):
+ # Switch location to start (0x08:0x0c)
start, = unpack('>I', data[eo+8:eo+12])
user_notes[start] = user_notes[end_loc]
+ '''
+ print " %s: swapping 0x%x (%d) to 0x%x (%d)" % (user_notes[end_loc]['type'],
+ end_loc,
+ end_loc/MAGIC_MOBI_CONSTANT + 1,
+ start,
+ start//MAGIC_MOBI_CONSTANT + 1)
+ '''
+ user_notes[start]['displayed_location'] = start/MAGIC_MOBI_CONSTANT + 1
user_notes.pop(end_loc)
- elif end_loc in user_notes and user_notes[end_loc]['type'] == 'Note':
- # Skip duplicate bookmarks for notes
- pass
else:
# If a bookmark coincides with a user annotation, the locs could
# be the same - cheat by nudging -1
# Skip bookmark for last_read_location
if end_loc != self.last_read:
+ # print " adding Bookmark at 0x%x (%d)" % (end_loc, end_loc/MAGIC_MOBI_CONSTANT + 1)
displayed_location = end_loc/MAGIC_MOBI_CONSTANT + 1
user_notes[end_loc - 1] = dict(id=self.id,
displayed_location=displayed_location,
@@ -265,10 +277,41 @@ class Bookmark():
sig = data[eo:eo+4]
elif self.bookmark_extension == 'tan':
- # TAN bookmarks
+ def get_topaz_highlight(displayed_location):
+ # Parse My Clippings.txt for a matching highlight
+ book_fs = self.path.replace('.%s' % self.bookmark_extension,'.%s' % self.book_format)
+ with open(book_fs,'rb') as f2:
+ stream = StringIO(f2.read())
+ mi = get_topaz_metadata(stream)
+ my_clippings = self.path
+ split = my_clippings.find('documents') + len('documents/')
+ my_clippings = my_clippings[:split] + "My Clippings.txt"
+ try:
+ with open(my_clippings, 'r') as f2:
+ marker_found = 0
+ text = ''
+ search_str1 = '%s (%s)' % (mi.title, str(mi.author[0]))
+ search_str2 = '- Highlight Loc. %d' % (displayed_location)
+ for line in f2:
+ if marker_found == 0:
+ if line.startswith(search_str1):
+ marker_found = 1
+ elif marker_found == 1:
+ if line.startswith(search_str2):
+ marker_found = 2
+ elif marker_found == 2:
+ if line.startswith('=========='):
+ break
+ text += line.strip()
+ else:
+ raise error
+ except:
+ text = '(Unable to extract highlight text from My Clippings.txt)'
+ return text
+
MAGIC_TOPAZ_CONSTANT = 33.33
- self.timestamp = os.path.getmtime(path)
- with open(path,'rb') as f:
+ self.timestamp = os.path.getmtime(self.path)
+ with open(self.path,'rb') as f:
stream = StringIO(f.read())
data = StreamSlicer(stream)
self.last_read = int(unpack('>I', data[5:9])[0])
@@ -285,7 +328,7 @@ class Bookmark():
e_type = 'Bookmark'
elif e_type == 1:
e_type = 'Highlight'
- text = "(Topaz highlights not yet supported)"
+ text = get_topaz_highlight(location/MAGIC_TOPAZ_CONSTANT + 1)
elif e_type == 2:
e_type = 'Note'
text = data[e_base+0x10:e_base+0x10+text_len]
@@ -293,10 +336,9 @@ class Bookmark():
e_type = 'Unknown annotation type'
if self.book_format in ['tpz','azw1']:
- # *** This needs fine-tuning
displayed_location = location/MAGIC_TOPAZ_CONSTANT + 1
elif self.book_format == 'pdf':
- # *** This needs testing
+ # *** This needs implementation
displayed_location = location
user_notes[location] = dict(id=self.id,
displayed_location=displayed_location,
@@ -315,16 +357,9 @@ class Bookmark():
print "unsupported bookmark_extension: %s" % self.bookmark_extension
self.user_notes = user_notes
- '''
- for location in sorted(user_notes):
- print ' Location %d: %s\n%s' % (user_notes[location]['displayed_location'],
- user_notes[location]['type'],
- '\n'.join(self.textdump(user_notes[location]['text'])))
- '''
-
- def get_book_length(self, path):
+ def get_book_length(self):
from calibre.ebooks.metadata.mobi import StreamSlicer
- book_fs = path.replace('.%s' % self.bookmark_extension,'.%s' % self.book_format)
+ book_fs = self.path.replace('.%s' % self.bookmark_extension,'.%s' % self.book_format)
self.book_length = 0
if self.bookmark_extension == 'mbp':
diff --git a/src/calibre/ebooks/__init__.py b/src/calibre/ebooks/__init__.py
index c266414e70..d630cfbf63 100644
--- a/src/calibre/ebooks/__init__.py
+++ b/src/calibre/ebooks/__init__.py
@@ -25,7 +25,7 @@ class DRMError(ValueError):
BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'htm', 'xhtm',
'html', 'xhtml', 'pdf', 'pdb', 'prc', 'mobi', 'azw', 'doc',
'epub', 'fb2', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
- 'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml']
+ 'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml', 'mbp', 'tan']
class HTMLRenderer(object):
diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py
index 27a61df23f..fd1a1c3947 100644
--- a/src/calibre/ebooks/metadata/mobi.py
+++ b/src/calibre/ebooks/metadata/mobi.py
@@ -336,6 +336,13 @@ class MetadataUpdater(object):
if mi.publisher:
update_exth_record((101, mi.publisher.encode(self.codec, 'replace')))
if mi.comments:
+ # Strip user annotations
+ a_offset = mi.comments.find('
')
+ ad_offset = mi.comments.find('
')
+ if a_offset >= 0:
+ mi.comments = mi.comments[:a_offset]
+ if ad_offset >= 0:
+ mi.comments = mi.comments[:ad_offset]
update_exth_record((103, mi.comments.encode(self.codec, 'replace')))
if mi.isbn:
update_exth_record((104, mi.isbn.encode(self.codec, 'replace')))
diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py
index 82d716f1ee..b72ac7d1c4 100644
--- a/src/calibre/gui2/ui.py
+++ b/src/calibre/gui2/ui.py
@@ -1074,6 +1074,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
mi.comments = unicode(user_notes_soup.prettify())
# Update library comments
self.db.set_comment(id, mi.comments)
+ '''
+ # Add bookmark file to id
+ self.db.add_format_with_hooks(id, bm.bookmark.bookmark_extension,
+ bm.bookmark.path, index_is_id=True)
+ '''
self.update_progress.emit(i)
self.update_done.emit()
self.done_callback(self.am.keys())
@@ -1516,6 +1521,12 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
opts = config().parse()
if single_format is not None:
opts.formats = single_format
+ # Special case for Kindle annotation files
+ if single_format.lower() == 'mbp' or single_format == 'tan':
+ opts.to_lowercase = False
+ opts.save_cover = False
+ opts.write_opf = False
+ opts.template = opts.send_template
if single_dir:
opts.template = opts.template.split('/')[-1].strip()
if not opts.template:
diff --git a/src/calibre/library/catalog.py b/src/calibre/library/catalog.py
index 025020848d..0a00b4c0e6 100644
--- a/src/calibre/library/catalog.py
+++ b/src/calibre/library/catalog.py
@@ -1052,7 +1052,16 @@ class EPUB_MOBI(CatalogPlugin):
this_title['rating'] = record['rating'] if record['rating'] else 0
this_title['date'] = strftime(u'%B %Y', record['pubdate'].timetuple())
this_title['timestamp'] = record['timestamp']
+
if record['comments']:
+ # Strip annotations
+ a_offset = record['comments'].find('
')
+ ad_offset = record['comments'].find('
')
+ if a_offset >= 0:
+ record['comments'] = record['comments'][:a_offset]
+ if ad_offset >= 0:
+ record['comments'] = record['comments'][:ad_offset]
+
this_title['description'] = self.markdownComments(record['comments'])
paras = BeautifulSoup(this_title['description']).findAll('p')
tokens = []
diff --git a/src/calibre/manual/faq.rst b/src/calibre/manual/faq.rst
index eff65fdb7b..ba186a0c10 100644
--- a/src/calibre/manual/faq.rst
+++ b/src/calibre/manual/faq.rst
@@ -125,7 +125,7 @@ With recent reader iterations, SONY, in all its wisdom has decided to try to for
use their software. If you install it, it auto-launches whenever you connect the reader.
If you don't want to uninstall it altogether, there are a couple of tricks you can use. The
simplest is to simply re-name the executable file that launches the library program. More detail
-`here http://www.mobileread.com/forums/showthread.php?t=65809`_.
+`here
`_.
Can I use the collections feature of the SONY reader?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot
index 35b3a48ab8..fad787d35d 100644
--- a/src/calibre/translations/calibre.pot
+++ b/src/calibre/translations/calibre.pot
@@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: calibre 0.6.43\n"
-"POT-Creation-Date: 2010-02-26 18:30+MST\n"
-"PO-Revision-Date: 2010-02-26 18:30+MST\n"
+"Project-Id-Version: calibre 0.6.44\n"
+"POT-Creation-Date: 2010-03-05 13:48+MST\n"
+"PO-Revision-Date: 2010-03-05 13:48+MST\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@@ -28,8 +28,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:297
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:300
+#: /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:54
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:418
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
@@ -52,21 +53,21 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:889
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:892
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:44
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:70
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:82
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:123
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:157
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:611
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:800
-#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:802
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:38
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:64
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:76
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:117
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:151
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:605
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:804
+#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:806
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909
@@ -107,21 +108,21 @@ msgstr ""
#: /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:551
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:560
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:573
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:582
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:864
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
#: /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:453
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:412
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:434
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:959
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1086
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
#: /home/kovid/work/calibre/src/calibre/library/database.py:913
#: /home/kovid/work/calibre/src/calibre/library/database2.py:745
#: /home/kovid/work/calibre/src/calibre/library/database2.py:757
@@ -130,9 +131,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1616
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1618
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1738
-#: /home/kovid/work/calibre/src/calibre/library/server.py:667
-#: /home/kovid/work/calibre/src/calibre/library/server.py:743
-#: /home/kovid/work/calibre/src/calibre/library/server.py:790
+#: /home/kovid/work/calibre/src/calibre/library/server.py:664
+#: /home/kovid/work/calibre/src/calibre/library/server.py:740
+#: /home/kovid/work/calibre/src/calibre/library/server.py:787
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
@@ -146,19 +147,19 @@ msgstr ""
msgid "Base"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:149
+#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:172
msgid "File type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:183
+#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:206
msgid "Metadata reader"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:214
+#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:237
msgid "Metadata writer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:240
+#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:263
msgid "Catalog generator"
msgstr ""
@@ -179,42 +180,43 @@ msgid "Extract cover from comic files"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:110
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:122
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:132
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:142
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:121
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:133
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:143
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:153
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:163
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:173
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:183
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:193
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:203
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:164
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:174
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:184
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:194
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:204
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:214
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:225
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:237
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:258
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:236
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:248
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:269
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:279
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:289
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:280
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:290
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:300
msgid "Read metadata from %s files"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:248
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:259
msgid "Read metadata from ebooks in RAR archives"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:300
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:311
msgid "Read metadata from ebooks in ZIP archives"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:311
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:321
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:331
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:353
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:322
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:332
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:342
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:364
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:375
msgid "Set metadata in %s files"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:342
+#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:353
msgid "Set metadata from %s files"
msgstr ""
@@ -450,7 +452,7 @@ msgstr ""
msgid "John Schember"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22
+#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23
msgid "Device Interface"
msgstr ""
@@ -470,15 +472,15 @@ msgstr ""
msgid "Communicate with the JetBook eBook reader."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:22
+#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21
msgid "Communicate with the Kindle eBook reader."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:67
+#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:134
msgid "Communicate with the Kindle 2 eBook reader."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77
+#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:144
msgid "Communicate with the Kindle DX eBook reader."
msgstr ""
@@ -555,51 +557,51 @@ msgstr ""
msgid "Communicate with the Teclast K3 reader."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:250
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:251
msgid "Unable to detect the %s disk drive. Try rebooting."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:433
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:424
msgid "Unable to detect the %s mount point. Try rebooting."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:488
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:489
msgid "Unable to detect the %s disk drive."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:581
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:582
msgid "Could not find mount helper: %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:593
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:594
msgid "Unable to detect the %s disk drive. Your kernel is probably exporting a deprecated version of SYSFS."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:601
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:602
msgid "Unable to mount main memory (Error code: %d)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:738
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:740
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:739
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:741
msgid "The reader has no storage card in this slot."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:742
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:743
msgid "Selected slot: %s is not supported."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:775
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:776
msgid "There is insufficient free space in main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:777
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:778
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:780
msgid "There is insufficient free space on the storage card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:803
-#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:828
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:233
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:810
+#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:835
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1112
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1116
@@ -655,91 +657,87 @@ msgstr ""
msgid "Removing books from device metadata listing..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:44
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:40
msgid "%prog [options] mybook.chm"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:45
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:41
msgid "Output directory. Defaults to current directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:48
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:44
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589
msgid "Set the book title"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:50
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:46
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591
msgid "Set sort key for the title"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:52
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:48
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593
msgid "Set the author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:54
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:50
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595
msgid "Set sort key for the author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:56
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:52
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597
msgid "The category this book belongs to. E.g.: History"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:59
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:55
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600
msgid "Path to a graphic that will be set as this files' thumbnail"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:62
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:58
msgid "Path to a txt file containing a comment."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:65
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:61
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607
msgid "Extract thumbnail from LRF file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:66
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:62
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608
msgid "Set the publisher"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:67
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:63
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609
msgid "Set the book classification"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:68
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:64
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610
msgid "Set the book creator"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:69
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:65
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611
msgid "Set the book producer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:71
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613
msgid "Extract cover from LRF file. Note that the LRF format has no defined cover, so we use some heuristics to guess the cover."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:73
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:69
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615
msgid "Set book ID"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:75
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:71
msgid "Set font delta"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:220
-msgid "dummy option until real options are determined."
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200
msgid "Rendered %s"
msgstr ""
@@ -1109,31 +1107,31 @@ msgstr ""
msgid "Failed to parse date/time"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:780
+#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:781
msgid "Converting input to HTML..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806
+#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:808
msgid "Running transforms on ebook..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:893
+#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:895
msgid "Creating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:57
+#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:58
msgid "Extract the contents of the generated EPUB file to the specified directory. The contents of the directory are first deleted, so be careful."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:63
+#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:64
msgid "Turn off splitting at page breaks. Normally, input files are automatically split at every page break into two files. This gives an output ebook that can be parsed faster and with less resources. However, splitting is slow and if your source file contains a very large number of page breaks, you should turn off splitting on page breaks."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:74
+#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:75
msgid "Split all HTML files larger than this size (in KB). This is necessary as most EPUB readers cannot handle large file sizes. The default of %defaultKB is the size required for Adobe Digital Editions."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:81
+#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:82
msgid "Normally, if the input file has no cover and you don't specify one, a default cover is generated with the title, authors, etc. This option disables the generation of this cover."
msgstr ""
@@ -1626,7 +1624,7 @@ msgid ""
"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1080
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1347
msgid "Cover"
msgstr ""
@@ -2165,12 +2163,12 @@ msgid "The specified directory could not be processed."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:204
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:495
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517
msgid "No books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:205
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1416
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1589
msgid "No books found"
msgstr ""
@@ -2282,7 +2280,7 @@ msgid "E-book options"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:280
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:282
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1466
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1484
msgid "Catalog"
@@ -2945,7 +2943,7 @@ msgid "RB Output"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1661
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834
msgid "Choose the format to view"
msgstr ""
@@ -3250,183 +3248,191 @@ msgstr ""
msgid "Get list of books on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:228
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:229
+msgid "Get annotations from device"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:238
msgid "Send metadata to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:237
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:247
msgid "Upload %d books to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:252
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:262
msgid "Delete books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279
msgid "Download books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:289
msgid "View book on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:286
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:296
msgid "and delete from library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:307
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319
msgid "Set default send to device action"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:321
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:323
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:324
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:331
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:333
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:335
msgid "Email to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:334
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:341
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:346
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:353
msgid "Send to main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:336
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:355
msgid "Send to storage card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:338
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:345
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357
msgid "Send to storage card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:360
msgid "Send specific format to main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:362
msgid "Send specific format to storage card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:352
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:364
msgid "Send specific format to storage card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:496
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:408
+msgid "Fetch annotations (experimental)"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:518
msgid "selected to send"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:501
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:523
msgid "Choose format to send to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:508
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530
msgid "No device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:509
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:531
msgid "Cannot send: No device is connected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:512
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:534
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:538
msgid "No card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:513
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:535
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:539
msgid "Cannot send: Device has no storage card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:558
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:580
msgid "E-book:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:561
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:583
msgid "Attached, you will find the e-book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:562
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:584
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177
msgid "by"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:563
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:585
msgid "in the %s format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:576
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598
msgid "Sending email to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:606
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:705
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:765
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:888
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:628
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:635
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:727
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:787
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:903
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:910
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629
msgid "Auto convert the following books before sending via email?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:636
msgid "Could not email the following books as no suitable formats were found:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:632
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:654
msgid "Failed to email books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:633
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:655
msgid "Failed to email the following books:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:659
msgid "Sent by email:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:686
msgid "News:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:665
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:687
msgid "Attached is the"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698
msgid "Sent news to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:706
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:766
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:882
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:788
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:904
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:735
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:757
msgid "Sending catalogs to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:796
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:850
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:889
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:911
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:937
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:959
msgid "No space on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:938
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:960
msgid "Cannot upload books to device there is no more free space available "
msgstr ""
@@ -3445,19 +3451,19 @@ msgstr ""
msgid "Save &template:"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:108
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:110
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:366
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1091
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:92
msgid "Path"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:111
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:113
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365
#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93
@@ -3602,8 +3608,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:823
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1261
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr ""
@@ -3673,7 +3679,7 @@ msgid "Access log:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:662
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:665
msgid "Failed to start content server"
msgstr ""
@@ -4292,7 +4298,7 @@ msgid "Choose formats for "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1015
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1188
msgid "Books"
msgstr ""
@@ -4474,40 +4480,40 @@ msgstr ""
msgid "Password needed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:53
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:52
msgid "Aborting..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:119
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:171
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:178
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:195
msgid "Last downloaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
msgid "Add a custom news source"
msgstr ""
@@ -5279,7 +5285,7 @@ msgid "Send to device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:352
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:304
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
msgid "Save to disk"
msgstr ""
@@ -5304,7 +5310,7 @@ msgid "C"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:358
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:314
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:316
msgid "View"
msgstr ""
@@ -5499,167 +5505,167 @@ 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:63
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:65
msgid "Save single format to disk..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:144
msgid "Search (For Advanced Search click the button to the left)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:159
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:161
msgid "Error communicating with device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178
msgid "&Restore"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:178
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:180
msgid "&Donate to support calibre"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:183
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:185
msgid "&Restart"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224
msgid "
For help see the: User Manual
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:226
msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:247
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249
msgid "Edit metadata individually"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251
msgid "Edit metadata in bulk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:251
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253
msgid "Download metadata and covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:252
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254
msgid "Download only metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:253
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:255
msgid "Download only covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:254
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:256
msgid "Download only social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:257
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:259
msgid "Add books from a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:260
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:261
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263
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:264
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:266
msgid "Add Empty book. (Book entry with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:307
msgid "Save to disk in a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1766
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1939
msgid "Save only %s format to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:315
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:317
msgid "View specific format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321
msgid "Remove selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:321
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323
msgid "Remove files of a specific format from selected books.."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:323
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325
msgid "Remove all formats from selected books, except..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:325
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:327
msgid "Remove covers from selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:359
msgid "Convert individually"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:358
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360
msgid "Bulk convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:361
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363
msgid "Create catalog of books in your calibre library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:379
msgid "Run welcome wizard"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:413
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:415
msgid "Similar books..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:473
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:474
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:475
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:476
msgid "Bad database location"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:476
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:558
msgid "Calibre Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:486
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1922
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:488
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2095
msgid "Choose a location for your ebook library."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:524
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:526
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:706
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:709
msgid "Browse by covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:854
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:857
msgid "Device: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:856
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:859
msgid " detected."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:880
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:885
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:892
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:897
msgid "Device database corrupted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:893
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:898
msgid ""
"\n"
" The database of books on the reader is corrupted. Try the following:\n"
@@ -5670,308 +5676,327 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:955
-msgid "How many empty books?"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:958
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1084
+msgid "Use library only"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:956
-msgid "How many empty books should be added?"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:959
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1085
+msgid "User annotations generated from main library only"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1054
-msgid "Uploading books to device."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1016
-msgid "EPUB Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1017
-msgid "LRF Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1018
-msgid "HTML Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1019
-msgid "LIT Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1020
-msgid "MOBI Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1021
-msgid "Text books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1022
-msgid "PDF Books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1023
-msgid "Comics"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1024
-msgid "Archives"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1028
-msgid "Supported books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1066
-msgid "Failed to read metadata"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1067
-msgid "Failed to read metadata from the following"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1087
-msgid "Cannot delete"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1090
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671
-msgid "No book selected"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1100
-msgid "Choose formats to be deleted"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1118
-msgid "Choose formats not to be deleted"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1156
-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:1183
-msgid "Deleting books from device."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1214
-msgid "Cannot download metadata"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1272
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1309
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1334
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1393
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1511
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:966
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1482
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1566
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1684
msgid "No books selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1230
-msgid "social metadata"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:967
+msgid "No books selected to fetch annotations from"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1232
-msgid "covers"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:989
+msgid "Merging user annotations into database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1232
-msgid "metadata"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1128
+msgid "How many empty books?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234
-msgid "Downloading %s for %d book(s)"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1129
+msgid "How many empty books should be added?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256
-msgid "Failed to download some metadata"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1177
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1227
+msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257
-msgid "Failed to download metadata for the following:"
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1189
+msgid "EPUB Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1190
+msgid "LRF Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1191
+msgid "HTML Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1192
+msgid "LIT Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1193
+msgid "MOBI Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1194
+msgid "Text books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195
+msgid "PDF Books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1196
+msgid "Comics"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197
+msgid "Archives"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1201
+msgid "Supported books"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1239
+msgid "Failed to read metadata"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1240
+msgid "Failed to read metadata from the following"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1260
+msgid "Cannot delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1263
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1828
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1844
+msgid "No book selected"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1273
+msgid "Choose formats to be deleted"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291
+msgid "Choose formats not to be deleted"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1329
+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:1356
+msgid "Deleting books from device."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1387
+msgid "Cannot download metadata"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403
+msgid "social metadata"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405
+msgid "covers"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1405
+msgid "metadata"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407
+msgid "Downloading %s for %d book(s)"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1429
+msgid "Failed to download some metadata"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1430
+msgid "Failed to download metadata for the following:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
msgid "Failed to download metadata:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1271
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1444
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1481
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1333
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1506
msgid "Cannot save to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1336
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1509
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1363
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1536
msgid "Error while saving"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1364
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1537
msgid "There was an error while saving."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1371
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1372
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1544
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1545
msgid "Could not save some books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1373
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1546
msgid "Click the show details button to see which ones."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1394
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1567
msgid "No books selected to generate catalog for"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1411
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1584
msgid "Generating %s catalog..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1417
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1590
msgid ""
"No books to catalog\n"
"Check exclude tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1427
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1600
msgid "Catalog generated."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1430
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1603
msgid "Export Catalog Directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
msgid "Select destination for %s.%s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1618
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1459
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1632
msgid " fetched."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1510
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1683
msgid "Cannot convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1539
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1712
msgid "Starting conversion of %d book(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1655
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1708
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1828
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1670
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1843
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1692
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1865
msgid "Multiple Books Selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1693
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1866
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:1709
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882
msgid "%s has no available formats."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1750
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1923
msgid "Cannot configure"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1751
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1924
msgid "Cannot configure while there are running jobs."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1794
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1967
msgid "No detailed info available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1795
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1968
msgid "No detailed information is available for books on the device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1850
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2023
msgid "Error talking to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1851
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2024
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:1874
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1902
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2047
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2075
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1875
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2048
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:1888
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2061
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1903
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2076
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1931
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2104
msgid "Invalid library location"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1932
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2105
msgid "Could not access %s. Using %s as the library."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1982
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2155
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:2007
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2180
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2010
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2183
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:2014
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2187
msgid "WARNING: Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2066
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2239
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:2085
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2258
msgid "Latest version: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2093
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2266
msgid "Update available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2094
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2267
msgid "%s has been updated to version %s. See the new features. Visit the download page?"
msgstr ""
@@ -6716,7 +6741,7 @@ msgstr ""
msgid "The maximum number of matches to return per OPDS query. This affects Stanza, WordPlayer, etc. integration."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:38
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:41
msgid ""
"The fields to output when cataloging books in the database. Should be a comma-separated list of fields.\n"
"Available fields: %s.\n"
@@ -6724,7 +6749,7 @@ msgid ""
"Applies to: CSV, XML output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:48
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:51
msgid ""
"Output field to sort on.\n"
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
@@ -6732,28 +6757,28 @@ msgid ""
"Applies to: CSV, XML output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:260
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:262
msgid ""
"Title of generated catalog used as title in metadata.\n"
"Default: '%default'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:267
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:269
msgid ""
"Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.\n"
"Default: '%default'None\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:277
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:279
msgid ""
"Regex describing tags to exclude as genres.\n"
"Default: '%default' excludes bracketed tags, e.g. '[]'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:283
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:285
msgid ""
"Comma-separated list of tag words indicating book should be excluded from output. Case-insensitive.\n"
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
@@ -6761,28 +6786,28 @@ msgid ""
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:291
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:293
msgid ""
"Include 'Titles' section in catalog.\n"
"Default: '%default'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:298
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:300
msgid ""
"Include 'Recently Added' section in catalog.\n"
"Default: '%default'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:305
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:307
msgid ""
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
"Default: '%default'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:312
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:314
msgid ""
"Sort titles with leading numbers as text, e.g.,\n"
"'2001: A Space Odyssey' sorts as \n"
@@ -6791,14 +6816,14 @@ msgid ""
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:319
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:321
msgid ""
"Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n"
"Default: '%default'\n"
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:326
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:328
msgid ""
"Tag indicating book has been read.\n"
"Default: '%default'\n"
@@ -6809,64 +6834,64 @@ msgstr ""
msgid "Path to the calibre library. Default is to use the path stored in the settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:204
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:206
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:212
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:214
msgid ""
"The fields to display when listing books in the database. Should be a comma separated list of fields.\n"
"Available fields: %s\n"
"Default: %%default. The special field \"all\" can be used to select all fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:214
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:216
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:216
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:218
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:218
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:220
msgid "Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:220
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:222
msgid "The maximum width of a single line in the output. Defaults to detecting screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:221
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:223
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:222
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:224
msgid "The prefix for all file paths. Default is the absolute path to the library folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:225
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:227
msgid "The format in which to output the data. Available choices: %s. Defaults is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:238
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:240
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:245
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:316
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "The following books were not added as they already exist in the database (see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:339
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:341
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -6874,49 +6899,49 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:348
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "Assume that each directory has only a single logical book and that all files in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:352
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:352
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:354
msgid "Add books to database even if they already exist. Comparison is done based on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:362
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:364
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:378
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:380
msgid ""
"%prog remove ids\n"
"\n"
"Remove the books identified by ids from the database. ids should be a comma separated list of id numbers (you can get id numbers by using the list command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:393
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:395
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:412
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
"Add the ebook in ebook_file to the available formats for the logical book identified by id. You can get id by using the list command. If the format already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:427
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:429
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:434
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:442
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -6924,11 +6949,11 @@ msgid ""
"Remove the format fmt from the logical book identified by id. You can get id by using the list command. fmt should be a file extension like LRF or TXT or EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:457
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:459
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:475
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:477
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -6937,15 +6962,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:483
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:485
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:492
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:494
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:505
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -6956,11 +6981,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:521
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:523
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:543
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -6969,27 +6994,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:549
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:551
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:551
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:553
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:553
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:560
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:562
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:583
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:585
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:644
msgid ""
"\n"
" %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n"
@@ -6999,29 +7024,29 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:658
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:662
msgid ""
"Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:668
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:681
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:699
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:701
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -7157,17 +7182,21 @@ msgstr ""
msgid "Password to access your calibre library. Username is "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/server.py:882
+#: /home/kovid/work/calibre/src/calibre/library/server.py:879
msgid ""
"[options]\n"
"\n"
"Start the calibre content server."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/server.py:884
+#: /home/kovid/work/calibre/src/calibre/library/server.py:881
msgid "Path to the library folder to serve with the content server"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/library/server.py:883
+msgid "Write process PID to the specified file"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/utils/config.py:48
msgid ""
"%sUsage%s: %s\n"