+ if hasattr(self.body, 'xpath'): + for br in self.body.xpath('./br'): + br.tag = 'p' + br.text = u'\u00a0' + + if self.opts.profile.remove_object_tags: + for tag in self.root.xpath('//embed'): + tag.getparent().remove(tag) + for tag in self.root.xpath('//object'): + if tag.get('type', '').lower().strip() in ('image/svg+xml',): + continue + tag.getparent().remove(tag) def save(self): for meta in list(self.root.xpath('//meta')): diff --git a/src/calibre/ebooks/epub/iterator.py b/src/calibre/ebooks/epub/iterator.py index 08c275e81f..5601e9b8de 100644 --- a/src/calibre/ebooks/epub/iterator.py +++ b/src/calibre/ebooks/epub/iterator.py @@ -95,7 +95,7 @@ class EbookIterator(object): for match in re.compile(r'@font-face\s*{([^}]+)}').finditer(css): block = match.group(1) family = re.compile(r'font-family\s*:\s*([^;]+)').search(block) - url = re.compile(r'url\s*\((.+?)\)', re.DOTALL).search(block) + url = re.compile(r'url\s*\([\'"]*(.+?)[\'"]*\)', re.DOTALL).search(block) if url: path = url.group(1).split('/') path = os.path.join(os.path.dirname(item.path), *path) diff --git a/src/calibre/ebooks/html.py b/src/calibre/ebooks/html.py index 634963e775..c853f62171 100644 --- a/src/calibre/ebooks/html.py +++ b/src/calibre/ebooks/html.py @@ -848,7 +848,7 @@ class Processor(Parser): # Workaround for anchor rendering bug in ADE css += '\n\na { color: inherit; text-decoration: inherit; cursor: default; }\na[href] { color: blue; text-decoration: underline; cursor:pointer; }' if self.opts.remove_paragraph_spacing: - css += '\n\np {text-indent: 2em; margin-top:0pt; margin-bottom:0pt; padding:0pt; border:0pt;}' + css += '\n\np {text-indent: 1.5em; margin-top:0pt; margin-bottom:0pt; padding:0pt; border:0pt;}' if self.opts.override_css: css += '\n\n' + self.opts.override_css self.override_css = self.css_parser.parseString(self.preprocess_css(css)) diff --git a/src/calibre/ebooks/metadata/lit.py b/src/calibre/ebooks/metadata/lit.py index 825fe45cf4..c38450c64c 100644 --- a/src/calibre/ebooks/metadata/lit.py +++ b/src/calibre/ebooks/metadata/lit.py @@ -6,33 +6,28 @@ Support for reading the metadata from a LIT file. import sys, cStringIO, os -from calibre import relpath from calibre.ebooks.metadata import MetaInformation -from calibre.ebooks.metadata.opf import OPFReader +from calibre.ebooks.metadata.opf2 import OPF from calibre.ebooks.lit.reader import LitReader def get_metadata(stream): - try: - litfile = LitReader(stream) - src = litfile.meta.encode('utf-8') - mi = OPFReader(cStringIO.StringIO(src), dir=os.getcwd()) - cover_url, cover_item = mi.cover, None - if cover_url: - cover_url = relpath(cover_url, os.getcwd()) - for item in litfile.manifest.values(): - if item.path == cover_url: - cover_item = item.internal - if cover_item is not None: - ext = cover_url.rpartition('.')[-1] - if not ext: - ext = 'jpg' - else: - ext = ext.lower() - cd = litfile.get_file('/data/' + cover_item) - mi.cover_data = (ext, cd) if cd else (None, None) - except: - title = stream.name if hasattr(stream, 'name') and stream.name else 'Unknown' - mi = MetaInformation(title, ['Unknown']) + litfile = LitReader(stream) + src = litfile.meta.encode('utf-8') + opf = OPF(cStringIO.StringIO(src), os.getcwd()) + mi = MetaInformation(opf) + covers = [] + for item in opf.iterguide(): + if 'cover' not in item.get('type', '').lower(): + continue + href = item.get('href', '') + candidates = [href, href.replace('&', '%26')] + for item in litfile.manifest.values(): + if item.path in candidates: + covers.append(item.internal) + break + covers = [litfile.get_file('/data/' + i) for i in covers] + covers.sort(cmp=lambda x, y:cmp(len(x), len(y))) + mi.cover_data = ('jpg', covers[-1]) return mi def main(args=sys.argv): diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py new file mode 100644 index 0000000000..933cbbdaed --- /dev/null +++ b/src/calibre/ebooks/metadata/mobi.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = '2009, Kovid Goyal kovid@kovidgoyal.net' +__docformat__ = 'restructuredtext en' + +''' +''' + +import sys, os + +from calibre.ebooks.mobi.reader import get_metadata + +def main(args=sys.argv): + if len(args) != 2: + print >>sys.stderr, 'Usage: %s file.mobi' % args[0] + return 1 + fname = args[1] + mi = get_metadata(open(fname, 'rb')) + print unicode(mi) + if mi.cover_data[1]: + cover = os.path.abspath( + '.'.join((os.path.splitext(os.path.basename(fname))[0], + mi.cover_data[0].lower()))) + open(cover, 'wb').write(mi.cover_data[1]) + print _('Cover saved to'), cover + return 0 + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index 08ed9aacd1..ed0340e4a8 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -435,7 +435,7 @@ class OPF(object): rating = MetadataField('rating', is_dc=False, formatter=int) - def __init__(self, stream, basedir=os.getcwdu()): + def __init__(self, stream, basedir=os.getcwdu(), unquote_urls=True): if not hasattr(stream, 'read'): stream = open(stream, 'rb') self.basedir = self.base_dir = basedir @@ -446,7 +446,8 @@ class OPF(object): if not self.metadata: raise ValueError('Malformed OPF file: No
%s support is still in beta. If you find bugs, please report them by opening a ticket.'%of).exec_() prefs.set('output_format', of) @@ -296,6 +295,8 @@ class Main(MainWindow, Ui_MainWindow): self.card_view.connect_dirtied_signal(self.upload_booklists) self.show() + if self.system_tray_icon.isVisible() and opts.start_in_tray: + self.hide() self.stack.setCurrentIndex(0) try: db = LibraryDatabase2(self.library_path) @@ -309,18 +310,7 @@ class Main(MainWindow, Ui_MainWindow): self.library_path = dir db = LibraryDatabase2(self.library_path) self.library_view.set_database(db) - if self.olddb is not None: - pd = QProgressDialog('', '', 0, 100, self) - pd.setWindowModality(Qt.ApplicationModal) - pd.setCancelButton(None) - pd.setWindowTitle(_('Migrating database')) - pd.show() - number_of_books = db.migrate_old(self.olddb, pd) - self.olddb.close() - if number_of_books == 0: - os.remove(self.olddb.dbpath) - self.olddb = None - prefs['library_path'] = self.library_path + prefs['library_path'] = self.library_path self.library_view.sortByColumn(*dynamic.get('sort_column', ('timestamp', Qt.DescendingOrder))) if not self.library_view.restore_column_widths(): self.library_view.resizeColumnsToContents() @@ -488,7 +478,7 @@ class Main(MainWindow, Ui_MainWindow): self.raise_() self.activateWindow() elif msg.startswith('refreshdb:'): - self.library_view.model().resort() + self.library_view.model().refresh() self.library_view.model().research() else: print msg @@ -1392,39 +1382,14 @@ class Main(MainWindow, Ui_MainWindow): def initialize_database(self): self.library_path = prefs['library_path'] - self.olddb = None if self.library_path is None: # Need to migrate to new database layout - QMessageBox.information(self, 'Database format changed', - '''\ -
calibre's book storage format has changed. Instead of storing book files in a database, the
-files are now stored in a folder on your filesystem. You will now be asked to choose the folder
-in which you want to store your books files. Any existing books will be automatically migrated.
- ''')
- self.database_path = prefs['database_path']
- if not os.access(os.path.dirname(self.database_path), os.W_OK):
- error_dialog(self, _('Database does not exist'),
- _('The directory in which the database should be: %s no longer exists. Please choose a new database location.')%self.database_path).exec_()
- self.database_path = choose_dir(self, 'database path dialog',
- _('Choose new location for database'))
- if not self.database_path:
- self.database_path = os.path.expanduser('~').decode(sys.getfilesystemencoding())
- if not os.path.exists(self.database_path):
- os.makedirs(self.database_path)
- self.database_path = os.path.join(self.database_path, 'library1.db')
- prefs['database_path'] = self.database_path
- home = os.path.dirname(self.database_path)
- if not os.path.exists(home):
- home = os.getcwd()
dir = unicode(QFileDialog.getExistingDirectory(self,
- _('Choose a location for your ebook library.'), home))
+ _('Choose a location for your ebook library.'), os.getcwd()))
if not dir:
- dir = os.path.dirname(self.database_path)
+ dir = os.path.expanduser('~/Library')
self.library_path = os.path.abspath(dir)
- try:
- self.olddb = LibraryDatabase(self.database_path)
- except:
- traceback.print_exc()
- self.olddb = None
+ if not os.path.exists(self.library_path):
+ os.makedirs(self.library_path)
def read_settings(self):
@@ -1563,6 +1528,8 @@ path_to_ebook to the database.
''')
parser.add_option('--with-library', default=None, action='store',
help=_('Use the library located at the specified path.'))
+ parser.add_option('--start-in-tray', default=False, action='store_true',
+ help=_('Start minimized to system tray.'))
parser.add_option('-v', '--verbose', default=0, action='count',
help=_('Log debugging information to console'))
return parser
diff --git a/src/calibre/gui2/tools.py b/src/calibre/gui2/tools.py
index c00fbfe8e3..aca2da74e2 100644
--- a/src/calibre/gui2/tools.py
+++ b/src/calibre/gui2/tools.py
@@ -12,6 +12,7 @@ from PyQt4.Qt import QDialog
from calibre.utils.config import prefs
from calibre.gui2.dialogs.lrf_single import LRFSingleDialog, LRFBulkDialog
from calibre.gui2.dialogs.epub import Config as EPUBConvert
+from calibre.gui2.dialogs.mobi import Config as MOBIConvert
import calibre.gui2.dialogs.comicconf as ComicConf
from calibre.gui2 import warning_dialog
from calibre.ptempfile import PersistentTemporaryFile
@@ -19,14 +20,20 @@ from calibre.ebooks.lrf import preferred_source_formats as LRF_PREFERRED_SOURCE_
from calibre.ebooks.metadata.opf import OPFCreator
from calibre.ebooks.epub.from_any import SOURCE_FORMATS as EPUB_PREFERRED_SOURCE_FORMATS
-def convert_single_epub(parent, db, comics, others):
+def get_dialog(fmt):
+ return {
+ 'epub':EPUBConvert,
+ 'mobi':MOBIConvert,
+ }[fmt]
+
+def convert_single(fmt, parent, db, comics, others):
changed = False
jobs = []
others_ids = [db.id(row) for row in others]
comics_ids = [db.id(row) for row in comics]
for row, row_id in zip(others, others_ids):
temp_files = []
- d = EPUBConvert(parent, db, row)
+ d = get_dialog(fmt)(parent, db, row)
if d.source_format is not None:
d.exec_()
if d.result() == QDialog.Accepted:
@@ -35,7 +42,7 @@ def convert_single_epub(parent, db, comics, others):
pt = PersistentTemporaryFile('.'+d.source_format.lower())
pt.write(data)
pt.close()
- of = PersistentTemporaryFile('.epub')
+ of = PersistentTemporaryFile('.'+fmt)
of.close()
opts.output = of.name
opts.from_opf = d.opf_file.name
@@ -45,8 +52,8 @@ def convert_single_epub(parent, db, comics, others):
temp_files.append(d.cover_file)
opts.cover = d.cover_file.name
temp_files.extend([d.opf_file, pt, of])
- jobs.append(('any2epub', args, _('Convert book: ')+d.mi.title,
- 'EPUB', row_id, temp_files))
+ jobs.append(('any2'+fmt, args, _('Convert book: ')+d.mi.title,
+ fmt.upper(), row_id, temp_files))
changed = True
for row, row_id in zip(comics, comics_ids):
@@ -61,24 +68,24 @@ def convert_single_epub(parent, db, comics, others):
if defaults is not None:
db.set_conversion_options(db.id(row), 'comic', defaults)
if opts is None: continue
- for fmt in ['cbz', 'cbr']:
+ for _fmt in ['cbz', 'cbr']:
try:
- data = db.format(row, fmt.upper())
+ data = db.format(row, _fmt.upper())
if data is not None:
break
except:
continue
- pt = PersistentTemporaryFile('.'+fmt)
+ pt = PersistentTemporaryFile('.'+_fmt)
pt.write(data)
pt.close()
- of = PersistentTemporaryFile('.epub')
+ of = PersistentTemporaryFile('.'+fmt)
of.close()
opts.output = of.name
opts.verbose = 2
args = [pt.name, opts]
changed = True
- jobs.append(('comic2epub', args, _('Convert comic: ')+opts.title,
- 'EPUB', row_id, [pt, of]))
+ jobs.append(('comic2'+fmt, args, _('Convert comic: ')+opts.title,
+ fmt.upper(), row_id, [pt, of]))
return jobs, changed
@@ -146,9 +153,9 @@ def convert_single_lrf(parent, db, comics, others):
return jobs, changed
-def convert_bulk_epub(parent, db, comics, others):
+def convert_bulk(fmt, parent, db, comics, others):
if others:
- d = EPUBConvert(parent, db)
+ d = get_dialog(fmt)(parent, db)
if d.exec_() != QDialog.Accepted:
others = []
else:
@@ -169,9 +176,9 @@ def convert_bulk_epub(parent, db, comics, others):
row_id = db.id(row)
if row in others:
data = None
- for fmt in EPUB_PREFERRED_SOURCE_FORMATS:
+ for _fmt in EPUB_PREFERRED_SOURCE_FORMATS:
try:
- data = db.format(row, fmt.upper())
+ data = db.format(row, _fmt.upper())
if data is not None:
break
except:
@@ -185,10 +192,10 @@ def convert_bulk_epub(parent, db, comics, others):
opf_file = PersistentTemporaryFile('.opf')
opf.render(opf_file)
opf_file.close()
- pt = PersistentTemporaryFile('.'+fmt.lower())
+ pt = PersistentTemporaryFile('.'+_fmt.lower())
pt.write(data)
pt.close()
- of = PersistentTemporaryFile('.epub')
+ of = PersistentTemporaryFile('.'+fmt)
of.close()
cover = db.cover(row)
cf = None
@@ -203,7 +210,7 @@ def convert_bulk_epub(parent, db, comics, others):
desc = _('Convert book %d of %d (%s)')%(i+1, total, repr(mi.title))
temp_files = [cf] if cf is not None else []
temp_files.extend([opf_file, pt, of])
- jobs.append(('any2epub', args, desc, 'EPUB', row_id, temp_files))
+ jobs.append(('any2'+fmt, args, desc, fmt.upper(), row_id, temp_files))
else:
options = comic_opts.copy()
mi = db.get_metadata(row)
@@ -212,24 +219,24 @@ def convert_bulk_epub(parent, db, comics, others):
if mi.authors:
options.author = ','.join(mi.authors)
data = None
- for fmt in ['cbz', 'cbr']:
+ for _fmt in ['cbz', 'cbr']:
try:
- data = db.format(row, fmt.upper())
+ data = db.format(row, _fmt.upper())
if data is not None:
break
except:
continue
- pt = PersistentTemporaryFile('.'+fmt.lower())
+ pt = PersistentTemporaryFile('.'+_fmt.lower())
pt.write(data)
pt.close()
- of = PersistentTemporaryFile('.epub')
+ of = PersistentTemporaryFile('.'+fmt)
of.close()
setattr(options, 'output', of.name)
options.verbose = 1
args = [pt.name, options]
desc = _('Convert book %d of %d (%s)')%(i+1, total, repr(mi.title))
- jobs.append(('comic2epub', args, desc, 'EPUB', row_id, [pt, of]))
+ jobs.append(('comic2'+fmt, args, desc, fmt.upper(), row_id, [pt, of]))
if bad_rows:
res = []
@@ -345,15 +352,14 @@ def set_conversion_defaults_lrf(comic, parent, db):
else:
LRFSingleDialog(parent, None, None).exec_()
-def set_conversion_defaults_epub(comic, parent, db):
+def _set_conversion_defaults(dialog, comic, parent, db):
if comic:
ComicConf.set_conversion_defaults(parent)
else:
- d = EPUBConvert(parent, db)
+ d = dialog(parent, db)
d.setWindowTitle(_('Set conversion defaults'))
d.exec_()
-
def _fetch_news(data, fmt):
pt = PersistentTemporaryFile(suffix='_feeds2%s.%s'%(fmt.lower(), fmt.lower()))
pt.close()
@@ -385,22 +391,22 @@ def convert_single_ebook(*args):
fmt = prefs['output_format'].lower()
if fmt == 'lrf':
return convert_single_lrf(*args)
- elif fmt == 'epub':
- return convert_single_epub(*args)
+ elif fmt in ('epub', 'mobi'):
+ return convert_single(fmt, *args)
def convert_bulk_ebooks(*args):
fmt = prefs['output_format'].lower()
if fmt == 'lrf':
return convert_bulk_lrf(*args)
- elif fmt == 'epub':
- return convert_bulk_epub(*args)
+ elif fmt in ('epub', 'mobi'):
+ return convert_bulk(fmt, *args)
def set_conversion_defaults(comic, parent, db):
fmt = prefs['output_format'].lower()
if fmt == 'lrf':
return set_conversion_defaults_lrf(comic, parent, db)
- elif fmt == 'epub':
- return set_conversion_defaults_epub(comic, parent, db)
+ elif fmt in ('epub', 'mobi'):
+ return _set_conversion_defaults(get_dialog(fmt), comic, parent, db)
def fetch_news(data):
fmt = prefs['output_format'].lower()
diff --git a/src/calibre/library/__init__.py b/src/calibre/library/__init__.py
index 77d02e1354..6cec55c471 100644
--- a/src/calibre/library/__init__.py
+++ b/src/calibre/library/__init__.py
@@ -29,5 +29,5 @@ def server_config(defaults=None):
c.add_opt('develop', ['--develop'], default=False,
help='Development mode. Server automatically restarts on file changes and serves code files (html, css, js) from the file system instead of calibre\'s resource system.')
c.add_opt('max_cover', ['--max-cover'], default='600x800',
- help=_('The maximum size for displayed covers'))
+ help=_('The maximum size for displayed covers. Default is %default.'))
return c
diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py
index da41dba57f..76f244a456 100644
--- a/src/calibre/library/database2.py
+++ b/src/calibre/library/database2.py
@@ -224,9 +224,17 @@ class ResultCache(SearchQueryParser):
return False
def refresh_ids(self, conn, ids):
+ '''
+ Refresh the data in the cache for books identified by ids.
+ Returns a list of affected rows or None if the rows are filtered.
+ '''
for id in ids:
self._data[id] = conn.get('SELECT * from meta WHERE id=?', (id,))[0]
- return map(self.row, ids)
+ try:
+ return map(self.row, ids)
+ except ValueError:
+ pass
+ return None
def books_added(self, ids, conn):
if not ids:
diff --git a/src/calibre/library/static/gui.js b/src/calibre/library/static/gui.js
index 17f6f7f8fd..edefdbc5ef 100644
--- a/src/calibre/library/static/gui.js
+++ b/src/calibre/library/static/gui.js
@@ -40,7 +40,7 @@ function create_table_headers() {
function format_url(format, id, title) {
- return 'get/'+format.toLowerCase() + '/'+title + '_' + id+'.'+format.toLowerCase();
+ return 'get/'+format.toLowerCase() + '/'+encodeURIComponent(title) + '_' + id+'.'+format.toLowerCase();
}
function render_book(book) {
diff --git a/src/calibre/linux.py b/src/calibre/linux.py
index be5864033a..a05a7ea7a8 100644
--- a/src/calibre/linux.py
+++ b/src/calibre/linux.py
@@ -26,6 +26,7 @@ entry_points = {
'opf-meta = calibre.ebooks.metadata.opf2:main',
'odt-meta = calibre.ebooks.metadata.odt:main',
'epub-meta = calibre.ebooks.metadata.epub:main',
+ 'mobi-meta = calibre.ebooks.metadata.mobi:main',
'txt2lrf = calibre.ebooks.lrf.txt.convert_from:main',
'html2lrf = calibre.ebooks.lrf.html.convert_from:main',
'html2oeb = calibre.ebooks.html:main',
@@ -40,6 +41,7 @@ entry_points = {
'calibre-server = calibre.library.server:main',
'feeds2lrf = calibre.ebooks.lrf.feeds.convert_from:main',
'feeds2epub = calibre.ebooks.epub.from_feeds:main',
+ 'feeds2mobi = calibre.ebooks.mobi.from_feeds:main',
'web2lrf = calibre.ebooks.lrf.web.convert_from:main',
'pdf2lrf = calibre.ebooks.lrf.pdf.convert_from:main',
'mobi2lrf = calibre.ebooks.lrf.mobi.convert_from:main',
@@ -189,6 +191,7 @@ def setup_completion(fatal_errors):
from calibre.ebooks.html import option_parser as html2oeb
from calibre.ebooks.odt.to_oeb import option_parser as odt2oeb
from calibre.ebooks.epub.from_feeds import option_parser as feeds2epub
+ from calibre.ebooks.mobi.from_feeds import option_parser as feeds2mobi
from calibre.ebooks.epub.from_any import option_parser as any2epub
from calibre.ebooks.lit.from_any import option_parser as any2lit
from calibre.ebooks.epub.from_comic import option_parser as comic2epub
@@ -219,7 +222,7 @@ def setup_completion(fatal_errors):
f.write(opts_and_exts('any2epub', any2epub, any_formats))
f.write(opts_and_exts('any2lit', any2lit, any_formats))
f.write(opts_and_exts('any2mobi', any2mobi, any_formats))
- f.write(opts_and_exts('oeb2mobi', oeb2mobi, ['mobi', 'prc']))
+ f.write(opts_and_exts('oeb2mobi', oeb2mobi, ['opf']))
f.write(opts_and_exts('lrf2lrs', lrf2lrsop, ['lrf']))
f.write(opts_and_exts('lrf-meta', metaop, ['lrf']))
f.write(opts_and_exts('rtf-meta', metaop, ['rtf']))
@@ -239,7 +242,8 @@ def setup_completion(fatal_errors):
f.write(opts_and_exts('comic2pdf', comic2epub, ['cbz', 'cbr']))
f.write(opts_and_words('feeds2disk', feeds2disk, feed_titles))
f.write(opts_and_words('feeds2lrf', feeds2lrf, feed_titles))
- f.write(opts_and_words('feeds2lrf', feeds2epub, feed_titles))
+ f.write(opts_and_words('feeds2epub', feeds2epub, feed_titles))
+ f.write(opts_and_words('feeds2mobi', feeds2mobi, feed_titles))
f.write(opts_and_exts('html2epub', html2epub, ['html', 'htm', 'xhtm', 'xhtml', 'opf']))
f.write(opts_and_exts('html2oeb', html2oeb, ['html', 'htm', 'xhtm', 'xhtml']))
f.write(opts_and_exts('odt2oeb', odt2oeb, ['odt']))
@@ -420,7 +424,7 @@ def install_man_pages(fatal_errors):
if prog in ('prs500', 'pdf-meta', 'epub-meta', 'lit-meta',
'markdown-calibre', 'calibre-debug', 'fb2-meta',
'calibre-fontconfig', 'calibre-parallel', 'odt-meta',
- 'rb-meta', 'imp-meta'):
+ 'rb-meta', 'imp-meta', 'mobi-meta'):
continue
help2man = ('help2man', prog, '--name', 'part of %s'%__appname__,
diff --git a/src/calibre/parallel.py b/src/calibre/parallel.py
index 6cbe1c96e4..fa9284ce46 100644
--- a/src/calibre/parallel.py
+++ b/src/calibre/parallel.py
@@ -67,7 +67,15 @@ PARALLEL_FUNCS = {
'comic2epub' :
('calibre.ebooks.epub.from_comic', 'convert', {}, 'notification'),
-
+
+ 'any2mobi' :
+ ('calibre.ebooks.mobi.from_any', 'any2mobi', {}, None),
+
+ 'feeds2mobi' :
+ ('calibre.ebooks.mobi.from_feeds', 'main', {}, 'notification'),
+
+ 'comic2mobi' :
+ ('calibre.ebooks.mobi.from_comic', 'convert', {}, 'notification'),
}
diff --git a/src/calibre/startup.py b/src/calibre/startup.py
index eebec7d784..6cf155792e 100644
--- a/src/calibre/startup.py
+++ b/src/calibre/startup.py
@@ -13,6 +13,10 @@ from gettext import GNUTranslations
import __builtin__
__builtin__.__dict__['_'] = lambda s: s
+# For strings which belong in the translation tables, but which shouldn't be
+# immediately translated to the environment language
+__builtin__.__dict__['__'] = lambda s: s
+
from calibre.constants import iswindows, preferred_encoding, plugins
from calibre.utils.config import prefs
from calibre.translations.msgfmt import make
diff --git a/src/calibre/translations/bg.po b/src/calibre/translations/bg.po
index 45a3feb12b..fda52bd450 100644
--- a/src/calibre/translations/bg.po
+++ b/src/calibre/translations/bg.po
@@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre 0.4.51\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-10 01:19+0000\n"
+"POT-Creation-Date: 2009-01-19 04:38+0000\n"
"PO-Revision-Date: 2008-05-24 06:23+0000\n"
"Last-Translator: Kovid Goyal For help visit %s.kovidgoyal.net The database of books on the reader is corrupted. Try the "
@@ -3798,320 +3862,308 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:601
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-msgid "Stop"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:593
msgid "Adding books recursively..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Added "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Searching..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:620
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:726
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712
msgid ""
" Books with the same title as the following already exist in the database. "
"Add them anyway? Cannot upload books to device there is no more free space available "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:796
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:780
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/main.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:789
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1039
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1048
msgid "No books selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:908
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:896
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:948
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:963
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:951
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:964
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:952
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found: Could not save the following books to disk, because the %s format is not "
"available for them: An invalid database already exists at %s, delete it before trying to move "
"the existing database. Could not convert: %s It is a DRMed book. You must "
"first remove the DRM using 3rd party tools."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1384
-msgid "Database does not exist"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1385
-msgid ""
-"The directory in which the database should be: %s no longer exists. Please "
-"choose a new database location."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1387
-msgid "Choose new location for database"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1467
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1452
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1469
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1454
msgid ""
" is communicating with the device! Copying books to %s Migrating old database to ebook library in %s For help visit %s.kovidgoyal.net The database of books on the reader is corrupted. Try the "
@@ -3861,240 +3925,242 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:601
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-msgid "Stop"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:593
msgid "Adding books recursively..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Added "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Searching..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:620
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:726
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712
msgid ""
" Books with the same title as the following already exist in the database. "
"Add them anyway? Cannot upload books to device there is no more free space available "
msgstr " No puc desar llibres al dispositiu perquè no hi ha espai restant "
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:796
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:780
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/main.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:789
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
msgid "Cannot edit metadata"
msgstr "No puc editar les meta-dades"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1039
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1048
msgid "No books selected"
msgstr "Cap llibre seleccionat"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:908
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:896
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:948
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:963
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:951
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:964
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:952
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found: Could not save the following books to disk, because the %s format is not "
"available for them: An invalid database already exists at %s, delete it before trying to move "
"the existing database. Could not convert: %s It is a DRMed book. You must "
"first remove the DRM using 3rd party tools."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1384
-msgid "Database does not exist"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1385
-msgid ""
-"The directory in which the database should be: %s no longer exists. Please "
-"choose a new database location."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1387
-msgid "Choose new location for database"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1467
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1452
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1469
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1454
msgid ""
" is communicating with the device! Copying books to %s Migrating old database to ebook library in %s For help visit %s.kovidgoyal.net The database of books on the reader is corrupted. Try the "
@@ -3868,320 +3932,308 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:601
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-msgid "Stop"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:593
msgid "Adding books recursively..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Added "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598
msgid "Searching..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:620
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:726
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712
msgid ""
" Books with the same title as the following already exist in the database. "
"Add them anyway? Cannot upload books to device there is no more free space available "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:796
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:780
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/main.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:789
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
msgid "Cannot edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1039
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1048
msgid "No books selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:908
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:896
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:948
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:963
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:951
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:964
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:952
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found: Could not save the following books to disk, because the %s format is not "
"available for them: An invalid database already exists at %s, delete it before trying to move "
"the existing database. Could not convert: %s It is a DRMed book. You must "
"first remove the DRM using 3rd party tools."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1384
-msgid "Database does not exist"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1385
-msgid ""
-"The directory in which the database should be: %s no longer exists. Please "
-"choose a new database location."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1387
-msgid "Choose new location for database"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1467
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1452
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1469
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1454
msgid ""
" is communicating with the device! Copying books to %s Migrating old database to ebook library in %s For help visit %s.kovidgoyal.net Hilfe gibt es online bei %s.kovidgoyal.net
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:151
msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:623
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:729
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:715
msgid "Duplicates found!"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:680
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:664
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:653
msgid "Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:665
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:654
msgid "EPUB Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:666
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:655
msgid "LRF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:667
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
msgid "HTML Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:668
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:657
msgid "LIT Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:658
msgid "MOBI Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:659
msgid "Text books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:671
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:660
msgid "PDF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:672
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:661
msgid "Comics"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:673
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:662
msgid "Archives"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:692
-msgid "Reading metadata..."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:690
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
msgid "Adding books..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:716
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
+msgid "Reading metadata..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:703
msgid "Read metadata from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:706
msgid "Adding books to database..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:763
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:747
msgid "No space on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:748
msgid ""
"
%s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
msgid "Cannot save to disk"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:973
+msgid "Saving to disk..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:978
+msgid "Saved"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:984
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:991
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:998
msgid ""
""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:995
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1002
msgid "Could not save some ebooks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1015
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1024
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1029
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1038
msgid " fetched."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
msgid "No book selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1195
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1205
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1155
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1200
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1165
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1210
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1196
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1206
msgid "%s has no available formats."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure while there are running jobs."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1252
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1262
msgid "Copying database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
msgid "Copying library to "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1274
msgid "Invalid database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1265
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1275
msgid ""
"
Error: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1271
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1281
msgid "Could not move database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1301
msgid "No detailed info available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1292
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1302
msgid "No detailed information is available for books on the device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1335
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1345
msgid "Error talking to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1336
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1346
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1349
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1364
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1368
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1374
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1378
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1360
msgid ""
"
\n"
" 'Quitting may cause corruption on the device.
\n"
" 'Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1473
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1458
msgid "WARNING: Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1505
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1492
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1522
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1509
msgid ""
"Latest version: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid ""
"%s has been updated to version %s. See the new features. "
"Visit the download page?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid "Update available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1542
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1529
msgid "Use the library located at the specified path."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1544
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531
msgid "Log debugging information to console"
msgstr ""
@@ -4276,11 +4328,11 @@ msgstr ""
msgid "Click to browse books by tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Publishers"
msgstr ""
@@ -4842,20 +4894,20 @@ msgid ""
"For help on an individual command: %%prog command --help\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1159
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1171
msgid "
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:151
msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:623
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:729
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:715
msgid "Duplicates found!"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:680
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:664
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:653
msgid "Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:665
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:654
msgid "EPUB Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:666
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:655
msgid "LRF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:667
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
msgid "HTML Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:668
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:657
msgid "LIT Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:658
msgid "MOBI Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:659
msgid "Text books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:671
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:660
msgid "PDF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:672
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:661
msgid "Comics"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:673
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:662
msgid "Archives"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:692
-msgid "Reading metadata..."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:690
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
msgid "Adding books..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:716
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
+msgid "Reading metadata..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:703
msgid "Read metadata from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:706
msgid "Adding books to database..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:763
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:747
msgid "No space on device"
msgstr "Sense espai al dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:748
msgid ""
"
%s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
msgid "Cannot save to disk"
msgstr "No puc desar al disc"
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:973
+msgid "Saving to disk..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:978
+msgid "Saved"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:984
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:991
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:998
msgid ""
""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:995
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1002
msgid "Could not save some ebooks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1015
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1024
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1029
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1038
msgid " fetched."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
msgid "No book selected"
msgstr "Cap llibre seleccionat"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1195
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1205
msgid "Cannot view"
msgstr "No puc mostrar-lo"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1155
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1200
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1165
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1210
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1196
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1206
msgid "%s has no available formats."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure"
msgstr "No puc configurar-lo"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure while there are running jobs."
msgstr "No puc configurar-lo amb treballs processant-se"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1252
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1262
msgid "Copying database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
msgid "Copying library to "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1274
msgid "Invalid database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1265
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1275
msgid ""
"
Error: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1271
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1281
msgid "Could not move database"
msgstr "No puc moure la base de dades"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1301
msgid "No detailed info available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1292
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1302
msgid "No detailed information is available for books on the device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1335
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1345
msgid "Error talking to device"
msgstr "Error comunicant amb el dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1336
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1346
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
@@ -4102,81 +4168,67 @@ msgstr ""
"Hi ha hagut un error de comunicació amb el dispositiu. Lleve, torne a "
"connectar el dispositiu i torne a iniciar el programa"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1349
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1364
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1368
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1374
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1378
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1360
msgid ""
"
\n"
" 'Quitting may cause corruption on the device.
\n"
" 'Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1473
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1458
msgid "WARNING: Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1505
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1492
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1522
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1509
msgid ""
"Latest version: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid ""
"%s has been updated to version %s. See the new features. "
"Visit the download page?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid "Update available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1542
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1529
msgid "Use the library located at the specified path."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1544
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531
msgid "Log debugging information to console"
msgstr ""
@@ -4345,11 +4397,11 @@ msgstr ""
msgid "Click to browse books by tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Publishers"
msgstr ""
@@ -4911,20 +4963,20 @@ msgid ""
"For help on an individual command: %%prog command --help\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1159
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1171
msgid "
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:151
msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:623
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:729
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:715
msgid "Duplicates found!"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:680
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:664
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:653
msgid "Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:665
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:654
msgid "EPUB Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:666
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:655
msgid "LRF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:667
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:656
msgid "HTML Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:668
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:657
msgid "LIT Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:658
msgid "MOBI Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:659
msgid "Text books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:671
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:660
msgid "PDF Books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:672
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:661
msgid "Comics"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:673
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:662
msgid "Archives"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:692
-msgid "Reading metadata..."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:690
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
msgid "Adding books..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:716
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:678
+msgid "Reading metadata..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:703
msgid "Read metadata from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:706
msgid "Adding books to database..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:763
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:747
msgid "No space on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:764
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:748
msgid ""
"
%s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
msgid "Cannot save to disk"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:973
+msgid "Saving to disk..."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:978
+msgid "Saved"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:984
msgid "Choose destination directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:991
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:998
msgid ""
""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:995
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1002
msgid "Could not save some ebooks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1015
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1024
msgid "Fetching news from "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1029
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1038
msgid " fetched."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
msgid "No book selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1149
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1179
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1195
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1159
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1205
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1155
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1200
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1165
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1210
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1167
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1177
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1196
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1206
msgid "%s has no available formats."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1234
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1244
msgid "Cannot configure while there are running jobs."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1252
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1262
msgid "Copying database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1254
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
msgid "Copying library to "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1264
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1274
msgid "Invalid database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1265
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1275
msgid ""
"
Error: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1271
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1281
msgid "Could not move database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1301
msgid "No detailed info available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1292
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1302
msgid "No detailed information is available for books on the device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1335
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1345
msgid "Error talking to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1336
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1346
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1349
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1364
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1368
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1374
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1378
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1360
msgid ""
"
\n"
" 'Quitting may cause corruption on the device.
\n"
" 'Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1473
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1458
msgid "WARNING: Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1505
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1492
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1522
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1509
msgid ""
"Latest version: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid ""
"%s has been updated to version %s. See the new features. "
"Visit the download page?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid "Update available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1542
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1529
msgid "Use the library located at the specified path."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1544
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531
msgid "Log debugging information to console"
msgstr ""
@@ -4346,11 +4398,11 @@ msgstr ""
msgid "Click to browse books by tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Publishers"
msgstr ""
@@ -4912,20 +4964,20 @@ msgid ""
"For help on an individual command: %%prog command --help\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1159
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1171
msgid "
"
@@ -4177,42 +4249,42 @@ msgstr ""
"
"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:150
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:151
msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s
%%(device)s
The database of books on the reader is corrupted. Try the " @@ -4336,25 +4404,20 @@ msgstr "" " \n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:601 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:689 -msgid "Stop" -msgstr "Stop" - -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:593 msgid "Adding books recursively..." msgstr "Füge Bücher rekursiv hinzu..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598 msgid "Added " msgstr "Hinzugefügt " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:598 msgid "Searching..." msgstr "Suche..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:620 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:712 msgid "" "
Books with the same title as the following already exist in the database. " "Add them anyway?
Es existieren bereits Bücher mit dem selben Titel in der Datenbank. " "Sollen die folgenden Bücher trotzdem hinzugefügt werden?
Cannot upload books to device there is no more free space available " msgstr "" "
Es können keine Bücher mehr auf das Gerät geladen werden, da der "
"Gerätespeicher voll ist "
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:796
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:780
msgid ""
"The selected books will be permanently deleted and the files removed "
"from your computer. Are you sure?"
@@ -4448,35 +4510,35 @@ msgstr ""
"Die gewählten Bücher werden dauerhaft gelöscht und die Dateien vom "
"Computer entfernt. Sicher?"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:789
msgid "Deleting books from device."
msgstr "Lösche Bücher vom Gerät."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
msgid "Cannot edit metadata"
msgstr "Kann Metadaten nicht bearbeiten"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:836
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:861
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:980
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1039
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:845
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:969
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1048
msgid "No books selected"
msgstr "Keine Bücher ausgewählt"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:908
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:896
msgid "Sending news to device."
msgstr "Sende Nachrichten an das Gerät."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:948
msgid "Sending books to device."
msgstr "Sende Bücher an das Gerät."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:963
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:951
msgid "No suitable formats"
msgstr "Keine geeigneten Formate"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:964
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:952
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found:
Could not save the following books to disk, because the %s format is not " "available for them:
Die folgenden Bücher konnten nicht auf die Festplatte gespeichert werden, " "da das %s Format für sie nicht verfügbar ist:
An invalid database already exists at %s, delete it before trying to move "
"the existing database.
Error: %s"
@@ -4565,24 +4635,24 @@ msgstr ""
"
Es existiert bereits eine ungültige Datenbank in %s, bitte löschen Sie "
"diese, bevor sie die bestehende Datenbank verschieben.
Fehler: %s"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1271
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1281
msgid "Could not move database"
msgstr "Konnte Datenbank nicht verschieben"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1301
msgid "No detailed info available"
msgstr "Es ist keine weitere Information verfügbar"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1292
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1302
msgid "No detailed information is available for books on the device."
msgstr ""
"Es sind keine weitere Informationen über Bücher auf dem Gerät verfügbar"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1335
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1345
msgid "Error talking to device"
msgstr "Fehler in der Kommunikation zum Gerät"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1336
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1346
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
@@ -4590,13 +4660,13 @@ msgstr ""
"Es trat ein Fehler in der Kommunikation mit dem Gerät auf. Bitte entfernen "
"und schließen Sie das Gerät wieder an und - oder starten Sie neu."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1349
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1364
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1368
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1359
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1374
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1378
msgid "Conversion Error"
msgstr "Konvertierungsfehler"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1350
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1360
msgid ""
"
Could not convert: %s
It is a DRMed book. You must "
"first remove the DRM using 3rd party tools."
@@ -4605,23 +4675,7 @@ msgstr ""
"href=\"%s\">DRM geschützt. Sie müssen zunächst das DRM mit einem anderen "
"Programm entfernen."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1384
-msgid "Database does not exist"
-msgstr "Datenbank existiert nicht"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1385
-msgid ""
-"The directory in which the database should be: %s no longer exists. Please "
-"choose a new database location."
-msgstr ""
-"Das Verzeichnis, in dem die Datenbank sein sollte: %s existiert nicht mehr. "
-"Bitte wählen Sie einen neuen Ort für die Datenbank aus."
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1387
-msgid "Choose new location for database"
-msgstr "Wählen Sie einen neuen Speicherort für die Datenbank"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1445
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1430
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."
@@ -4630,12 +4684,12 @@ msgstr ""
"Falls Sie es nützlich finden, sollten Sie eine Spende zur Unterstützung "
"seiner Entwicklung in Betracht ziehen."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1467
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1452
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
"Es bestehen aktive Aufträge. Sind Sie sicher, dass sie es beenden wollen?"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1469
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1454
msgid ""
" is communicating with the device!
\n"
" 'Quitting may cause corruption on the device.
\n"
@@ -4645,11 +4699,11 @@ msgstr ""
" 'Das Beenden könnte das Gerät beschädigen.
\n"
" 'Wirklich beenden?"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1473
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1458
msgid "WARNING: Active jobs"
msgstr "WARNUNG: Aktive Aufträge"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1505
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1492
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -4657,7 +4711,7 @@ msgstr ""
"wird im System Tray weiter laufen. Zum Schließen wählen Sie Beenden "
"im Kontextmenü des System Tray."
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1522
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1509
msgid ""
"Latest version: %s"
@@ -4665,7 +4719,7 @@ msgstr ""
"Letzte Version: %s"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid ""
"%s has been updated to version %s. See the new features. "
@@ -4675,15 +4729,15 @@ msgstr ""
"href=\"http://calibre.kovidgoyal.net/wiki/Changelog\">neuen Features an. "
"Möchten Sie die Download Seite besuchen?"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1527
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1514
msgid "Update available"
msgstr "Neue Version verfügbar"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1542
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1529
msgid "Use the library located at the specified path."
msgstr "Die im angegebenen Pfad sich befindende Bibliothek verwenden"
-#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1544
+#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1531
msgid "Log debugging information to console"
msgstr "Informationen zur Fehlersuche in Konsole aufzeichnen"
@@ -4858,11 +4912,11 @@ msgstr ""
msgid "Click to browse books by tags"
msgstr "Klicken Sie, um die Bücher anhand von Etiketten zu durchsuchen"
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Authors"
msgstr "Autoren"
-#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/tags.py:50
msgid "Publishers"
msgstr "Herausgeber"
@@ -5536,20 +5590,20 @@ msgstr ""
"\n"
"Sie erhalten Hilfe zu einem bestimmten Befehl mit: %%prog command --help\n"
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1159
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1171
msgid "
Copying books to %s
Kopiere Bücher nach %s
Migrating old database to ebook library in %s
Migriere alte Datenbank zu eBook Bibliothek in %s