diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index 25ffe32d87..e0367515bc 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -474,7 +474,7 @@ from calibre.devices.binatone.driver import README from calibre.devices.hanvon.driver import N516, EB511, ALEX, AZBOOKA, THEBOOK from calibre.devices.edge.driver import EDGE from calibre.devices.teclast.driver import TECLAST_K3, NEWSMY, IPAPYRUS, \ - SOVOS, PICO, SUNSTECH_EB700 + SOVOS, PICO, SUNSTECH_EB700, ARCHOS7O from calibre.devices.sne.driver import SNE from calibre.devices.misc import PALMPRE, AVANT, SWEEX, PDNOVEL, KOGAN, \ GEMEI, VELOCITYMICRO, PDNOVEL_KOBO, Q600, LUMIREAD, ALURATEK_COLOR, \ @@ -581,7 +581,7 @@ plugins += [ ELONEX, TECLAST_K3, NEWSMY, - PICO, SUNSTECH_EB700, + PICO, SUNSTECH_EB700, ARCHOS7O, IPAPYRUS, SOVOS, EDGE, diff --git a/src/calibre/devices/eb600/driver.py b/src/calibre/devices/eb600/driver.py index 1f723ce46a..e38f72aea5 100644 --- a/src/calibre/devices/eb600/driver.py +++ b/src/calibre/devices/eb600/driver.py @@ -183,9 +183,8 @@ class BOOQ(EB600): FORMATS = ['epub', 'mobi', 'prc', 'fb2', 'pdf', 'doc', 'rtf', 'txt', 'html'] - VENDOR_NAME = 'NETRONIX' - WINDOWS_MAIN_MEM = 'EB600' - WINDOWS_CARD_A_MEM = 'EB600' + VENDOR_NAME = ['NETRONIX', '36LBOOKS'] + WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['EB600', 'ELEQTOR'] class MENTOR(EB600): diff --git a/src/calibre/devices/teclast/driver.py b/src/calibre/devices/teclast/driver.py index f406448ad2..078e59da5b 100644 --- a/src/calibre/devices/teclast/driver.py +++ b/src/calibre/devices/teclast/driver.py @@ -41,6 +41,16 @@ class NEWSMY(TECLAST_K3): WINDOWS_MAIN_MEM = 'NEWSMY' WINDOWS_CARD_A_MEM = 'USBDISK____SD' +class ARCHOS7O(TECLAST_K3): + name = 'Archos 7O device interface' + gui_name = 'Archos' + description = _('Communicate with the Archos reader.') + + FORMATS = ['epub', 'mobi', 'fb2', 'rtf', 'ap', 'html', 'pdf', 'txt'] + + VENDOR_NAME = 'ARCHOS' + WINDOWS_MAIN_MEM = 'USB-MSC' + class PICO(NEWSMY): name = 'Pico device interface' gui_name = 'Pico' diff --git a/src/calibre/ebooks/__init__.py b/src/calibre/ebooks/__init__.py index da4d1178eb..4dc97f43ed 100644 --- a/src/calibre/ebooks/__init__.py +++ b/src/calibre/ebooks/__init__.py @@ -113,7 +113,7 @@ def render_html_svg_workaround(path_to_html, log, width=590, height=750): def render_html(path_to_html, width=590, height=750, as_xhtml=True): from PyQt4.QtWebKit import QWebPage - from PyQt4.Qt import QEventLoop, QPalette, Qt, SIGNAL, QUrl, QSize + from PyQt4.Qt import QEventLoop, QPalette, Qt, QUrl, QSize from calibre.gui2 import is_ok_to_use_qt if not is_ok_to_use_qt(): return None path_to_html = os.path.abspath(path_to_html) @@ -127,8 +127,7 @@ def render_html(path_to_html, width=590, height=750, as_xhtml=True): page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) loop = QEventLoop() renderer = HTMLRenderer(page, loop) - page.connect(page, SIGNAL('loadFinished(bool)'), renderer, - Qt.QueuedConnection) + page.loadFinished.connect(renderer, type=Qt.QueuedConnection) if as_xhtml: page.mainFrame().setContent(open(path_to_html, 'rb').read(), 'application/xhtml+xml', QUrl.fromLocalFile(path_to_html)) @@ -136,6 +135,7 @@ def render_html(path_to_html, width=590, height=750, as_xhtml=True): page.mainFrame().load(QUrl.fromLocalFile(path_to_html)) loop.exec_() renderer.loop = renderer.page = None + page.loadFinished.disconnect() del page del loop if isinstance(renderer.exception, ParserError) and as_xhtml: diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index dedfe963f6..6af058da7b 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -398,7 +398,7 @@ class FB2MLizer(object): tags += p_tag fb2_out.append('' % self.image_hrefs[page.abshref(elem_tree.attrib['src'])]) if tag in ('br', 'hr') or ems: - if not ems: + if ems < 1: multiplier = 1 else: multiplier = ems diff --git a/src/calibre/ebooks/metadata/epub.py b/src/calibre/ebooks/metadata/epub.py index e1712f3668..f19b89eb88 100644 --- a/src/calibre/ebooks/metadata/epub.py +++ b/src/calibre/ebooks/metadata/epub.py @@ -14,7 +14,8 @@ from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.metadata.opf2 import OPF from calibre.ptempfile import TemporaryDirectory, PersistentTemporaryFile -from calibre import CurrentDir +from calibre import CurrentDir, walk +from calibre.constants import isosx class EPubException(Exception): pass @@ -159,6 +160,13 @@ def get_cover(opf, opf_path, stream, reader=None): with TemporaryDirectory('_epub_meta') as tdir: with CurrentDir(tdir): zf.extractall() + if isosx: + # On OS X trying to render an HTML cover which uses embedded + # fonts more than once in the same process causes a crash in Qt + # so be safe and remove the fonts. + for f in walk('.'): + if os.path.splitext(f)[1].lower() in ('.ttf', '.otf'): + os.remove(f) opf_path = opf_path.replace('/', os.sep) cpage = os.path.join(tdir, os.path.dirname(opf_path), cpage) if not os.path.exists(cpage): diff --git a/src/calibre/ebooks/pml/pmlconverter.py b/src/calibre/ebooks/pml/pmlconverter.py index 20d8c7186b..7d1e74e3f4 100644 --- a/src/calibre/ebooks/pml/pmlconverter.py +++ b/src/calibre/ebooks/pml/pmlconverter.py @@ -603,7 +603,7 @@ class PML_HTMLizer(object): if empty: empty_count += 1 - if empty_count == 3: + if empty_count == 2: output.append('

 

') else: empty_count = 0 diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py index ceb7f36124..41c38283ab 100644 --- a/src/calibre/ebooks/pml/pmlml.py +++ b/src/calibre/ebooks/pml/pmlml.py @@ -10,6 +10,8 @@ Transform OEB content into PML markup import re +from lxml import etree + from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.pdb.ereader import image_name @@ -64,8 +66,8 @@ SEPARATE_TAGS = [ 'h4', 'h5', 'h6', - 'p', - 'div', + 'hr', + 'img', 'li', 'tr', ] @@ -122,9 +124,12 @@ class PMLMLizer(object): text = [u''] for item in self.oeb_book.spine: self.log.debug('Converting %s to PML markup...' % item.href) - stylizer = Stylizer(item.data, item.href, self.oeb_book, self.opts, self.opts.output_profile) + content = unicode(etree.tostring(item.data, encoding=unicode)) + content = self.prepare_text(content) + content = etree.fromstring(content) + stylizer = Stylizer(content, item.href, self.oeb_book, self.opts, self.opts.output_profile) text.append(self.add_page_anchor(item)) - text += self.dump_text(item.data.find(XHTML('body')), stylizer, item) + text += self.dump_text(content.find(XHTML('body')), stylizer, item) return ''.join(text) def add_page_anchor(self, page): @@ -147,6 +152,21 @@ class PMLMLizer(object): text = text.replace('\r', ' ') return text + def prepare_string_for_pml(self, text): + text = self.remove_newlines(text) + # Replace \ with \\ so \ in the text is not interperted as + # a pml code. + text = text.replace('\\', '\\\\') + # Replace sequences of \\c \\c with pml sequences denoting + # empty lines. + text = text.replace('\\\\c \\\\c', '\\c \n\\c\n') + return text + + def prepare_text(self, text): + # Replace empty paragraphs with \c pml codes used to denote emtpy lines. + text = re.sub(ur'(?<=

)\s*]*>[\xc2\xa0\s]*

', '\\c\n\\c', text) + return text + def clean_text(self, text): # Remove excessive \p tags text = re.sub(r'\\p\s*\\p', '', text) @@ -172,15 +192,18 @@ class PMLMLizer(object): # Remove excessive spaces text = re.sub('[ ]{2,}', ' ', text) + # Condense excessive \c empty line sequences. + text = re.sub('(\\c\s*\\c\s*){2,}', '\\c \n\\c\n', text) + # Remove excessive newlines. text = re.sub('\n[ ]+\n', '\n\n', text) if self.opts.remove_paragraph_spacing: text = re.sub('\n{2,}', '\n', text) - text = re.sub('(?imu)^(?P.+)$', lambda mo: mo.group('text') if re.search(r'\\[XxCm]', mo.group('text')) else ' %s' % mo.group('text'), text) + # Only indent lines that don't have special formatting + text = re.sub('(?imu)^(?P.+)$', lambda mo: mo.group('text') if re.search(r'\\[XxCmrctTp]', mo.group('text')) else ' %s' % mo.group('text'), text) else: text = re.sub('\n{3,}', '\n\n', text) - return text def dump_text(self, elem, stylizer, page, tag_stack=[]): @@ -203,7 +226,7 @@ class PMLMLizer(object): tags.append('block') # Process tags that need special processing and that do not have inner - # text. Usually these require an argument + # text. Usually these require an argument. if tag in IMAGE_TAGS: if elem.attrib.get('src', None): if page.abshref(elem.attrib['src']) not in self.image_hrefs.keys(): @@ -212,7 +235,7 @@ class PMLMLizer(object): else: self.image_hrefs[page.abshref(elem.attrib['src'])] = image_name('%s.png' % len(self.image_hrefs.keys()), self.image_hrefs.keys()).strip('\x00') text.append('\\m="%s"' % self.image_hrefs[page.abshref(elem.attrib['src'])]) - if tag == 'hr': + elif tag == 'hr': w = '\\w' width = elem.get('width') if width: @@ -222,6 +245,10 @@ class PMLMLizer(object): else: w += '="50%"' text.append(w) + elif tag == 'br': + text.append('\n\\c \n\\c\n') + + # TOC markers. toc_name = elem.attrib.get('name', None) toc_id = elem.attrib.get('id', None) if (toc_id or toc_name) and tag not in ('h1', 'h2','h3','h4','h5','h6',): @@ -234,9 +261,10 @@ class PMLMLizer(object): # Process style information that needs holds a single tag # Commented out because every page in an OEB book starts with this style - #if style['page-break-before'] == 'always': - # text.append('\\p') + if style['page-break-before'] == 'always': + text.append('\\p') + # Process basic PML tags. pml_tag = TAG_MAP.get(tag, None) if pml_tag and pml_tag not in tag_stack+tags: text.append('\\%s' % pml_tag) @@ -270,34 +298,60 @@ class PMLMLizer(object): if style_tag and style_tag not in tag_stack+tags: text.append('\\%s' % style_tag) tags.append(style_tag) - # margin - # Proccess tags that contain text. + # margin left + try: + mms = int(float(style['margin-left']) * 100 / style.height) + if mms: + text.append('\\T="%s%%"' % mms) + except: + pass + + # Soft scene breaks. + try: + ems = int(round((float(style.marginTop) / style.fontSize) - 1)) + if ems >= 1: + text.append('\n\\c \n\\c\n') + except: + pass + + # Proccess text within this tag. if hasattr(elem, 'text') and elem.text: - text.append(self.remove_newlines(elem.text)) + text.append(self.prepare_string_for_pml(elem.text)) + # Process inner tags for item in elem: text += self.dump_text(item, stylizer, page, tag_stack+tags) + # Close opened tags. tags.reverse() text += self.close_tags(tags) - if tag in SEPARATE_TAGS: - text.append('\n\n') + #if tag in SEPARATE_TAGS: + # text.append('\n\n') - #if style['page-break-after'] == 'always': - # text.append('\\p') + if style['page-break-after'] == 'always': + text.append('\\p') + # Process text after this tag but not within another. if hasattr(elem, 'tail') and elem.tail: - text.append(self.remove_newlines(elem.tail)) + text.append(self.prepare_string_for_pml(elem.tail)) return text def close_tags(self, tags): text = [] for tag in tags: + # block isn't a real tag we just use + # it to determine when we need to start + # a new text block. if tag == 'block': text.append('\n\n') else: - text.append('\\%s' % tag) + # closing \c and \r need to be placed + # on the next line per PML spec. + if tag in ('c', 'r'): + text.append('\n\\%s' % tag) + else: + text.append('\\%s' % tag) return text diff --git a/src/calibre/ebooks/txt/txtml.py b/src/calibre/ebooks/txt/txtml.py index 6654e70475..c2ee3f37c5 100644 --- a/src/calibre/ebooks/txt/txtml.py +++ b/src/calibre/ebooks/txt/txtml.py @@ -226,7 +226,7 @@ class TXTMLizer(object): # Soft scene breaks. try: ems = int(round((float(style.marginTop) / style.fontSize) - 1)) - if ems: + if ems >= 1: text.append('\n' * ems) except: pass diff --git a/src/calibre/gui2/filename_pattern.ui b/src/calibre/gui2/filename_pattern.ui index e2367c8ceb..68b3108e06 100644 --- a/src/calibre/gui2/filename_pattern.ui +++ b/src/calibre/gui2/filename_pattern.ui @@ -17,13 +17,10 @@ - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Candara'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set a regular expression pattern to use when trying to guess ebook metadata from filenames. </p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A <a href="http://docs.python.org/lib/re-syntax.html"><span style=" text-decoration: underline; color:#0000ff;">reference</span></a> on the syntax of regular expressions is available.</p> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Use the <span style=" font-weight:600;">Test</span> functionality below to test your regular expression on a few sample filenames. The group names for the various metadata entries are documented in tooltips.</p></body></html> + <div style="font-size:10pt;"> +<p>Set a regular expression pattern to use when trying to guess ebook metadata from filenames. </p> +<p>A <a href="http://calibre-ebook.com/user_manual/regexp.html">tutorial</a> on using regular expressions is available.</p> +<p>Use the <b>Test</b> functionality below to test your regular expression on a few sample filenames (remember to include the file extension). The group names for the various metadata entries are documented in tooltips.</p></div> Qt::RichText @@ -104,8 +101,8 @@ p, li { white-space: pre-wrap; } 0 0 - 277 - 276 + 305 + 263 diff --git a/src/calibre/gui2/preferences/adding.py b/src/calibre/gui2/preferences/adding.py index 7a27ed8f2d..e919d53b64 100644 --- a/src/calibre/gui2/preferences/adding.py +++ b/src/calibre/gui2/preferences/adding.py @@ -7,7 +7,8 @@ __docformat__ = 'restructuredtext en' -from calibre.gui2.preferences import ConfigWidgetBase, test_widget +from calibre.gui2.preferences import ConfigWidgetBase, test_widget, \ + CommaSeparatedList from calibre.gui2.preferences.adding_ui import Ui_Form from calibre.utils.config import prefs from calibre.gui2.widgets import FilenamePattern @@ -22,6 +23,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): r('read_file_metadata', prefs) r('swap_author_names', prefs) r('add_formats_to_existing', prefs) + r('new_book_tags', prefs, setting=CommaSeparatedList) self.filename_pattern = FilenamePattern(self) self.metadata_box.layout().insertWidget(0, self.filename_pattern) diff --git a/src/calibre/gui2/preferences/adding.ui b/src/calibre/gui2/preferences/adding.ui index 062c45e1ad..75e6c466f0 100644 --- a/src/calibre/gui2/preferences/adding.ui +++ b/src/calibre/gui2/preferences/adding.ui @@ -6,7 +6,7 @@ 0 0 - 1010 + 750 339 @@ -27,10 +27,37 @@ - Read metadata from &file contents rather than file name + Read &metadata from &file contents rather than file name + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Swap the firstname and lastname of the author. This affects only metadata read from file names. + + + &Swap author firstname and lastname + + + + + @@ -44,7 +71,24 @@ Title match ignores leading indefinite articles ("the", "a", - + + + + &Tags to apply when adding a book: + + + opt_new_book_tags + + + + + + + A comma-separated list of tags that will be applied to books added to the library + + + + &Configure metadata from file name @@ -66,16 +110,6 @@ Title match ignores leading indefinite articles ("the", "a", - - - - Swap the firstname and lastname of the author. This affects only metadata read from file names. - - - &Swap author firstname and lastname - - - diff --git a/src/calibre/gui2/preferences/behavior.py b/src/calibre/gui2/preferences/behavior.py index 169a2b76fe..aeee6e5064 100644 --- a/src/calibre/gui2/preferences/behavior.py +++ b/src/calibre/gui2/preferences/behavior.py @@ -9,8 +9,7 @@ import re from PyQt4.Qt import Qt, QVariant, QListWidgetItem -from calibre.gui2.preferences import ConfigWidgetBase, test_widget, \ - CommaSeparatedList +from calibre.gui2.preferences import ConfigWidgetBase, test_widget from calibre.gui2.preferences.behavior_ui import Ui_Form from calibre.gui2 import config, info_dialog, dynamic from calibre.utils.config import prefs @@ -49,7 +48,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): restrictions = sorted(saved_searches().names(), key=sort_key) choices = [('', '')] + [(x, x) for x in restrictions] r('gui_restriction', db.prefs, choices=choices) - r('new_book_tags', prefs, setting=CommaSeparatedList) self.reset_confirmation_button.clicked.connect(self.reset_confirmation_dialogs) self.input_up_button.clicked.connect(self.up_input) diff --git a/src/calibre/gui2/preferences/behavior.ui b/src/calibre/gui2/preferences/behavior.ui index 8332212235..0f35d28cd5 100644 --- a/src/calibre/gui2/preferences/behavior.ui +++ b/src/calibre/gui2/preferences/behavior.ui @@ -164,20 +164,6 @@ - - - - A comma-separated list of tags that will be applied to books added to the library - - - - - - - Tags to apply when adding a book: - - - diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 44482e118c..f2f51c440a 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.7.43\n" -"POT-Creation-Date: 2011-01-30 12:40+MST\n" -"PO-Revision-Date: 2011-01-30 12:40+MST\n" +"POT-Creation-Date: 2011-02-03 22:52+MST\n" +"PO-Revision-Date: 2011-02-03 22:52+MST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -34,7 +34,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:419 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:127 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:100 #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:102 @@ -59,8 +59,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:124 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:126 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1022 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1026 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1136 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -69,16 +69,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:91 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:42 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:68 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:81 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:156 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:661 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:876 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:124 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:158 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:663 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:878 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:880 #: /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:958 @@ -111,48 +111,48 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:100 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:329 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:331 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:312 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:314 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:299 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:306 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:335 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:160 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:145 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1075 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1078 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:731 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:236 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:424 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:443 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:965 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1158 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:970 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1163 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:70 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:191 #: /home/kovid/work/calibre/src/calibre/library/cli.py:215 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:432 #: /home/kovid/work/calibre/src/calibre/library/database2.py:444 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1529 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1632 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2472 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2474 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2605 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1534 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1637 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2540 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2542 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2673 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:229 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:158 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:161 @@ -642,7 +642,7 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/debug.py:148 +#: /home/kovid/work/calibre/src/calibre/debug.py:150 msgid "Debug log" msgstr "" @@ -716,6 +716,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:886 @@ -724,16 +725,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:262 #: /home/kovid/work/calibre/src/calibre/library/database2.py:244 #: /home/kovid/work/calibre/src/calibre/library/database2.py:257 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2336 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2404 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:150 msgid "News" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2554 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:625 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2299 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2317 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:634 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2367 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2385 msgid "Catalog" msgstr "" @@ -841,7 +842,7 @@ msgid "Communicate with the Blackberry smart phone." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:254 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:253 #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" @@ -859,19 +860,19 @@ msgstr "" msgid "Communicate with the EB600 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:194 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:193 msgid "Communicate with the Astak Mentor EB600" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:217 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:216 msgid "Communicate with the PocketBook 301 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:234 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:233 msgid "Communicate with the PocketBook 602/603/902/903 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:253 +#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:252 msgid "Communicate with the PocketBook 701" msgstr "" @@ -947,7 +948,7 @@ msgstr "" msgid "John Schember" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:44 +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:54 msgid "Cannot get files from this device" msgstr "" @@ -1129,6 +1130,14 @@ msgstr "" msgid "Set this option to have separate book covers uploaded every time you connect your device. Unset this option if you have so many books on the reader that performance is unacceptable." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:85 +msgid "Preserve cover aspect ratio when building thumbnails" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:87 +msgid "Set this option if you want the cover thumbnails to have the same aspect ratio (width to height) as the cover. Unset it if you want the thumbnail to be the maximum size, ignoring aspect ratio." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" @@ -1147,18 +1156,22 @@ msgid "Communicate with the Newsmy reader." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47 -msgid "Communicate with the Pico reader." +msgid "Communicate with the Archos reader." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57 +msgid "Communicate with the Pico reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:67 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:78 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:88 msgid "Communicate with the Sunstech EB700 reader." msgstr "" @@ -1249,75 +1262,79 @@ msgstr "" msgid "Get device information..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:182 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:190 msgid "Rendered %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:185 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:193 msgid "Failed %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:239 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:247 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:258 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:266 msgid "Number of colors for grayscale image conversion. Default: %default. Values of less than 256 may result in blurred text on your device if you are creating your comics in EPUB format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:262 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:270 msgid "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:265 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:273 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:267 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:275 msgid "Disable sharpening." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:269 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:277 msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:272 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:280 msgid "Don't split landscape images into two portrait images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282 msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:277 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285 msgid "Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289 msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:284 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 msgid "Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:296 msgid "The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300 msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:294 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302 msgid "Do not convert the image to grayscale (black and white)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:431 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:442 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304 +msgid "Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:443 +#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:454 msgid "Page" msgstr "" @@ -1336,56 +1353,56 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:105 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:106 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:106 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:107 msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:113 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:113 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:127 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:128 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:142 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:143 msgid "Modify the document text and structure using common patterns. Disabled by default. Use %s to enable. Individual actions can be disabled with the %s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:150 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:160 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:168 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:169 msgid "Control the automatic generation of a Table of Contents. By default, if the source file has a Table of Contents, it will be used in preference to the automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:178 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:179 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:181 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:207 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:208 msgid "List builtin recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:280 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:281 msgid "Output saved to" msgstr "" @@ -1644,58 +1661,62 @@ msgid "Left aligned scene break markers are center aligned. Replace soft scene b msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:536 +msgid "Replace scene breaks with the specified text. By default, the text from the input document is used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:541 msgid "Analyze hyphenated words throughout the document. The document itself is used as a dictionary to determine whether hyphens should be retained or removed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:542 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:547 msgid "Looks for occurrences of sequential

or

tags. The tags are renumbered to prevent splitting in the middle of chapter headings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:548 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:553 msgid "Search pattern (regular expression) to be replaced with sr1-replace." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:553 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:558 msgid "Replacement to replace the text found with sr1-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:557 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 msgid "Search pattern (regular expression) to be replaced with sr2-replace." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:562 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:567 msgid "Replacement to replace the text found with sr2-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:566 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:571 msgid "Search pattern (regular expression) to be replaced with sr3-replace." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:571 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:576 msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:673 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:678 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:731 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:736 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:738 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:743 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:893 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:898 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:920 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:925 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1008 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1013 msgid "Creating" msgstr "" @@ -2101,14 +2122,14 @@ msgid "TEMPLATE ERROR" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:544 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:554 msgid "No" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:544 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:554 msgid "Yes" msgstr "" @@ -2120,7 +2141,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:421 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:970 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:975 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:304 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:590 msgid "Title" @@ -2130,7 +2151,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:426 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:971 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976 msgid "Author(s)" msgstr "" @@ -2151,7 +2172,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:383 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1177 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:188 msgid "Comments" msgstr "" @@ -2162,7 +2183,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1173 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1178 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:161 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:657 msgid "Tags" @@ -2174,7 +2195,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1187 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:109 msgid "Series" msgstr "" @@ -2184,7 +2205,7 @@ msgid "Language" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1165 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1170 msgid "Timestamp" msgstr "" @@ -2547,7 +2568,7 @@ msgstr "" msgid "Cover saved to file " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1308 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1312 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1448 msgid "Cover" msgstr "" @@ -2589,7 +2610,7 @@ msgstr "" msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:265 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:267 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" @@ -2665,9 +2686,9 @@ msgid "%s format books are not supported" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:176 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:220 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:702 msgid "Book %s of %s" msgstr "" @@ -2941,11 +2962,11 @@ msgid "Do not reduce the size or bit depth of images. Images have their size and msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:95 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:96 msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:288 +#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:271 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML first and then try it.\n" "%s" @@ -3207,7 +3228,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:308 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:528 msgid "Books" msgstr "" @@ -3326,8 +3347,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:225 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:92 msgid "No books selected" msgstr "" @@ -3518,7 +3539,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:310 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:672 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:877 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:904 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:190 msgid "Failed" @@ -3757,28 +3778,31 @@ msgid "Stop Content Server" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:82 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:94 msgid "Email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:84 -msgid " and delete from library" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:80 +msgid "Email to and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:88 +msgid "(delete from library)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:102 msgid "Setup email based sharing of books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:120 msgid "D" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:120 msgid "Send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:139 msgid "Connect/share" msgstr "" @@ -3864,32 +3888,32 @@ msgid "Downloading {0} for {1} book(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:187 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:227 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:228 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:231 msgid "You are about to merge more than 5 books. Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:239 msgid "Book formats and metadata from the selected books will be added to the first selected book (%s). ISBN will not be merged.

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

Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:251 msgid "Book formats from the selected books will be merged into the first selected book (%s). Metadata in the first selected book will not be changed.Author, Title, ISBN and all other metadata will not be merged.

After merger the second and subsequently selected books, with any metadata they have will be deleted.

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

Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:267 msgid "Book formats and metadata from the selected books will be merged into the first selected book (%s). ISBN will not be merged.

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

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

Are you sure you want to proceed?" msgstr "" @@ -3930,7 +3954,7 @@ msgid "Move to next highlighted match" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:353 msgid "N" msgstr "" @@ -4321,8 +4345,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:530 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:417 @@ -4346,8 +4370,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:156 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87 @@ -4390,7 +4414,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1168 msgid "Path" msgstr "" @@ -4407,8 +4431,8 @@ msgid "Formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:974 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1166 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:979 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1171 msgid "Collections" msgstr "" @@ -4421,8 +4445,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:370 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1172 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1176 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1177 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1181 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83 @@ -4478,12 +4502,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:158 @@ -4497,17 +4521,17 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:81 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:81 @@ -4906,8 +4930,8 @@ msgid "Style the selected text block" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:139 msgid "Normal" msgstr "" @@ -4990,69 +5014,73 @@ msgstr "" msgid "input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 msgid "&Number of Colors:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 msgid "Disable &normalize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 msgid "Keep &aspect ratio" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103 msgid "Disable &Sharpening" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:105 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:109 msgid "Disable &Trimming" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:108 msgid "&Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104 msgid "&Landscape" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:106 msgid "&Right to left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:105 msgid "Don't so&rt" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:107 msgid "De&speckle" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:111 msgid "&Disable comic processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:120 msgid "&Output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:113 msgid "Disable conversion of images to &black and white" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:114 +msgid "Override image &size:" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 msgid "Debug" msgstr "" @@ -5190,61 +5218,65 @@ msgstr "" msgid "0.0 pt" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:14 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:15 msgid "" "Heuristic\n" "Processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics.py:16 msgid "Modify the document text and structure using common patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:113 msgid "Heuristic processing means that calibre will scan your book for common patterns and fix them. As the name implies, this involves guesswork, which means that it could end up worsening the result of a conversion, if calibre guesses wrong. Therefore, it is disabled by default. Often, if a conversion does not turn out as you expect, turning on heuristics can improve matters. Read more about the various heuristic processing options in the User Manual." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:114 msgid "Enable &heuristic processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:115 msgid "Heuristic Processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:116 msgid "Unwrap lines" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:117 msgid "Line &un-wrap factor :" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:118 msgid "Detect and markup unformatted chapter headings and sub headings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:119 msgid "Renumber sequences of

or

tags to prevent splitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:120 msgid "Delete blank lines between paragraphs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:121 msgid "Ensure scene breaks are consistently formatted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:122 +msgid "Replace soft scene &breaks:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:123 msgid "Remove unnecessary hyphens" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:124 msgid "Italicize common words and patterns" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/heuristics_ui.py:125 msgid "Replace entity indents with CSS indents" msgstr "" @@ -5402,40 +5434,40 @@ msgstr "" msgid "Set the metadata. The output file will contain as much of this metadata as possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:178 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:642 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:650 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:640 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:651 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:190 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:201 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:648 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:659 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:188 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:649 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:660 msgid "

There was an error reading from file:
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:659 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:670 msgid " is not a valid picture" msgstr "" @@ -5469,7 +5501,7 @@ msgid "Change the title of this book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:498 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420 msgid "&Author(s): " msgstr "" @@ -5483,7 +5515,7 @@ msgid "Change the author(s) of this book. Multiple authors should be separated b msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:508 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:428 msgid "&Publisher: " msgstr "" @@ -5494,26 +5526,26 @@ msgid "Ta&gs: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:510 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:430 msgid "Tags categorize the book. This is particularly useful while searching.

They can be any words or phrases, separated by commas." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:517 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:433 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:292 msgid "&Series:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:515 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:434 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:435 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:291 msgid "List of known series. You can add new series." msgstr "" @@ -5621,13 +5653,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:34 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:92 msgid "&Inline TOC" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:74 msgid "Output Encoding:" msgstr "" @@ -5692,7 +5723,7 @@ msgid "Regex:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 msgid "Test" msgstr "" @@ -5847,20 +5878,25 @@ msgid "The XPath expression %s is invalid." msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:57 msgid "Chapter &mark:" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:58 msgid "Remove first &image" msgstr "" #: -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 msgid "Insert &metadata as page at start of book" msgstr "" +#: +#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:60 +msgid "The header and footer removal options have been replaced by the Search & Replace options. Click the Search & Replace category in the bar to the left to use these options. Leave the replace field blank and enter your header/footer removal regexps into the search field." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 msgid "" "Table of\n" @@ -5935,27 +5971,43 @@ msgstr "" msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:85 +msgid "General" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:86 +msgid "Output &Encoding:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 msgid "&Line ending style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:88 +msgid "&Formatting:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:89 +msgid "Plain" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:90 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:91 msgid "Force maximum line length" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:71 -msgid "Apply Markdown formatting to text" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:93 +msgid "Markdown, Textile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:94 msgid "Do not remove links ( tags) before processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:95 msgid "Do not remove image references before processing" msgstr "" @@ -6050,86 +6102,86 @@ msgstr "" msgid "Cover browser could not be loaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:87 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:111 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:289 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:576 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:599 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:650 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:303 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:308 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:501 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:184 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:504 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:268 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:973 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:993 msgid "Undefined" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:615 msgid "star(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:616 msgid "Unrated" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:645 msgid "Set '%s' to today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:647 msgid "Clear '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:290 msgid " index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:359 msgid "The enumeration \"{0}\" contains an invalid value that will be set to the default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:513 msgid "Apply changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:683 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:691 msgid "Remove series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:686 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:694 msgid "Automatically number books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:689 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:697 msgid "Force numbers to start with " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:768 msgid "The enumeration \"{0}\" contains invalid values that will not appear in the list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:800 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:811 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:820 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:831 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:826 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:837 msgid "tags to remove" msgstr "" @@ -6223,8 +6275,8 @@ msgid "Error communicating with device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:611 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1125 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:298 msgid "No suitable formats" msgstr "" @@ -6256,65 +6308,65 @@ msgstr "" msgid "%i of %i Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:843 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 msgid "0 of %i Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:845 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:853 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:853 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:854 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:856 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:860 -msgid "No card" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:861 +msgid "No card" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:858 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:862 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:907 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1108 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1001 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1119 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:947 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1032 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1075 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1086 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1126 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:1179 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1190 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1180 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1191 msgid "

Cannot upload books to device there is no more free space available " msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:118 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:255 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:61 msgid "Invalid template" @@ -6322,7 +6374,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:402 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:256 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62 msgid "The template %s is invalid:" @@ -6556,7 +6608,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1162 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1167 msgid "Format" msgstr "" @@ -6733,7 +6785,7 @@ msgstr "" #: #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:972 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:977 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:589 @@ -6934,204 +6986,204 @@ msgstr "" msgid "Working" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387 msgid "Capitalize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:266 msgid "Character match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:267 msgid "Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:270 msgid "Replace field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:271 msgid "Prepend to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:272 msgid "Append to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:282 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:323 msgid "Immediately make all changes without closing the dialog. This operation cannot be canceled or undone" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:381 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:396 msgid "You can destroy your library using this feature. Changes are permanent. There is no undo function. You are strongly encouraged to back up your library before proceeding.

Search and replace in text fields using character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:404 msgid "In character mode, the field is searched for the entered search text. The text is replaced by the specified replacement text everywhere it is found in the specified field. After replacement is finished, the text can be changed to upper-case, lower-case, or title-case. If the case-sensitive check box is checked, the search text must match exactly. If it is unchecked, the search text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:415 msgid "In regular expression mode, the search text is an arbitrary python-compatible regular expression. The replacement text can contain backreferences to parenthesized expressions in the pattern. The search is not anchored, and can match and replace multiple times on the same string. The modification functions (lower-case etc) are applied to the matched text, not to the field as a whole. The destination box specifies the field where the result after matching and replacement is to be assigned. You can replace the text in the field, or prepend or append the matched text. See this reference for more information on python's regular expressions, and in particular the 'sub' function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:489 msgid "S/R TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:616 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:707 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:811 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:727 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:837 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:720 msgid "Authors cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:708 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:728 msgid "Title cannot be set to the empty string. Book title %s not processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:838 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:863 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:890 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:892 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560 msgid "Delete saved search/replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:893 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:920 msgid "The selected saved search/replace will be deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:910 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:945 msgid "Save search/replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:911 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:938 msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:919 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:946 msgid "That saved search/replace already exists and will be overwritten. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:497 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:499 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:500 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:501 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:502 msgid "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:503 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:774 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:785 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:501 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:426 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:775 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:786 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:503 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506 msgid "No change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:507 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:427 msgid " stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:509 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:508 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:512 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:432 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:514 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:515 msgid "Check this box to remove all tags from the books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:516 msgid "Remove &all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:520 msgid "If checked, the series will be cleared" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:521 msgid "&Clear series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:522 msgid "" "If not checked, the series number for the books will be set to 1.\n" "If checked, selected books will be automatically numbered, in the order\n" @@ -7139,278 +7191,286 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:526 msgid "&Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:527 msgid "" "Series will normally be renumbered from the highest number in the database\n" "for that series. Checking this box will tell calibre to start numbering\n" "from the value in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:530 msgid "&Force numbers to start with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:957 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:977 msgid "&Date:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532 msgid "d MMM yyyy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:539 msgid "&Apply date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:535 msgid "&Published:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:444 msgid "Clear published date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541 msgid "" "Force the title to be in title case. If both this and swap authors are checked,\n" "title and author are swapped before the title case is set" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:543 msgid "Change title to title &case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544 +msgid "Update title sort based on the current title. This will be applied only after other changes to title." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:545 +msgid "Update &title sort" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:546 msgid "" "Remove stored conversion settings for the selected books.\n" "\n" "Future conversion of these books will use the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549 msgid "Remove &stored conversion settings for the selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:550 msgid "Change &cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551 msgid "&Generate default cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552 msgid "&Remove cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553 msgid "Set from &ebook file(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:465 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:521 msgid "&Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:466 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556 msgid "Load searc&h/replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557 msgid "Select saved search/replace to load." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558 msgid "Save current search/replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559 msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 msgid "Delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 msgid "Search &field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563 msgid "The name of the field that you want to search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564 msgid "Search &mode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565 msgid "Choose whether to use basic text matching or advanced regular expression matching" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566 msgid "Te&mplate:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 msgid "Enter a template to be used as the source for the search/replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568 msgid "&Search for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569 msgid "Enter the what you are looking for, either plain text or a regular expression, depending on the mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570 msgid "Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:571 msgid "Cas&e sensitive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572 msgid "&Replace with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573 msgid "The replacement text. The matched search text will be replaced with this string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:574 msgid "&Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:575 msgid "" "Specify how the text is to be processed after matching and replacement. In character mode, the entire\n" "field is processed. In regular expression mode, only the matched text is processed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577 msgid "&Destination field:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:578 msgid "" "The field that the text will be put into after all replacements.\n" "If blank, the source field is used if the field is modifiable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580 msgid "M&ode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581 msgid "Specify how the text should be copied into the destination." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582 msgid "" "Specifies whether result items should be split into multiple values or\n" "left as single values. This option has the most effect when the source field is\n" "not multiple and the destination field is multiple" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585 msgid "Split &result" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586 msgid "For multiple-valued fields, sho&w" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587 msgid "values starting a&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588 msgid "with values separated b&y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:589 msgid "Used when displaying test results to separate values in multiple-valued fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:590 msgid "Test text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:591 msgid "Test result" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:592 msgid "Your test:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:593 msgid "&Search and replace" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:420 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:428 msgid "Last modified: %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:249 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:259 msgid "Could not read cover" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:253 msgid "Could not read cover from %s format" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:260 msgid "The cover in the %s format is invalid" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:734 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:745 msgid "Cover size: %dx%d pixels" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:658 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:669 msgid "Not a valid picture" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:214 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:696 msgid "Specify title and author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:686 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:697 msgid "You must specify a title and author before generating a cover" msgstr "" @@ -7452,132 +7512,132 @@ msgid "The cover is not a valid picture" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:307 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:526 msgid "Choose formats for " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:338 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:558 msgid "No permission" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:559 msgid "You do not have permission to read the following files:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:366 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:579 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:580 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:590 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:591 msgid "No format selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:591 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:602 msgid "Could not read metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:379 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:592 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:603 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:451 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:228 msgid " The green color indicates that the current author sort matches the current author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:454 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:456 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:231 msgid " The red color indicates that the current author sort does not match the current author. No action is required if this is what you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:461 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:463 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:119 msgid " The green color indicates that the current title sort matches the current title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:466 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:122 msgid " The red color warns that the current title sort does not match the current title. No action is required if this is what you want." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:470 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:49 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:221 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:384 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:473 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:481 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:347 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:362 msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:478 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:480 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:46 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:103 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:211 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:401 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:682 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:687 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:897 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:692 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:912 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:690 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:904 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:695 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:919 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:770 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:861 msgid "Tags changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:849 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:780 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:862 msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes. Apply changes?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:815 msgid "Timed out" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:816 msgid "The download of social metadata timed out, the servers are probably busy. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:813 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:823 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:814 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:858 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:849 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:859 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:944 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:957 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:307 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:945 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:958 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:308 msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -7590,19 +7650,19 @@ msgid "Meta information" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:89 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to green." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:111 msgid "Swap the author and title" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:100 msgid "" "Automatically create the author sort entry based on the current author entry.\n" "Using this button to create author sort will change author sort from red to green." @@ -7622,19 +7682,19 @@ msgid "Author S&ort: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:422 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:214 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles Dickens should be sorted as Dickens, Charles.\n" "If the box is colored green, then text matches the individual author's sort strings. If it is colored red, then the authors and this text do not match." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:436 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "Remove unused series (Series that have no books)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:439 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:870 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:885 msgid "IS&BN:" msgstr "" @@ -7643,17 +7703,17 @@ msgid "dd MMM yyyy" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:442 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1008 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1028 msgid "Publishe&d:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:445 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:156 msgid "&Fetch metadata from server" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:448 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:609 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:620 msgid "&Browse" msgstr "" @@ -7662,7 +7722,7 @@ msgid "Remove border (if any) from cover" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:450 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:622 msgid "T&rim" msgstr "" @@ -7671,12 +7731,12 @@ msgid "Reset cover to default" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:452 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:624 msgid "&Remove" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:453 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:619 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:630 msgid "Download co&ver" msgstr "" @@ -7685,7 +7745,7 @@ msgid "Generate a default cover based on the title and author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:620 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:631 msgid "&Generate cover" msgstr "" @@ -7702,7 +7762,7 @@ msgid "Remove the selected formats for this book from the database." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:461 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:437 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:445 msgid "Set the cover for the book from the selected format" msgstr "" @@ -7711,7 +7771,7 @@ msgid "Update metadata from the metadata in the selected format" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:580 msgid "&Comments" msgstr "" @@ -8053,7 +8113,7 @@ msgid "&Author:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:815 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:826 msgid "Ta&gs:" msgstr "" @@ -8289,7 +8349,7 @@ msgid "Send test mail from %s to:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 msgid "&Test" msgstr "" @@ -8518,58 +8578,55 @@ msgstr "" msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:292 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:299 msgid "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:305 msgid "Failed to email book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:308 msgid "sent" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/email.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/email.py:331 msgid "Sent news to" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "" -"\n" -"\n" -"

Set a regular expression pattern to use when trying to guess ebook metadata from filenames.

\n" -"

A reference on the syntax of regular expressions is available.

\n" -"

Use the Test functionality below to test your regular expression on a few sample filenames. The group names for the various metadata entries are documented in tooltips.

" +"
\n" +"

Set a regular expression pattern to use when trying to guess ebook metadata from filenames.

\n" +"

A tutorial on using regular expressions is available.

\n" +"

Use the Test functionality below to test your regular expression on a few sample filenames (remember to include the file extension). The group names for the various metadata entries are documented in tooltips.

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:119 msgid "Regular &expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:121 msgid "File &name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 msgid "Title:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:124 msgid "Regular expression (?P<title>)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:115 @@ -8578,35 +8635,35 @@ msgstr "" msgid "No match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:126 msgid "Authors:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:127 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 msgid "Series:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:130 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:132 msgid "Series index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:133 msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:135 msgid "ISBN:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:136 msgid "Regular expression (?P)" msgstr "" @@ -8810,11 +8867,11 @@ msgstr "" msgid "Delete current saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:353 msgid "Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:388 msgid "Edit template" msgstr "" @@ -8833,33 +8890,33 @@ msgid "Book %s of %s." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:738 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1282 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:589 msgid "The lookup/search name is \"{0}\"" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:744 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:974 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:973 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:978 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1187 msgid "Book %s of %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1262 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1265 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 msgid "Double click to edit me

" msgstr "" @@ -9117,39 +9174,39 @@ msgstr "" msgid "Title &sort:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:219 msgid "Author s&ort:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:339 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:347 msgid "&Number:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:704 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:715 msgid "Invalid cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:705 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:716 msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:732 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:743 msgid "This book has no cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:782 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:793 msgid "stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:816 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:827 msgid "Tags categorize the book. This is particularly useful while searching.

They can be any wordsor phrases, separated by commas." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:911 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:926 msgid "&Publisher:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:976 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:996 msgid "Clear date" msgstr "" @@ -9182,7 +9239,7 @@ msgid "%s %s for: %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:288 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160 msgid "Done" msgstr "" @@ -9195,29 +9252,29 @@ msgstr "" msgid "Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:211 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:426 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:587 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:438 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:599 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:486 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:513 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:568 msgid "C&ustom metadata" msgstr "" @@ -9225,15 +9282,23 @@ msgstr "" msgid "Restore settings to default values. You have to click Apply to actually save the default settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:61 msgid "Here you can control how calibre will read metadata from the files you add to it. calibre can either read metadata from the contents of the file, or from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:50 -msgid "Read metadata from &file contents rather than file name" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:62 +msgid "Read &metadata from &file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:63 +msgid "Swap the firstname and lastname of the author. This affects only metadata read from file names." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:64 +msgid "&Swap author firstname and lastname" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:65 msgid "" "If an existing book with a similar title and author is found that does not have the format being added, the format is added\n" "to the existing book, instead of creating a new entry. If the existing book already has the format, then it is silently ignored.\n" @@ -9241,101 +9306,93 @@ msgid "" "Title match ignores leading indefinite articles (\"the\", \"a\", \"an\"), punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:69 msgid "If books with similar titles and authors found, &merge the new files automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:56 -msgid "&Configure metadata from file name" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:70 +msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:57 -msgid "Swap the firstname and lastname of the author. This affects only metadata read from file names." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:58 -msgid "&Swap author firstname and lastname" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 -msgid "High" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:147 -msgid "Low" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:163 -msgid "Confirmation dialogs have all been reset" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:137 -msgid "&Overwrite author and title by default when fetching metadata" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:138 -msgid "Download &social metadata (tags/ratings/etc.) by default" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:139 -msgid "Show notification when &new version is available" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140 -msgid "Automatically send downloaded &news to ebook reader" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141 -msgid "&Delete news from library when it is automatically sent to reader" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:142 -msgid "Default network &timeout:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:143 -msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:144 -msgid " seconds" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:148 -msgid "Job &priority:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:149 -msgid "Preferred &output format:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:150 -msgid "Restriction to apply when the current library is opened:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:151 -msgid "Apply this restriction on calibre startup if the current library is being used. Also applied when switching to this library. Note that this setting is per library. " -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:71 msgid "A comma-separated list of tags that will be applied to books added to the library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:153 -msgid "Tags to apply when adding a book:" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:72 +msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140 +msgid "High" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141 +msgid "Low" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161 +msgid "Confirmation dialogs have all been reset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:131 +msgid "&Overwrite author and title by default when fetching metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:132 +msgid "Download &social metadata (tags/ratings/etc.) by default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:133 +msgid "Show notification when &new version is available" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:134 +msgid "Automatically send downloaded &news to ebook reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:135 +msgid "&Delete news from library when it is automatically sent to reader" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:136 +msgid "Default network &timeout:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:137 +msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:138 +msgid " seconds" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:142 +msgid "Job &priority:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:143 +msgid "Preferred &output format:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:144 +msgid "Restriction to apply when the current library is opened:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:145 +msgid "Apply this restriction on calibre startup if the current library is being used. Also applied when switching to this library. Note that this setting is per library. " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 msgid "Reset all disabled &confirmation dialogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:147 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:150 msgid "Use internal &viewer for:" msgstr "" @@ -11581,33 +11638,33 @@ msgstr "" msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:527 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:537 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:528 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:538 msgid "unchecked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:527 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:537 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:528 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:538 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:185 msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:530 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:540 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:531 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:541 msgid "checked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:530 -#: /home/kovid/work/calibre/src/calibre/library/caches.py:540 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:531 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:541 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:185 msgid "yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:534 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:535 msgid "blank" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/caches.py:534 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:535 msgid "empty" msgstr "" @@ -11633,12 +11690,13 @@ msgstr "" msgid "" "The fields to output when cataloging books in the database. Should be a comma-separated list of fields.\n" "Available fields: %s.\n" +"plus user-created custom fields.\n" "Example: %s=title,authors,tags\n" "Default: '%%default'\n" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:245 msgid "" "Output field to sort on.\n" "Available fields: author_sort, id, rating, size, timestamp, title.\n" @@ -11646,7 +11704,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:254 msgid "" "Create a citation for BibTeX entries.\n" "Boolean value: True, False\n" @@ -11654,7 +11712,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:262 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:263 msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" "Boolean value: True, False\n" @@ -11662,16 +11720,16 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:271 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:272 msgid "" "The template for citation creation from database fields.\n" -" Should be a template with {} enclosed fields.\n" +"Should be a template with {} enclosed fields.\n" "Available fields: %s.\n" "Default: '%%default'\n" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:281 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:282 msgid "" "BibTeX file encoding output.\n" "Available types: utf8, cp1252, ascii.\n" @@ -11679,7 +11737,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:290 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:291 msgid "" "BibTeX file encoding flag.\n" "Available types: strict, replace, ignore, backslashreplace.\n" @@ -11687,7 +11745,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:299 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:300 msgid "" "Entry type for BibTeX catalog.\n" "Available types: book, misc, mixed.\n" @@ -11695,90 +11753,90 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:598 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:607 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:605 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:614 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'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:615 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:624 msgid "" "field:pattern specifying custom field/contents indicating book should be excluded.\n" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:622 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:631 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:628 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:637 msgid "" "Comma-separated list of tag words indicating book should be excluded from output.For example: 'skip' will match 'skip this book' and 'Skip will like this'.Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:636 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:645 msgid "" "Include 'Authors' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:643 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:652 msgid "" "Include 'Descriptions' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:650 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:659 msgid "" "Include 'Genres' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:657 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:666 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:664 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:673 msgid "" "Include 'Series' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:671 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:680 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:678 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:687 msgid "" "Custom field containing note text to insert in Description header.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:685 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:694 msgid "" ":[before|after]:[True|False] specifying:\n" " Custom field containing notes to merge with Comments\n" @@ -11788,21 +11846,21 @@ msgid "" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:695 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:704 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:702 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:711 msgid "" "field:pattern indicating book has been read.\n" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:708 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:717 msgid "" "Size hint (in inches) for book covers in catalog.\n" "Range: 1.0 - 2.0\n" @@ -11810,23 +11868,23 @@ msgid "" "Applies to ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:716 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:725 msgid "" "Tag indicating book to be displayed as wishlist item.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1399 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1408 msgid "" "No enabled genres found to catalog.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1403 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1412 msgid "No books available to catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1477 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1486 msgid "" "\n" "Inconsistent Author Sort values for Author '{0}':\n" @@ -11837,17 +11895,17 @@ msgid "" "then rebuild the catalog.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1678 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1687 msgid "" "No books found to catalog.\n" "Check 'Excluded books' criteria in E-book options.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1680 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:1689 msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:5006 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:5012 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -12346,11 +12404,11 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:575 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:584 msgid "No label was provided" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:577 +#: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:586 msgid "The label must contain only lower case letters, digits and underscores, and start with a letter" msgstr "" @@ -12362,15 +12420,15 @@ msgstr "" msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2631 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2699 msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2660 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2728 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2677 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2745 msgid "Compacting database" msgstr ""