diff --git a/Changelog.yaml b/Changelog.yaml index 6b41c53e30..1e3d4905b1 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,175 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.20 + date: 2010-09-24 + + + new features: + - title: "Tweak epub feature." + type: major + description: > + "Now you can conveniently browse the contents of an epub, tweak them and rebuild the epub within your calibre library + by right clicking on the book and selecting Tweak ePub. See http://www.mobileread.com/forums/showthread.php?t=99875 + for details." + + - title: "Add button to Edit metadata dialog to trim borders from the cover" + + - title: "Kobo driver: Add support for setting the ReadStatus to Read and correctly deal with empty collections" + + - title: "Improved algorithm for removal of hyphens during pre-processing" + + - title: "EPUB metadata: Don't read timestamp value from epubs as I am sick of closing bugs about adding books and having the Date not be today." + + - title: "After bulk edit metadata, reselect previously selected books." + + bug fixes: + - title: "Fix regression in 0.7.19 that broke the By Author and By Title category listing in Stanza/Aldiko feeds." + + - title: "MOBI Output: Fix regression that broke sections list in downloaded periodicals on Kindle for non-english news sources" + + - title: "News download: Rationalize cover processing." + tickets: [6852] + + - title: "Cover cache: load images only in the GUI thread to prevent stale files being leftover by set_path due to Windows file locking" + + - title: "Database: Make renaming of folders on case change more robust" + tickets: [6914] + + - title: "When adding/replacing files to/in EPUB files, set the GPF bit for all files in the archive, to prevent unzip from complaining in linux" + tickets: [6363] + + - title: "Plugin loading: Handle encoding declarations in .py files correctly" + + - title: "MOBI input: Another corner case" + tickets: [6909] + + - title: "IPC: Store results file in the calibre temp dir and also dont die if for some reason removing result file fails. Should make adding/saving more robust" + + - title: "Database: Fix regression that caused has_cover to create empty directories unneccessarily" + + - title: "Detection of Alex on unix" + tickets: [5900] + + - title: "News download: Don't add inline table of contents when downloading news for the Kindle" + + - title: "Add prologue and epilogue to default chapter detection regex" + + - title: "Kobo driver: Fix issue where books that are read were getting their status reset to Unread" + + - title: "Device drivers: Fix occassional false positive when matching books on device with books in the calibre library" + + - title: "Content server: Making serving of large files more efficient." + + - title: "GUI device detection: Handle case when user yanks connected device before device connection handler is called." + tickets: [6864] + + - title: "Strip leading/trailing whitespace when setting metadata using the edit metadata dialog" + tickets: [6854] + + - title: "KOBO: Editing the Im_Reading list with SD Card installed fixed" + tickets: [6850] + + new recipes: + - title: "Neal's Nuze and Popular Science" + author: Tony Stegall + + - title: "Rmf24.pl" + author: "Tomasz Dlugosz" + + - title: "Gazeta Pomorska" + author: "Richard" + + - title: "Le Journal de Montreal and superesportes" + author: "Luciano Furtado" + + - title: "The Marker" + author: Marbs + + - title: "Tagesanzeiger" + author: noxxx + + + improved recipes: + - Danas + - Harvard Business Review + +- version: 0.7.19 + date: 2010-09-17 + + new features: + - title: "The ability to perform search and replace via regular expressions in the Bulk Edit metadata dialog" + type: major + + - title: "Add an option to have calibre automatically convert straight quotes to curly quotes. Also handles em/en-dashes and ellipses. Found under 'Look & Feel' in the conversion options" + type: major + tickets: [6808] + + - title: "Greatly improve sorting performance on large libraries." + type: major + + - title: "Drivers for the SONY PRS-350/PRS-650 and the Sovos E-reader" + + - title: "Kobo driver: Add management of the I'm Reading list on Kobo via an Im_Reading tag in calibre. See http://www.mobileread.com/forums/showthread.php?t=98906 for details" + + - title: "Conversion pipeline: Add an option to control how hard line breaks are removed during preprocessing. See the Structure Detection section in the conversion options" + + - title: "In the Edit metadata dialog, indicate whether the author sort value matches the author value, using a background color" + + - title: "Add an option to split the toolbar into two toolbars in Preferences->Interface->Look and Feel" + + - title: "EPUB Output: Improved design of the 'jacket' page created by calibre when using the 'Insert metadata at start of book' option" + + - title: "PDF Input: Improve line unwrapping, handling of hyphens/dashes and quotes. Also handle more specially encoded non ASCII characters" + + bug fixes: + - title: "Fix regression in filename shortening that caused loss of filename extension" + + - title: "Fix various regressions that could be triggered when using search restrictions and/or multi-sorts and connecting a device" + + - title: "Database: Fix possible race condition in windows when changing title/author during move of book files, that could lead to old files not being deleted" + + - title: "Conversion pipeline: Don't die if rescaling of image raises an exception, just ignore and continue" + + - title: "Database: Update has_cover cache when setting/removing covers so that the search returns correct results. Also fix an exception that could occur when adding books with a db that has been upgraded from very old SQL." + + - title: "Workaround for bug that affects some windows installs causing white backgrounds on default covers to be rendered as yellow" + + - title: "Fix handling of non-ASCII chars when rendering series in default EPUB cover" + + - title: "Fix --start-in-tray switch displays hidden windows in metacity, xfwm4 and compiz" + tickets: [6806] + + - title: "Conversion pipeline: When setting margins on
explicitly set padding to 0 to override and existing padding in the input document" + + - title: "CHM Input: Ignore missing image files in the input document" + tickets: [6773] + + - title: "News download: Fix bug that could break some downloads in non ASCII locales" + + - title: "TXT Output: When using preserve spaces, output tab characters as a sequence of four non-breaking spaces as some readers dont handle the 09 char code." + + - title: "PDB Input: Fix bug in conversion of TOC in some PML files" + + + new recipes: + - title: "taz.de RSS" + author: Alexander Schremmer + + - title: "Brand Eins" + author: Constantin Hofstetter + + improved recipes: + - Harpers (free) + - Danas + - Novosti + - ESPN + - Taz Digiabo + - Slate + - AJC + - Infobae + - NSPM + - version: 0.7.18 date: 2010-09-10 @@ -197,7 +366,7 @@ new features: - title: "Multiple library support: Various improvements to make using multiple calibre libraries easier." type: major - desc: > + description: > "Now, when you switch libraries using the Choose Library button on the toolbar, entries are created in the menu of that button to easily switch to that library in the future. Also, you can now right click on a book in the calibre library and use the 'Copy to library' action to copy the book to another library, that you have switched to at least once. The name of the current library is shown in the titlebar. @@ -205,7 +374,7 @@ - title: "Content server: Allow setting a restriction so that the server shares only some of the books in the library." type: major - desc: > + description: > "You can now use a Saved Search as a restiction for the content server, via Preferences->Content Server. This will cause the server to share only those books that match the saved search. " diff --git a/imgsrc/rating.svg b/imgsrc/rating.svg new file mode 100644 index 0000000000..d289c71b99 --- /dev/null +++ b/imgsrc/rating.svg @@ -0,0 +1,589 @@ + + + diff --git a/imgsrc/trim.svg b/imgsrc/trim.svg new file mode 100644 index 0000000000..8c8810fc66 --- /dev/null +++ b/imgsrc/trim.svg @@ -0,0 +1,688 @@ + + + + diff --git a/resources/content_server/gui.js b/resources/content_server/gui.js index 631fb8b617..9ee61b1866 100644 --- a/resources/content_server/gui.js +++ b/resources/content_server/gui.js @@ -26,7 +26,7 @@ var current_library_request = null; ////////////////////////////// GET BOOK LIST ////////////////////////////// -var LIBRARY_FETCH_TIMEOUT = 30000; // milliseconds +var LIBRARY_FETCH_TIMEOUT = 5*60000; // milliseconds function create_table_headers() { var thead = $('table#book_list thead tr'); @@ -54,7 +54,7 @@ function render_book(book) { formats = book.attr("formats").split(","); if (formats.length > 0) { for (i=0; i < formats.length; i++) { - title += ''+formats[i]+', '; + title += ''+formats[i]+', '; } title = title.slice(0, title.length-2); title += ' ({0} MB) '.format(size); diff --git a/resources/images/news/ajc.png b/resources/images/news/ajc.png new file mode 100644 index 0000000000..110f40e039 Binary files /dev/null and b/resources/images/news/ajc.png differ diff --git a/resources/images/news/boortz.png b/resources/images/news/boortz.png new file mode 100644 index 0000000000..ac806e8056 Binary files /dev/null and b/resources/images/news/boortz.png differ diff --git a/resources/images/news/fronda.png b/resources/images/news/fronda.png new file mode 100644 index 0000000000..c332bbda49 Binary files /dev/null and b/resources/images/news/fronda.png differ diff --git a/resources/images/news/gazeta_pomorska.png b/resources/images/news/gazeta_pomorska.png new file mode 100644 index 0000000000..1d7099d7f3 Binary files /dev/null and b/resources/images/news/gazeta_pomorska.png differ diff --git a/resources/images/news/howtogeek.png b/resources/images/news/howtogeek.png new file mode 100644 index 0000000000..236ac79df6 Binary files /dev/null and b/resources/images/news/howtogeek.png differ diff --git a/resources/images/news/jpost_fr.png b/resources/images/news/jpost_fr.png new file mode 100644 index 0000000000..f68746e2e4 Binary files /dev/null and b/resources/images/news/jpost_fr.png differ diff --git a/resources/images/news/legeartis.png b/resources/images/news/legeartis.png new file mode 100644 index 0000000000..fd9001d9ed Binary files /dev/null and b/resources/images/news/legeartis.png differ diff --git a/resources/images/news/michalkiewicz.png b/resources/images/news/michalkiewicz.png index a87f30f5a3..cfa61c7fd6 100644 Binary files a/resources/images/news/michalkiewicz.png and b/resources/images/news/michalkiewicz.png differ diff --git a/resources/images/news/popscience.png b/resources/images/news/popscience.png new file mode 100644 index 0000000000..ff33483b10 Binary files /dev/null and b/resources/images/news/popscience.png differ diff --git a/resources/images/news/rmf24_ESKN.png b/resources/images/news/rmf24_ESKN.png new file mode 100644 index 0000000000..53ad00078a Binary files /dev/null and b/resources/images/news/rmf24_ESKN.png differ diff --git a/resources/images/news/rmf24_fakty.png b/resources/images/news/rmf24_fakty.png new file mode 100644 index 0000000000..53ad00078a Binary files /dev/null and b/resources/images/news/rmf24_fakty.png differ diff --git a/resources/images/rating.png b/resources/images/rating.png new file mode 100644 index 0000000000..81eba505b9 Binary files /dev/null and b/resources/images/rating.png differ diff --git a/resources/images/star.png b/resources/images/star.png deleted file mode 100644 index 6eb1fb890f..0000000000 Binary files a/resources/images/star.png and /dev/null differ diff --git a/resources/images/trim.png b/resources/images/trim.png new file mode 100644 index 0000000000..3cb93adfa6 Binary files /dev/null and b/resources/images/trim.png differ diff --git a/resources/jacket/stylesheet.css b/resources/jacket/stylesheet.css new file mode 100644 index 0000000000..8dee8edc3c --- /dev/null +++ b/resources/jacket/stylesheet.css @@ -0,0 +1,116 @@ +/* +** Book Jacket generation +** +** The template for Book Jackets is template.xhtml +** This CSS is inserted into the generated HTML at conversion time +** +** Users can control parts of the presentation of a generated book jacket by +** editing this file and template.xhtml +** +** The general form of a generated Book Jacket: +** +** Title +** Series: series [series_index] +** Published: year_of_publication +** Rating: #_of_stars +** Tags: tag1, tag2, tag3 ... +** +** Comments +** +** If a book does not have Series information, a date of publication, a rating or tags +** the corresponding row is automatically removed from the generated book jacket. +*/ + +/* +** Banner +** Only affects EPUB, kindle ignores this type of formatting +*/ +.cbj_banner { + background: #eee; + border: thin solid black; + margin: 1em; + padding: 1em; + -webkit-border-radius:8px; + } + +/* +** Title +*/ +.cbj_title { + font-size: x-large; + text-align: center; + } + +/* +** Table containing Series, Publication Year, Rating and Tags +*/ +table.cbj_header { + width: 100%; + } + +/* +** General formatting for banner labels +*/ +table.cbj_header td.cbj_label { + font-family: sans-serif; + font-weight: bold; + text-align: right; + width: 40%; + } + +/* +** General formatting for banner content +*/ +table.cbj_header td.cbj_content { + font-family: sans-serif; + text-align: left; + width:60%; + } + +/* +** To skip a banner item (Series|Published|Rating|Tags), +** edit the appropriate CSS rule below. +*/ +table.cbj_header tr.cbj_series { + /* Uncomment the next line to remove 'Series' from banner section */ + /* display:none; */ + } + +table.cbj_header tr.cbj_pubdate { + /* Uncomment the next line to remove 'Published' from banner section */ + /* display:none; */ + } + +table.cbj_header tr.cbj_rating { + /* Uncomment the next line to remove 'Rating' from banner section */ + /* display:none; */ + } + +table.cbj_header tr.cbj_tags { + /* Uncomment the next line to remove 'Tags' from banner section */ + /* display:none; */ + } + +hr { + /* This rule controls formatting for any hr elements contained in the jacket */ + border-top: 0px solid white; + border-right: 0px solid white; + border-bottom: 2px solid black; + border-left: 0px solid white; + margin-left: 10%; + width: 80%; + } + +.cbj_footer { + font-family: sans-serif; + font-size: small; + margin-top: 8px; + text-align: center; + } +.cbj_smallcaps { + font-size: 90%; + } + +.cbj_comments { + font-family: sans-serif; + } diff --git a/resources/jacket/template.xhtml b/resources/jacket/template.xhtml new file mode 100644 index 0000000000..93e12983e8 --- /dev/null +++ b/resources/jacket/template.xhtml @@ -0,0 +1,34 @@ + + +"+ content +"
" + p.replaceWith(new_p) + + return soup + + def parse_index(self): + feeds = [] + + archive = "http://www.brandeins.de/archiv.html" + + soup = self.index_to_soup(archive) + latest_jahrgang = soup.findAll('div', attrs={'class': re.compile(r'\bjahrgang-latest\b') })[0].findAll('ul')[0] + pre_latest_issue = latest_jahrgang.findAll('a')[len(latest_jahrgang.findAll('a'))-self.which_ausgabe] + url = pre_latest_issue.get('href', False) + # Get the title for the magazin - build it out of the title of the cover - take the issue and year; + self.title = "Brand Eins "+ re.search(r"(?P%s
' % (m.group(1), m.group(3), m.group(2))) ] - + def parse_index(self): INDEX = 'http://xkcd.com/archive/' - soup = self.index_to_soup(INDEX) + soup = self.index_to_soup(INDEX) articles = [] for item in soup.findAll('a', title=True): articles.append({ 'date': item['title'], 'timestamp': time.mktime(time.strptime(item['title'], '%Y-%m-%d'))+1, 'url': 'http://xkcd.com' + item['href'], - 'title': self.tag_to_string(item).encode('UTF-8'), + 'title': self.tag_to_string(item), 'description': '', 'content': '', }) diff --git a/setup/translations.py b/setup/translations.py index 37b92848d9..7f81abf8f5 100644 --- a/setup/translations.py +++ b/setup/translations.py @@ -197,7 +197,7 @@ class GetTranslations(Translations): class ISO639(Command): description = 'Compile translations for ISO 639 codes' - XML = '/usr/lib/python2.6/site-packages/pycountry/databases/iso639.xml' + XML = '/usr/lib/python2.7/site-packages/pycountry/databases/iso639.xml' def run(self, opts): src = self.XML diff --git a/src/calibre/constants.py b/src/calibre/constants.py index c72265b1fa..bb82d6a3c1 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.7.18' +__version__ = '0.7.20' __author__ = "Kovid Goyal)', re.DOTALL)
elif format == 'pdf':
linere = re.compile('(?<= |[iub]>\s* \s*<[iub]>)\s*(?P
).*?(?=
)', re.DOTALL)
+ elif format == 'spanned_html':
+ linere = re.compile('(?<=)', re.DOTALL)
lines = linere.findall(raw)
lengths = []
@@ -104,6 +106,52 @@ def line_length(format, raw, percent):
return lengths[index]
+class Dehyphenator(object):
+ '''
+ Analyzes words to determine whether hyphens should be retained/removed. Uses the document
+ itself is as a dictionary. This method handles all languages along with uncommon, made-up, and
+ scientific words. The primary disadvantage is that words appearing only once in the document
+ retain hyphens.
+ '''
+
+ def __init__(self):
+ # Add common suffixes to the regex below to increase the likelihood of a match -
+ # don't add suffixes which are also complete words, such as 'able' or 'sex'
+ self.removesuffixes = re.compile(r"((ed)?ly|('e)?s|a?(t|s)ion(s|al(ly)?)?|ings?|(i)?ous|(i|a)ty|(it)?ies|ive|gence|istic|(e|a)nce|ment(s)?|ism|ated|(e|u)ct(ed)?|ed|(i|ed)?ness|(e|a)ncy|ble|ier|al|ex)$", re.IGNORECASE)
+ # remove prefixes if the prefix was not already the point of hyphenation
+ self.prefixes = re.compile(r'^(un|in|ex)$', re.IGNORECASE)
+ self.removeprefix = re.compile(r'^(un|in|ex)', re.IGNORECASE)
+
+ def dehyphenate(self, match):
+ firsthalf = match.group('firstpart')
+ secondhalf = match.group('secondpart')
+ hyphenated = str(firsthalf) + "-" + str(secondhalf)
+ dehyphenated = str(firsthalf) + str(secondhalf)
+ lookupword = self.removesuffixes.sub('', dehyphenated)
+ if self.prefixes.match(firsthalf) is None:
+ lookupword = self.removeprefix.sub('', lookupword)
+ booklookup = re.compile(u'%s' % lookupword, re.IGNORECASE)
+ #print "lookup word is: "+str(lookupword)+", orig is: " + str(hyphenated)
+ match = booklookup.search(self.html)
+ if match:
+ #print "returned dehyphenated word: " + str(dehyphenated)
+ return dehyphenated
+ else:
+ #print "returned hyphenated word: " + str(hyphenated)
+ return hyphenated
+
+ def __call__(self, html, format, length=1):
+ self.html = html
+ if format == 'html':
+ intextmatch = re.compile(u'(?<=.{%i})(?P
\n
' + match.group(1) + '
'), # Remove page links (re.compile(r'', re.IGNORECASE), lambda match: ''), # Remove
- (re.compile(r' '),
-
- # Remove hyphenation
- (re.compile(r'- '),
# Clean up spaces
(re.compile(u'(?<=[\.,;\?!”"\'])[\s^ ]*(?=<)'), lambda match: ' '),
- # Connect paragraphs split by -
- (re.compile(u'(?<=[^\s][-–])[\s]*( )*\s*(?=[^\s])'), lambda match: ''),
# Add space before and after italics
(re.compile(u'(?'), lambda match: ' '),
(re.compile(r'(?=\w)'), lambda match: ' '),
@@ -328,12 +374,29 @@ class HTMLPreProcessor(object):
print 'Failed to parse remove_footer regexp'
traceback.print_exc()
+ # unwrap em/en dashes, delete soft hyphens - moved here so it's executed after header/footer removal
+ if is_pdftohtml:
+ # unwrap em/en dashes
+ end_rules.append((re.compile(u'(?<=[–—])\s* \s*(?=[[a-z\d])'), lambda match: ''))
+ # unwrap/delete soft hyphens
+ end_rules.append((re.compile(u'[](\s* )+\s*(?=[[a-z\d])'), lambda match: ''))
+ # unwrap/delete soft hyphens with formatting
+ end_rules.append((re.compile(u'[]\s*((i|u|b)>)+(\s* )+\s*(<(i|u|b)>)+\s*(?=[[a-z\d])'), lambda match: ''))
+
+ # Make the more aggressive chapter marking regex optional with the preprocess option to
+ # reduce false positives and move after header/footer removal
+ if getattr(self.extra_opts, 'preprocess_html', None):
+ if is_pdftohtml:
+ end_rules.append((re.compile(r' \s*(?P \s*(?P )?'), chap_head),)
+
+ length = -1
if getattr(self.extra_opts, 'unwrap_factor', 0.0) > 0.01:
length = line_length('pdf', html, getattr(self.extra_opts, 'unwrap_factor'))
if length:
+ # print "The pdf line length returned is " + str(length)
end_rules.append(
# Un wrap using punctuation
- (re.compile(r'(?<=.{%i}[a-z\.,;:)\-IA])\s*(?P '
+ else:
+ return ' '+span
+ else:
+ if not span:
+ return ' '
+ else:
+ return ' '+span
+
+ def no_markup(self, raw, percent):
+ '''
+ Detects total marked up line endings in the file. raw is the text to
+ inspect. Percent is the minimum percent of line endings which should
+ be marked up to return true.
+ '''
+ htm_end_ere = re.compile(' tags or equivalent (generally just plain text between
+ # ', html)
+
+ ###### Mark Indents/Cleanup ######
+ #
+ # Replace series of non-breaking spaces with text-indent
+ txtindent = re.compile(ur' [^>]*)>\s*(?P(]*>\s*)+)?\s*(\u00a0){2,}', re.IGNORECASE)
+ html = txtindent.sub(self.insert_indent, html)
+ if self.found_indents > 1:
+ self.log("replaced "+str(self.found_indents)+ " nbsp indents with inline styles")
+ # remove remaining non-breaking spaces
+ html = re.sub(ur'\u00a0', ' ', html)
+ # Get rid of empty )', re.IGNORECASE|re.DOTALL)
+ blankreg = re.compile(r'\s*(?P ]*>)\s*(?P ]*>\s*(<(b|i|u)>)?\s*((b|i|u)>)?\s* \s*", "\n ", html)
+ # detect chapters/sections to match xpath or splitting logic
+ heading = re.compile(' ]*>\s* ]*>', re.IGNORECASE)
+ spans_reg = re.compile(']*>', re.IGNORECASE)
+ paras = len(paras_reg.findall(html))
+ spans = len(spans_reg.findall(html))
+ if spans > 1:
+ if float(paras) / float(spans) < 0.75:
+ format = 'spanned_html'
+ else:
+ format = 'html'
+ else:
+ format = 'html'
+
+ # Calculate Length
+ length = line_length(format, html, getattr(self.extra_opts,
+ 'html_unwrap_factor', 0.4))
+ self.log("*** Median line length is " + str(length) + ", calculated with " + format + " format ***")
+ max_length = length * 1.4
+ min_max = str("(?<=.{"+str(length)+"})(?\s*([iubp]>\s*<[iubp][^>]*>\s*)?]*>|[iubp]>\s*<[iubp][^>]*>)?\s*', '', html)
+ html = re.sub(u'%s(?<=[\u2013\u2014])\s*(?=<)(\s*([iubp]>\s*<[iubp][^>]*>\s*)?]*>|[iubp]>\s*<[iubp][^>]*>)?\s*(?=[[a-z\d])' % min_max, '', html)
+ # Dehyphenate
+ dehyphenator = Dehyphenator()
+ html = dehyphenator(html,'html', length)
+
+ # Unwrap lines using punctation and line length
+ unwrap = re.compile(r"(?<=.{%i}([a-z,;):\IA]|(?\s*((p|span|div)>)?\s*(?P
'),
# Remove gray background
(re.compile(r']+>'), lambda match : ''),
# Detect Chapters to match default XPATH in GUI
- (re.compile(r'(?=<(/?br|p))(<(/?br|p)[^>]*)?>\s*(?P
]*>)\n?((?=()?\s*\w+(\s+\w+)?()?(
]*>|?p[^>]*>))((?P
]*>|?p[^>]*>)))?'), chap_head),
+ (re.compile(r'
\s*(?P
\s*){1,3}\s*(?P
)?', re.IGNORECASE), chap_head),
+ # Cover the case where every letter in a chapter title is separated by a space
+ (re.compile(r'
\s*(?P
\s*){1,3}\s*(?P
))?'), chap_head),
# Have paragraphs show better
(re.compile(r''+chap+'
\n'
+ else:
+ self.html_preprocess_sections = self.html_preprocess_sections + 1
+ self.log("found " + str(self.html_preprocess_sections) + " chapters & titles. - " + str(chap) + ", " + str(title))
+ return ''+chap+'
\n'+title+'
\n'
+
+ def chapter_break(self, match):
+ chap = match.group('section')
+ styles = match.group('styles')
+ self.html_preprocess_sections = self.html_preprocess_sections + 1
+ self.log("marked " + str(self.html_preprocess_sections) + " section markers based on punctuation. - " + str(chap))
+ return '<'+styles+' style="page-break-before:always">'+chap
+
+ def insert_indent(self, match):
+ pstyle = match.group('formatting')
+ span = match.group('span')
+ self.found_indents = self.found_indents + 1
+ if pstyle:
+ if not span:
+ return ' tags), check and mark up line endings if required before proceeding
+ if self.no_markup(html, 0.1):
+ self.log("not enough paragraph markers, adding now")
+ # check if content is in pre tags, use txt procesor to mark up if so
+ pre = re.compile(r'
', re.IGNORECASE)
+ if len(pre.findall(html)) == 1:
+ self.log("Running Text Processing")
+ from calibre.ebooks.txt.processor import convert_basic, preserve_spaces, \
+ separate_paragraphs_single_line
+ outerhtml = re.compile(r'.*?(?<=
)(?P
).*', re.IGNORECASE|re.DOTALL)
+ html = outerhtml.sub('\g tag or
+ # other types of unmarked html and handle them in some better fashion
+ add_markup = re.compile('(?)(\n)')
+ html = add_markup.sub('
'+'
', html)
+
+ # put back non-breaking spaces in empty paragraphs to preserve original formatting
+ html = blankreg.sub('\n'+r'\g'+'\g
\n', html)
- # Unwrap lines using punctation if the median length of all lines is less than 150
- #
- # Insert extra line feeds so the line length regex functions properly
- html = re.sub(r"'+'\g
\n', html)
- # Unwrap lines using punctation if the median length of all lines is less than 150
- #
- # Insert extra line feeds so the line length regex functions properly
- html = re.sub(r"
]*>\s*]*>\s*(?P
]*>\s*(]*>\s*\s*)
\s*){0,3}\s*]*>\s*(]*>)?\s*" % length, re.UNICODE)
- if length < 150:
- res = unwrap.sub(' ', res)
+ preprocessor = PreProcessor(self.options, log=getattr(self, 'log', None))
+ res = preprocessor(res)
f.write(res)
self.write_inline_css(inline_class)
stream.seek(0)
diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 1b61404589..c0c7b0a9ed 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -1,7 +1,7 @@
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal '+
+ _('Search and replace in text fields using '
+ 'regular expressions. 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. See '
+ ' '
+ 'this reference '
+ 'for more information, and in particular the \'sub\' '
+ 'function.') + ' ' + _(
+ 'Note: 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.'))
+ self.s_r_error = None
+ self.s_r_obj = None
+
+ self.replace_func.addItems(sorted(self.s_r_functions.keys()))
+ self.search_field.currentIndexChanged[str].connect(self.s_r_field_changed)
+ self.replace_func.currentIndexChanged[str].connect(self.s_r_paint_results)
+ self.search_for.editTextChanged[str].connect(self.s_r_paint_results)
+ self.replace_with.editTextChanged[str].connect(self.s_r_paint_results)
+ self.test_text.editTextChanged[str].connect(self.s_r_paint_results)
+ self.central_widget.setCurrentIndex(0)
+
+ def s_r_field_changed(self, txt):
+ txt = unicode(txt)
+ for i in range(0, self.s_r_number_of_books):
+ if txt:
+ fm = self.db.field_metadata[txt]
+ id = self.ids[i]
+ val = self.db.get_property(id, index_is_id=True,
+ loc=fm['rec_index'])
+ if val is None:
+ val = ''
+ if fm['is_multiple']:
+ val = [t.strip() for t in val.split(fm['is_multiple']) if t.strip()]
+ if val:
+ val.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))
+ val = val[0]
+ if txt == 'authors':
+ val = val.replace('|', ',')
+ else:
+ val = ''
+ else:
+ val = ''
+ w = getattr(self, 'book_%d_text'%(i+1))
+ w.setText(val)
+ self.s_r_paint_results(None)
+
+ def s_r_set_colors(self):
+ if self.s_r_error is not None:
+ col = 'rgb(255, 0, 0, 20%)'
+ self.test_result.setText(self.s_r_error.message)
+ else:
+ col = 'rgb(0, 255, 0, 20%)'
+ self.test_result.setStyleSheet('QLineEdit { color: black; '
+ 'background-color: %s; }'%col)
+ for i in range(0,self.s_r_number_of_books):
+ getattr(self, 'book_%d_result'%(i+1)).setText('')
+
+ def s_r_func(self, match):
+ rf = self.s_r_functions[unicode(self.replace_func.currentText())]
+ rv = unicode(self.replace_with.text())
+ val = match.expand(rv)
+ return rf(val)
+
+ def s_r_paint_results(self, txt):
+ self.s_r_error = None
+ self.s_r_set_colors()
+ try:
+ self.s_r_obj = re.compile(unicode(self.search_for.text()))
+ except re.error as e:
+ self.s_r_obj = None
+ self.s_r_error = e
+ self.s_r_set_colors()
+ return
+
+ try:
+ self.test_result.setText(self.s_r_obj.sub(self.s_r_func,
+ unicode(self.test_text.text())))
+ except re.error as e:
+ self.s_r_error = e
+ self.s_r_set_colors()
+ return
+
+ for i in range(0,self.s_r_number_of_books):
+ wt = getattr(self, 'book_%d_text'%(i+1))
+ wr = getattr(self, 'book_%d_result'%(i+1))
+ try:
+ wr.setText(self.s_r_obj.sub(self.s_r_func, unicode(wt.text())))
+ except re.error as e:
+ self.s_r_error = e
+ self.s_r_set_colors()
+ break
+
+ def do_search_replace(self):
+ field = unicode(self.search_field.currentText())
+ if not field or not self.s_r_obj:
+ return
+
+ fm = self.db.field_metadata[field]
+
+ def apply_pattern(val):
+ try:
+ return self.s_r_obj.sub(self.s_r_func, val)
+ except:
+ return val
+
+ for id in self.ids:
+ val = self.db.get_property(id, index_is_id=True,
+ loc=fm['rec_index'])
+ if val is None:
+ continue
+ if fm['is_multiple']:
+ res = []
+ for val in [t.strip() for t in val.split(fm['is_multiple'])]:
+ v = apply_pattern(val).strip()
+ if v:
+ res.append(v)
+ val = res
+ if fm['is_custom']:
+ # The standard tags and authors values want to be lists.
+ # All custom columns are to be strings
+ val = fm['is_multiple'].join(val)
+ elif field == 'authors':
+ val = [v.replace('|', ',') for v in val]
+ else:
+ val = apply_pattern(val)
+
+ if fm['is_custom']:
+ extra = self.db.get_custom_extra(id, label=fm['label'], index_is_id=True)
+ self.db.set_custom(id, val, label=fm['label'], extra=extra,
+ commit=False)
+ else:
+ if field == 'comments':
+ setter = self.db.set_comment
+ else:
+ setter = getattr(self.db, 'set_'+field)
+ setter(id, val, notify=False, commit=False)
+ self.db.commit()
+
def create_custom_column_editors(self):
w = self.central_widget.widget(1)
layout = QGridLayout()
@@ -193,6 +382,11 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
if len(self.ids) < 1:
return QDialog.accept(self)
+ if self.s_r_error is not None:
+ error_dialog(self, _('Search/replace invalid'),
+ _('Search pattern is invalid: %s')%self.s_r_error.message,
+ show=True)
+ return False
self.changed = bool(self.ids)
# Cache values from GUI so that Qt widgets are not used in
# non GUI thread
@@ -234,6 +428,10 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
return error_dialog(self, _('Failed'),
self.worker.error[0], det_msg=self.worker.error[1],
show=True)
+
+ self.do_search_replace()
+
+ self.db.clean()
return QDialog.accept(self)
diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui
index 0eeee61c7e..aca7b0cb75 100644
--- a/src/calibre/gui2/dialogs/metadata_bulk.ui
+++ b/src/calibre/gui2/dialogs/metadata_bulk.ui
@@ -6,8 +6,8 @@
' + textwrap.fill(base+' '+textwrap.fill(base + ' When calibre removes inter paragraph spacing, it automatically sets a "
"paragraph indent, to ensure that paragraphs can be easily distinguished. "
"This option controls the width of that indent."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135
msgid " em"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136
msgid "Text justification:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137
msgid "&Linearize tables"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138
msgid "Extra &CSS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139
msgid "&Transliterate unicode characters to ASCII"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140
msgid "Insert &blank line"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:143
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141
msgid "Keep &ligatures"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142
+msgid "Smarten &punctuation"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19
msgid "LRF Output"
msgstr ""
@@ -4692,38 +4757,38 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:165
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109
msgid "Choose cover for "
msgstr "إختار الغلاف لـ "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116
msgid "Cannot read"
msgstr "لا يمكن القراءة"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117
msgid "You do not have permission to read the file: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:125
msgid "Error reading file"
msgstr "خطأ في قراءة الملف"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:126
msgid " There was an error reading from file: Cannot upload books to device there is no more free space available "
msgstr ""
@@ -5572,7 +5641,7 @@ msgid "My Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69
-#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:289
+#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:297
msgid "Generate catalog"
msgstr ""
@@ -5713,14 +5782,14 @@ 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:889
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:884
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:588
msgid "Date"
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:1064
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066
msgid "Format"
msgstr "التهيئة"
@@ -5849,90 +5918,133 @@ msgstr ""
msgid "Stop &all non device jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:111
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+msgid "Lower Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+msgid "Upper Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:109
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+msgid "Title Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:119
msgid "Editing meta information for %d books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:166
+msgid "Book %d:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:182
+msgid ""
+"Search and replace in text fields using regular expressions. 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. See this "
+"reference for more information, and in particular the 'sub' function."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:192
+msgid ""
+"Note: 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."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:382
+msgid "Search/replace invalid"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:383
+msgid "Search pattern is invalid: %s"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:415
msgid "Applying changes to %d books. This may take a while."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:228
msgid "Edit Meta information"
msgstr "تحرير معلومات الميتا"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:230
msgid "A&utomatically set author sort"
msgstr "ضبط& ترتيب المؤلف آلياً"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:231
msgid "Author s&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:232
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:170
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:233
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
msgid "&Rating:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:234
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
msgid "Rating of this book. 0-5 stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:236
msgid "No change"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:237
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
msgid " stars"
msgstr " نجمة"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:239
msgid "Add ta&gs: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:241
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
msgid "Open Tag Editor"
msgstr "فتح محرر الوسوم"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:180
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:243
msgid "&Remove tags:"
msgstr "حذف& الوسوم:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:181
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:244
msgid "Comma separated list of tags to remove from the books. "
msgstr "قائمة من الوسوم مفرقة بالفاصلة لحذفها من الكتب. "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:182
-msgid "Remove all"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:245
msgid "Check this box to remove all tags from the books."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:187
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:246
+msgid "Remove all"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:250
msgid "Remove &format:"
msgstr "حذف الت&هيئة:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:251
msgid "&Swap title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:252
msgid ""
"Selected books will be automatically numbered,\n"
"in the order you selected them.\n"
@@ -5940,161 +6052,205 @@ 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:194
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:257
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:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:260
msgid "Remove &stored conversion settings for the selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:261
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415
msgid "&Basic metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:199
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:262
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:416
msgid "&Custom metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:263
+msgid "Search &field:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:264
+msgid "&Search for:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:265
+msgid "&Replace with:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:266
+msgid "Apply function &after replace:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:267
+msgid "Test &text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:268
+msgid "Test re&sult"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:269
+msgid "Your test:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:270
+msgid "&Search and replace (experimental)"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91
msgid "Last modified: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133
msgid "Not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150
msgid "Specify title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151
msgid "You must specify a title and author before generating a cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169
msgid "Choose formats for "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200
msgid "No permission"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201
msgid "You do not have permission to read the following files:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:228
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:229
msgid "No format selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:240
msgid "Could not read metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:236
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:241
msgid "Could not read metadata from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:295
msgid "Could not read cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290
msgid "Could not read cover from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:296
msgid "The cover in the %s format is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:328
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:333
+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:336
+msgid ""
+" The red color indicates that the current author sort does not match the "
+"current author"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:341
msgid "Abort the editing of all remaining books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:466
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:510
msgid "This ISBN number is valid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:474
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:513
msgid "This ISBN number is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592
msgid "Cannot use tag editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:554
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:593
msgid "The tags editor cannot be used if you have modified the tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:613
msgid "Downloading cover..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:625
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:636
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:641
msgid "Cannot fetch cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:637
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:642
msgid "Could not fetch cover. This book is protected by DRM"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:592
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603
msgid "Could not open ebook"
msgstr "لم يتمكن من فتح الكتاب الإلكتروني"
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:666
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:677
msgid "Options to control the ebook viewer"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:673
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:684
msgid ""
"If specified, viewer window will try to come to the front when started."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:678
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:689
msgid "Print javascript alert and console messages to the console"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:684
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:695
msgid ""
"%prog [options] file\n"
"\n"
@@ -9144,22 +9321,10 @@ msgstr ""
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
-msgid "Upper Case"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
-msgid "Lower Case"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
-msgid "Title Case"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:857
msgid "Drag to resize"
msgstr ""
@@ -9440,48 +9605,48 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:230
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:232
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:233
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:235
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:236
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:238
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:239
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:240
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:241
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:242
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:404
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:414
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:406
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:416
msgid "no"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:404
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:414
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:406
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:416
msgid "unchecked"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:407
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:417
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:409
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:419
msgid "checked"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:407
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:417
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:409
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:419
msgid "yes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:411
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:413
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:411
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:413
msgid "empty"
msgstr ""
@@ -9502,7 +9667,7 @@ msgid ""
"Applies to: CSV, XML output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:206
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:212
msgid ""
"The fields to output when cataloging books in the database. Should be a "
"comma-separated list of fields.\n"
@@ -9511,7 +9676,7 @@ msgid ""
"Applies to: BIBTEX output format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:216
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:222
msgid ""
"Output field to sort on.\n"
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
@@ -9519,7 +9684,7 @@ msgid ""
"Applies to: BIBTEX output format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:225
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:231
msgid ""
"Create a citation for BibTeX entries.\n"
"Boolean value: True, False\n"
@@ -9527,7 +9692,7 @@ msgid ""
"Applies to: BIBTEX output format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:234
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240
msgid ""
"The template for citation creation from database fields.\n"
" Should be a template with {} enclosed fields.\n"
@@ -9536,7 +9701,7 @@ msgid ""
"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:250
msgid ""
"BibTeX file encoding output.\n"
"Available types: utf8, cp1252, ascii.\n"
@@ -9544,7 +9709,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:259
msgid ""
"BibTeX file encoding flag.\n"
"Available types: strict, replace, ignore, backslashreplace.\n"
@@ -9552,7 +9717,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:268
msgid ""
"Entry type for BibTeX catalog.\n"
"Available types: book, misc, mixed.\n"
@@ -9560,14 +9725,14 @@ msgid ""
"Applies to: BIBTEX output format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:530
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:536
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:537
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:543
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 "
@@ -9576,14 +9741,14 @@ msgid ""
"Applies to: ePub, MOBI output formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:547
+#: /home/kovid/work/calibre/src/calibre/library/catalog.py:553
msgid ""
"Regex describing tags to exclude as genres.\n"
"Default: '%default' excludes bracketed tags, e.g. '[ Migrating old database to ebook library in %s calibre can scan your computer for existing books automatically. These "
"books will then be copied into the calibre library. This wizard will "
@@ -4141,87 +4530,99 @@ msgid ""
" Make sure that the folder you chose for your calibre library is "
"not under the root folder you choose. el calibre pot cercar llibres que hi hagi al vostre ordinador "
+"automàticament. Aquests llibres es copiaran a la biblioteca del "
+"calibre. Aquest assistent us ajudarà a personalitzar el procés de cerca i "
+"importació de la vostra col·lecció de llibres. Trieu una carpeta arrel. Només es cercaran llibres dins d'aquesta carpeta "
+"i de les seves subcarpetes. Assegureu-vos que la carpeta escollida per a la vostra biblioteca del "
+"calibre no està dins de la carpeta arrel que heu triat. This wizard will help you choose an appropriate font size key for your "
"needs. Just enter the base font size of the input document and then enter an "
@@ -4673,25 +5106,25 @@ msgid ""
"for a discussion of how font size rescaling works. When calibre removes inter paragraph spacing, it automatically sets a "
"paragraph indent, to ensure that paragraphs can be easily distinguished. "
"This option controls the width of that indent."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135
msgid " em"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136
msgid "Text justification:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137
msgid "&Linearize tables"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138
msgid "Extra &CSS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:139
msgid "&Transliterate unicode characters to ASCII"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:140
msgid "Insert &blank line"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:141
msgid "Keep &ligatures"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:142
+msgid "Smarten &punctuation"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19
msgid "LRF Output"
msgstr ""
@@ -4859,7 +5296,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200
msgid "Metadata"
msgstr "Metadades"
@@ -4870,95 +5307,95 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:165
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:112
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109
msgid "Choose cover for "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116
msgid "Cannot read"
msgstr "No pot llegir-se"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:120
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117
msgid "You do not have permission to read the file: "
msgstr "No tens permissos per a llegir l'arxiu: "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:181
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:125
msgid "Error reading file"
msgstr "Error llegint l'arxiu"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:182
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:126
msgid " There was an error reading from file: Error llegint de l'arxiu: Cannot upload books to device there is no more free space available "
msgstr " No puc desar llibres al dispositiu perquè no hi ha espai restant "
-#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83
msgid "Select available formats and their order for this device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:87
msgid "Use sub directories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:88
msgid "Use author sort for author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:90
msgid "Save &template:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:43
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:48
msgid "Add books by ISBN"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:49
msgid ""
" Enter a list of ISBNs in the box to the left, one per line. calibre will "
"automatically create entries for books based on the ISBN and download "
@@ -5736,19 +6173,19 @@ msgid ""
"ignored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:50
msgid "&Paste from clipboard"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:73
msgid "Fit &cover within view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:74
msgid "&Previous"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:75
msgid "&Next"
msgstr ""
@@ -5757,7 +6194,7 @@ msgid "My Books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69
-#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:289
+#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:297
msgid "Generate catalog"
msgstr ""
@@ -5782,7 +6219,7 @@ msgstr ""
msgid "Catalog options"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:45
msgid "Choose Format"
msgstr "Trieu format"
@@ -5830,27 +6267,27 @@ msgstr ""
msgid "%s is not an existing folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:66
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71
msgid "Choose your calibre library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:67
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:72
msgid "Your calibre library is currently located at {0}"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:73
msgid "New &Location:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:74
msgid "Use &existing library at the new location"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:70
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:75
msgid "&Create an empty library at the new location"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:76
msgid "&Move current library to new location"
msgstr ""
@@ -5862,15 +6299,15 @@ msgstr ""
msgid "Set options for converting %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:92
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97
msgid "&Title:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:93
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98
msgid "&Author(s):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:95
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100
msgid "&Profile:"
msgstr "&Perfil:"
@@ -5878,1110 +6315,11 @@ msgstr "&Perfil:"
msgid "Edit Comments"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:173
-msgid "%(plugin_type)s %(plugins)s"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:174
-msgid "plugins"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:183
-msgid ""
-"\n"
-"Customization: "
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198
-msgid "General"
-msgstr "General"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200
-msgid "Conversion"
-msgstr "Conversió"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201
-msgid ""
-"Email\n"
-"Delivery"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:202
-msgid "Add/Save"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:203
-msgid "Advanced"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:204
-msgid ""
-"Content\n"
-"Server"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:205
-msgid "Plugins"
-msgstr "Plugins"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:229
-msgid "Auto send"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:229
-msgid "Email"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:234
-msgid "Formats to email. The first matching format will be sent."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:235
-msgid ""
-"If checked, downloaded news will be automatically mailed Remember to leave calibre running as the server only runs as long as "
-"calibre is running.\n"
-" Stanza should see your calibre collection automatically. If not, try "
-"adding the URL http://myhostname:8080 as a new catalog in the Stanza reader "
-"on your iPhone. Here myhostname should be the fully qualified hostname or "
-"the IP address of the computer calibre is running on."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:696
-msgid ""
-"Here you can customize the behavior of Calibre by controlling what plugins "
-"it uses."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:697
-msgid "Enable/&Disable plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:698
-msgid "&Customize plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:699
-msgid "&Remove plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:700
-msgid "Add new plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:701
-msgid "Plugin &file:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:703
-msgid "&Add"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125
-msgid "Create Tag-based Column"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126
-msgid "Lookup name"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127
-msgid "Column heading"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128
-msgid "Column type"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129
-msgid "Use brackets"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130
-msgid "Values can be edited"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135
-msgid "Text"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136
-msgid "Number"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31
-#: /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:889
-#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:588
-msgid "Date"
-msgstr "Data"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138
-msgid "Tag on book"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139
-msgid "Explanation text added in create_ct_column.py"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140
-msgid "Create and edit tag-based columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:19
-msgid "Text, column shown in the tag browser"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:22
-msgid "Comma separated text, like tags, shown in the tag browser"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:25
-msgid "Long text, like comments, not shown in the tag browser"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:28
-msgid "Text column for keeping series-like information"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33
-msgid "Floating point numbers"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:35
-msgid "Integers"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:37
-msgid "Ratings, shown with stars"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:40
-msgid "Yes/No"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:69
-msgid "No column selected"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:70
-msgid "No column has been selected"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:74
-msgid "Selected column is not a user-defined column"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:105
-msgid "No lookup name was provided"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107
-msgid ""
-"The lookup name must contain only lower case letters, digits and "
-"underscores, and start with a letter"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:109
-msgid ""
-"Lookup names cannot end with _index, because these names are reserved for "
-"the index of a series column."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:118
-msgid "No column heading was provided"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:124
-msgid "The lookup name %s is already used"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:134
-msgid "The heading %s is already used"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:101
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:117
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102
-msgid "&Lookup name"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103
-msgid "Column &heading"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:104
-msgid ""
-"Used for searching the column. Must contain only digits and lower case "
-"letters."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:105
-msgid ""
-"Column heading in the library view and category name in the tag browser"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106
-msgid "Column &type"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107
-msgid "What kind of information will be kept in the column."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:108
-msgid ""
-" Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
-"for year. For example:\n"
-" calibre can find metadata for your books from two locations: Google "
"Books and isbndb.com. To use isbndb.com you must sign up for a "
@@ -7080,73 +6426,116 @@ msgid ""
"below."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92
msgid "&Access Key:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:93
msgid "Fetch"
msgstr "Recull"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:94
msgid "Matches"
msgstr "Coincidències"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:95
msgid ""
"Select the book that most closely matches your copy from the list below"
msgstr "Seleccioneu el llibre que més s'acoste del llistat que hi ha a sota"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:96
msgid "Download &social metadata (tags/rating/etc.) for the selected book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:97
msgid "Overwrite author and title with author and title of selected book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:42
msgid "Details of job"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:49
msgid "Active Jobs"
msgstr "Treballs actius"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:50
msgid "&Stop selected job"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:46
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:51
msgid "Show job &details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:52
msgid "Stop &all non device jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:111
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+msgid "Lower Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+msgid "Upper Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:109
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+msgid "Title Case"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:119
msgid "Editing meta information for %d books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:166
+msgid "Book %d:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:182
+msgid ""
+"Search and replace in text fields using regular expressions. 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. See this "
+"reference for more information, and in particular the 'sub' function."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:192
+msgid ""
+"Note: 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."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:382
+msgid "Search/replace invalid"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:383
+msgid "Search pattern is invalid: %s"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:415
msgid "Applying changes to %d books. This may take a while."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:228
msgid "Edit Meta information"
msgstr "Editar Meta-informació"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:230
msgid "A&utomatically set author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:231
msgid "Author s&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:232
msgid ""
"Specify how the author(s) of this book should be sorted. For example Charles "
"Dickens should be sorted as Dickens, Charles."
@@ -7154,63 +6543,63 @@ msgstr ""
"Especifiqueu com s'ha d'ordenar l'autor(s) d'aquest llibre. Per "
"exemple,ordena Vicent A. Estellés com a Estellés, Vicent A."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:233
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
msgid "&Rating:"
msgstr "&Valoració:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:234
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
msgid "Rating of this book. 0-5 stars"
msgstr "Valora aquest llibre: 0-5 estreles"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:236
msgid "No change"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:237
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
msgid " stars"
msgstr " estreles"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:239
msgid "Add ta&gs: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:241
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
msgid "Open Tag Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:243
msgid "&Remove tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:244
msgid "Comma separated list of tags to remove from the books. "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177
-msgid "Remove all"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:245
msgid "Check this box to remove all tags from the books."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:182
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:246
+msgid "Remove all"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:250
msgid "Remove &format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:251
msgid "&Swap title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:252
msgid ""
"Selected books will be automatically numbered,\n"
"in the order you selected them.\n"
@@ -7218,258 +6607,333 @@ 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:189
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:257
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:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:260
msgid "Remove &stored conversion settings for the selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:193
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:261
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415
msgid "&Basic metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:194
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:262
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:416
msgid "&Custom metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:263
+msgid "Search &field:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:264
+msgid "&Search for:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:265
+msgid "&Replace with:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:266
+msgid "Apply function &after replace:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:267
+msgid "Test &text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:268
+msgid "Test re&sult"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:269
+msgid "Your test:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:270
+msgid "&Search and replace (experimental)"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:91
msgid "Last modified: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:133
msgid "Not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:150
msgid "Specify title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:151
msgid "You must specify a title and author before generating a cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:164
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:169
msgid "Choose formats for "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:200
msgid "No permission"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:201
msgid "You do not have permission to read the following files:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:223
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:228
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:229
msgid "No format selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:240
msgid "Could not read metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:236
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:241
msgid "Could not read metadata from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:284
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:289
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:295
msgid "Could not read cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:285
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:290
msgid "Could not read cover from %s format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:291
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:296
msgid "The cover in the %s format is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:328
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:333
+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:336
+msgid ""
+" The red color indicates that the current author sort does not match the "
+"current author"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:341
msgid "Abort the editing of all remaining books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:466
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:471
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:510
msgid "This ISBN number is valid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:474
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:513
msgid "This ISBN number is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:553
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592
msgid "Cannot use tag editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:554
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:593
msgid "The tags editor cannot be used if you have modified the tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:574
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:613
msgid "Downloading cover..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:586
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:591
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:597
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:625
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:636
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:641
msgid "Cannot fetch cover"
msgstr "No puc aconseguir la coberta"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:587
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:598
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:603
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:626
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:637
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:642
msgid "Could not fetch cover.
'+
+ _(' The green color indicates that the current '
+ 'author sort matches the current author'))
+ self.bad_aus_tooltip = '
'+
+ _(' The red color indicates that the current '
+ 'author sort does not match the current author'))
+
if cancel_all:
self.__abort_button = self.button_box.addButton(self.button_box.Abort)
self.__abort_button.setToolTip(_('Abort the editing of all remaining books'))
@@ -375,6 +398,11 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
self.remove_unused_series)
QObject.connect(self.auto_author_sort, SIGNAL('clicked()'),
self.deduce_author_sort)
+ self.trim_cover_button.clicked.connect(self.trim_cover)
+ self.connect(self.author_sort, SIGNAL('textChanged(const QString&)'),
+ self.author_sort_box_changed)
+ self.connect(self.authors, SIGNAL('editTextChanged(const QString&)'),
+ self.authors_box_changed)
self.connect(self.formats, SIGNAL('itemDoubleClicked(QListWidgetItem*)'),
self.show_format)
self.connect(self.formats, SIGNAL('delete_format()'), self.remove_format)
@@ -467,6 +495,28 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
for c in range(2, len(ans[i].widgets), 2):
w.setTabOrder(ans[i].widgets[c-1], ans[i].widgets[c+1])
+ def authors_box_changed(self, txt):
+ aus = unicode(txt)
+ aus = re.sub(r'\s+et al\.$', '', aus)
+ aus = self.db.author_sort_from_authors(string_to_authors(aus))
+ self.mark_author_sort(normal=(unicode(self.author_sort.text()) == aus))
+
+ def author_sort_box_changed(self, txt):
+ au = unicode(self.authors.text())
+ au = re.sub(r'\s+et al\.$', '', au)
+ au = self.db.author_sort_from_authors(string_to_authors(au))
+ self.mark_author_sort(normal=(au == txt))
+
+ def mark_author_sort(self, normal=True):
+ if normal:
+ col = 'rgb(0, 255, 0, 20%)'
+ else:
+ col = 'rgb(255, 0, 0, 20%)'
+ self.author_sort.setStyleSheet('QLineEdit { color: black; '
+ 'background-color: %s; }'%col)
+ tt = self.ok_aus_tooltip if normal else self.bad_aus_tooltip
+ self.author_sort.setToolTip(tt)
+
def validate_isbn(self, isbn):
isbn = unicode(isbn).strip()
if not isbn:
@@ -720,20 +770,22 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
try:
if self.formats_changed:
self.sync_formats()
- title = unicode(self.title.text())
+ title = unicode(self.title.text()).strip()
self.db.set_title(self.id, title, notify=False)
- au = unicode(self.authors.text())
+ au = unicode(self.authors.text()).strip()
if au:
self.db.set_authors(self.id, string_to_authors(au), notify=False)
- aus = unicode(self.author_sort.text())
+ aus = unicode(self.author_sort.text()).strip()
if aus:
self.db.set_author_sort(self.id, aus, notify=False, commit=False)
self.db.set_isbn(self.id,
- re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())),
+ re.sub(r'[^0-9a-zA-Z]', '',
+ unicode(self.isbn.text()).strip()),
notify=False, commit=False)
self.db.set_rating(self.id, 2*self.rating.value(), notify=False,
commit=False)
- self.db.set_publisher(self.id, unicode(self.publisher.currentText()),
+ self.db.set_publisher(self.id,
+ unicode(self.publisher.currentText()).strip(),
notify=False, commit=False)
self.db.set_tags(self.id, [x.strip() for x in
unicode(self.tags.text()).split(',')], notify=False, commit=False)
@@ -742,7 +794,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
commit=False)
self.db.set_series_index(self.id, self.series_index.value(),
notify=False, commit=False)
- self.db.set_comment(self.id, unicode(self.comments.toPlainText()),
+ self.db.set_comment(self.id,
+ unicode(self.comments.toPlainText()).strip(),
notify=False, commit=False)
d = self.pubdate.date()
d = qt_to_dt(d)
@@ -766,7 +819,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
fname = err.filename if err.filename else 'file'
return error_dialog(self, _('Permission denied'),
_('Could not open %s. Is it being used by another'
- ' program?')%fname, show=True)
+ ' program?')%fname, det_msg=traceback.format_exc(),
+ show=True)
raise
self.save_state()
QDialog.accept(self)
diff --git a/src/calibre/gui2/dialogs/metadata_single.ui b/src/calibre/gui2/dialogs/metadata_single.ui
index 7184192eba..dbf825e706 100644
--- a/src/calibre/gui2/dialogs/metadata_single.ui
+++ b/src/calibre/gui2/dialogs/metadata_single.ui
@@ -151,14 +151,16 @@
Last Page Read: %d (%d%%)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:124
msgid "%s
Last Page Read: Location %d (%d%%)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:143
msgid "Location %d • %s
%s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:152
msgid "Page %d • %s
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:157
msgid "Location %d • %s
"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:34
msgid "Create catalog of books in your calibre library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31
msgid "No books selected to generate catalog for"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:49
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:53
msgid "Generating %s catalog..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:229
msgid "No books found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:55
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:59
msgid ""
"No books to catalog\n"
"Check exclude tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69
msgid "Catalog generated."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:72
msgid "Export Catalog Directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:73
msgid "Select destination for %s.%s"
msgstr ""
@@ -3246,38 +3299,48 @@ msgstr ""
msgid "The folder %s already exists. Delete it first."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:184
+msgid "Rename failed"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:185
+msgid ""
+"Failed to rename the library at %s. The most common cause for this is if one "
+"of the files in the library is open in another program."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:195
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
msgid "Are you sure?"
msgstr "هل أنت متأكّد؟"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:187
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:196
msgid "All files from %s will be permanently deleted. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:216
msgid "No library found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:217
msgid ""
"No existing calibre library was found at %s. It will be removed from the "
"list of known libraries."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:245
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:542
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:254
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:554
msgid "Not allowed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:241
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:250
msgid "You cannot change libraries when a device is connected."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:246
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:255
msgid "You cannot change libraries while jobs are running."
msgstr ""
@@ -3289,19 +3352,19 @@ msgstr "C"
msgid "Convert books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:28
msgid "Convert individually"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:30
msgid "Bulk convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86
msgid "Cannot convert"
msgstr "لا يمكن تحويله"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:115
msgid "Starting conversion of %d book(s)"
msgstr ""
@@ -3313,34 +3376,34 @@ msgstr ""
msgid "Copy selected books to the specified library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:115
msgid "Cannot copy"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
msgid "No library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:121
msgid "No library found at %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:127
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:128
msgid "Copying"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138
msgid "Could not copy books: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:671
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:234
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:424
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:141
msgid "Copied %d books to %s"
msgstr ""
@@ -3352,82 +3415,82 @@ msgstr "Del"
msgid "Remove books"
msgstr "حذف كتب"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:23
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:24
msgid "Remove selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:26
msgid "Remove files of a specific format from selected books.."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:29
msgid "Remove all formats from selected books, except..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:32
msgid "Remove covers from selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:34
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:35
msgid "Remove matching books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:52
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:53
msgid "Cannot delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:66
msgid "Choose formats to be deleted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:84
msgid "Choose formats not to be deleted"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104
msgid "Cannot delete books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:105
msgid "No device is connected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115
msgid "Main memory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:435
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:444
msgid "Storage Card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:437
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:446
msgid "Storage Card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:121
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122
msgid "No books to delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:123
msgid "None of the selected books are on the device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:139
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:195
msgid "Deleting books from device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:161
msgid ""
"The selected books will be permanently deleted and the files removed "
-"from your computer. Are you sure?"
-msgstr "الكتب المختارة سوف تحذف تماماً من حاسوبك. هل أنت متأكّد؟"
+"from your calibre library. Are you sure?"
+msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:180
msgid ""
"The selected books will be permanently deleted from your device. Are "
"you sure?"
@@ -3492,79 +3555,79 @@ msgstr "E"
msgid "Edit metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:28
msgid "Merge book records"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:29
msgid "M"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:30
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:31
msgid "Edit metadata individually"
msgstr "تحرير الميتاداتا فردياً"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:34
msgid "Edit metadata in bulk"
msgstr "تحرير الميتاداتا جملةً"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:37
msgid "Download metadata and covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:40
msgid "Download only metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:42
msgid "Download only covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45
msgid "Download only social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:51
msgid "Merge into first selected book - delete others"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:54
msgid "Merge into first selected book - keep others"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75
msgid "Cannot download metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
msgid "social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:100
msgid "covers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:100
msgid "metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105
msgid "Downloading %s for %d book(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:126
msgid "Failed to download some metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:127
msgid "Failed to download metadata for the following:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:130
msgid "Failed to download metadata:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:131
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:112
@@ -3572,39 +3635,40 @@ msgstr ""
msgid "Error"
msgstr "خطأ"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:141
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177
msgid "Cannot edit metadata"
msgstr "لا يمكن تحرير الميتاداتا"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:202
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:207
msgid "Cannot merge books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:208
msgid "At least two books must be selected for merging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:212
msgid ""
-"All book formats and metadata from the selected books will be added to the "
-"first selected book.
The second and subsequently selected "
-"books will not be deleted or changed.
Please confirm you want to "
-"proceed."
+"Book formats and metadata from the selected books will be added to the "
+"first selected book. 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:221
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:224
msgid ""
-"All book formats and metadata from the selected books will be merged into "
-"the first selected book.
After merger the second and "
-"subsequently selected books will be deleted.
All book formats "
-"of the first selected book will be kept and any duplicate formats in the "
-"second and subsequently selected books will be permanently deleted "
-"from your computer.
Are you sure you want to proceed?"
+"Book formats and metadata from the selected books will be merged into the "
+"first selected book. 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 computer.
Are you sure "
+"you want to proceed?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:233
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:237
msgid ""
"You are about to merge more than 5 books. Are you sure you want to "
"proceed?"
@@ -3684,53 +3748,53 @@ msgid "S"
msgstr "S"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:46
msgid "Save to disk"
msgstr "حفظ إلى القرص"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:48
msgid "Save to disk in a single directory"
msgstr "حفظ إلى القرص في دليل واحد"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:69
msgid "Save only %s format to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:72
msgid "Save only %s format to disk in a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91
msgid "Cannot save to disk"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:93
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:94
msgid "Choose destination directory"
msgstr "إختيار دليل الوجهة"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:102
msgid ""
"You are trying to save files into the calibre library. This can cause "
"corruption of your library. Save to disk is meant to export files from your "
"calibre library elsewhere."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:135
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136
msgid "Error while saving"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:137
msgid "There was an error while saving."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:143
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:144
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145
msgid "Could not save some books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:146
msgid "Click the show details button to see which ones."
msgstr ""
@@ -3742,11 +3806,11 @@ msgstr ""
msgid "I"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:26
msgid "No detailed info available"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:27
msgid "No detailed information is available for books on the device."
msgstr ""
@@ -3754,35 +3818,35 @@ msgstr ""
msgid "Similar books..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
msgid "Alt+A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
msgid "Books by same author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
msgid "Books in this series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
msgid "Alt+Shift+S"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
msgid "Alt+P"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
msgid "Books by this publisher"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28
msgid "Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28
msgid "Books with the same tags"
msgstr "كتب بنفس الوسوم"
@@ -3791,29 +3855,29 @@ msgid "V"
msgstr "V"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32
msgid "View"
msgstr "عرض"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:33
msgid "View specific format"
msgstr "عرض تهيئة معينة"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:155
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156
msgid "Cannot view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
msgid "Choose the format to view"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109
msgid "Multiple Books Selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:110
msgid ""
"You are attempting to open %d books. Opening too many books at once can be "
"slow and have a negative effect on the responsiveness of your computer. Once "
@@ -3821,11 +3885,11 @@ msgid ""
"continue?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119
msgid "Cannot open folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:157
msgid "%s has no available formats."
msgstr ""
@@ -3850,7 +3914,7 @@ msgid "The specified directory could not be processed."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:228
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:804
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:807
msgid "No books"
msgstr ""
@@ -3969,19 +4033,19 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:84
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:85
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161
@@ -4044,8 +4108,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:313
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067
msgid "Path"
msgstr "المسار"
@@ -4055,15 +4119,15 @@ msgstr "المسار"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:307
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:100
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Formats"
msgstr "التهيئات"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:25
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:891
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:886
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1070
msgid "Collections"
msgstr ""
@@ -4073,11 +4137,11 @@ msgid "Click to open"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:48
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:305
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:311
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:317
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1074
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1078
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:300
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:306
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:312
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1076
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1080
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83
@@ -4128,14 +4192,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:81
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:31
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:66
@@ -4145,7 +4209,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:42
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:60
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45
@@ -4153,14 +4217,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:82
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35
-#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111
#: /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/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
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:65
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:97
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:105
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:63
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:81
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:46
@@ -4249,30 +4313,23 @@ msgstr ""
msgid "E-book options"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
-#: /home/kovid/work/calibre/src/calibre/library/catalog.py:550
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1657
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1675
-msgid "Catalog"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77
msgid "'Don't include this book' tag:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78
msgid "'Mark this book as read' tag:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:79
msgid "Additional note tag prefix:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:80
msgid "Regex pattern describing tags to exclude as genres:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:81
msgid ""
"Regex tips:\n"
"- The default regex - \\[.+\\] - excludes genre tags of the form [tag], "
@@ -4281,18 +4338,22 @@ msgid ""
"Genre Section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:84
msgid "Include 'Titles' Section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:85
msgid "Include 'Recently Added' Section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:86
msgid "Sort numbers as text"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:87
+msgid "Include 'Series' Section"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
msgid "Tab template for catalog.ui"
msgstr ""
@@ -4304,11 +4365,11 @@ msgid ""
"specified in the Preferences"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:68
msgid "Bulk Convert"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185
msgid "Options specific to the output format."
msgstr ""
@@ -4505,15 +4566,15 @@ msgid "&Base font size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126
msgid "Font size &key:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@@ -4564,69 +4625,73 @@ msgstr ""
msgid "Justify text"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123
msgid "&Disable font size rescaling"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124
msgid "Base &font size:"
msgstr "حجم الخط& الأساسي:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127
msgid "Wizard to help you choose an appropriate font size key"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129
msgid "Line &height:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131
msgid "Input character &encoding:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132
msgid "Remove &spacing between paragraphs"
msgstr "حذف الفراغات& بين الفقرات"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133
msgid "Indent size:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134
msgid ""
"
"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:189
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134
msgid " is not a valid picture"
msgstr " ليست صورة صالحة"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407
msgid "Book Cover"
msgstr "غلاف الكتاب"
@@ -4732,7 +4797,7 @@ msgid "Use cover from &source file"
msgstr "استخدم غلاف من المصدر&"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408
msgid "Change &cover image:"
msgstr "تغيير صورة الغلاف&:"
@@ -4751,7 +4816,7 @@ msgid "Change the title of this book"
msgstr "تغيير عنوان هذا الكتاب"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:229
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370
msgid "&Author(s): "
msgstr "ال&مؤلف: "
@@ -4767,19 +4832,19 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:175
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:238
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
msgid "&Publisher: "
msgstr "&الناشر: "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382
msgid "Ta&gs: "
msgstr "الو&سوم: "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:240
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383
msgid ""
"Tags categorize the book. This is particularly useful while searching. "
"
They can be any words or phrases, separated by commas."
@@ -4788,22 +4853,22 @@ msgstr ""
"مجموعة كلمات، مفرقة بفاصلة."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:247
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
msgid "&Series:"
msgstr "&سلسلات:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:185
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:186
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388
msgid "List of known series. You can add new series."
msgstr "قائمة السلسلات المعروفة. بإمكانك إضافة سلسلات جديدة."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:188
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
msgid "Book "
msgstr "الكتاب "
@@ -4962,7 +5027,7 @@ msgid "Regex:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:55
-#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122
msgid "Test"
msgstr "تجربة"
@@ -5000,66 +5065,70 @@ msgid ""
"Fine tune the detection of chapter headings and other document structure."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37
msgid "Detect chapters at (XPath expression):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38
msgid "Insert page breaks before (XPath expression):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40
msgid "Header regular expression:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:43
msgid "Footer regular expression:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87
msgid "Invalid regular expression"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:58
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:88
msgid "Invalid regular expression: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39
msgid "Invalid XPath"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:66
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:40
msgid "The XPath expression %s is invalid."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:81
msgid "Chapter &mark:"
msgstr "ع&لامة الفصل:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:82
msgid "Remove first &image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:83
msgid "Insert &metadata as page at start of book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64
-msgid "&Preprocess input file to possibly improve structure detection"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:84
msgid "Remove F&ooter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:66
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:85
msgid "Remove H&eader"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86
+msgid "Line &un-wrap factor during preprocess:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87
+msgid "&Preprocess input file to possibly improve structure detection"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16
msgid ""
"Table of\n"
@@ -5281,7 +5350,7 @@ msgid " index:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:451
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:193
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:256
msgid "Automatically number books in this series"
msgstr ""
@@ -5383,142 +5452,142 @@ msgstr ""
msgid "Select folder to open as device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:677
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676
msgid "Error talking to device"
msgstr "خطأ في الاتصال بالجهاز"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:677
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:717
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716
msgid "Device: "
msgstr "الجهاز: "
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:719
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:718
msgid " detected."
msgstr " تم كشفه."
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:805
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:808
msgid "selected to send"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Choose format to send to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:822
msgid "No device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823
msgid "Cannot send: No device is connected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:826
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:830
msgid "No card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:824
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:828
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:831
msgid "Cannot send: Device has no storage card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872
msgid "E-book:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:875
msgid "Attached, you will find the e-book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107
msgid "by"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:874
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:877
msgid "in the %s format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:887
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:890
msgid "Sending email to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:917
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1018
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1080
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1199
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:920
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:928
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1202
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1210
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:918
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:921
msgid "Auto convert the following books before sending via email?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:926
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:929
msgid ""
"Could not email the following books as no suitable formats were found:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:944
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:947
msgid "Failed to email books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:945
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:948
msgid "Failed to email the following books:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:949
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952
msgid "Sent by email:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:977
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:980
msgid "News:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:978
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:981
msgid "Attached is the"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:989
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:992
msgid "Sent news to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1019
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1081
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1200
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1022
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1203
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1049
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1052
msgid "Sending catalogs to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1113
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1116
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1166
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1211
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:1270
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1273
msgid "No space on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1271
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1274
msgid ""
"
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:588
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:627
msgid "The download timed out."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:631
msgid "Could not find cover for this book. Try specifying the ISBN first."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:643
msgid ""
"For the error message from each cover source, click Show details below."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
msgid "Bad cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
msgid "The cover is not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:684
msgid "There were errors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:685
msgid "There were errors downloading social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:714
msgid "Cannot fetch metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:715
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:759
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:798
msgid "Permission denied"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:799
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
@@ -6114,76 +6270,87 @@ msgstr ""
msgid "Author S&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
msgid ""
-"Automatically create the author sort entry based on the current author entry"
-msgstr "ينشئ مدخل ترتيب المؤلف حسب مدخل المؤلف الحالي"
+"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:387
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
+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."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389
msgid "Remove unused series (Series that have no books)"
msgstr "حذف سلسلات غير مستخدمة (سلسلات التي لا تحتوي على كتب)"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391
msgid "IS&BN:"
msgstr "IS&BN:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392
msgid "Publishe&d:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
msgid "dd MMM yyyy"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396
msgid "&Date:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
msgid "&Comments"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398
msgid "&Fetch metadata from server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399
msgid "Available Formats"
msgstr "التهيئات المتوفرة"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
msgid "Add a new format for this book to the database"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
msgid "Remove the selected formats for this book from the database."
msgstr "حذف التهيئات المختارة لهذا الكتاب من قاعدة البيانات."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404
msgid "Set the cover for the book from the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406
msgid "Update metadata from the metadata in the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409
msgid "&Browse"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410
msgid "Reset cover to default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410
-msgid "Download &cover"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412
+msgid "Download co&ver"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413
msgid "Generate a default cover based on the title and author"
msgstr ""
-#: /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
msgid "&Generate cover"
msgstr ""
@@ -6488,12 +6655,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:80
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:82
msgid "Authors"
msgstr "المؤلفون"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113
msgid "Publishers"
msgstr "الناشرون"
@@ -6614,12 +6781,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:503
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:501
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:504
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:502
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -6675,7 +6842,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:115
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120
msgid "&Test"
msgstr "&تجربة"
@@ -6855,7 +7022,7 @@ msgstr ""
msgid "Recipe source code (python)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112
msgid ""
"\n"
@@ -6879,27 +7046,27 @@ msgid ""
"metadata entries are documented in tooltips.
"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:110
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:114
msgid "Hide column %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:119
msgid "Sort on %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:116
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:120
msgid "Ascending"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:123
msgid "Descending"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:131
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:135
msgid "Change text alignment for %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:137
msgid "Left"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:137
msgid "Right"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:138
msgid "Center"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:153
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:157
msgid "Show column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:165
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:169
msgid "Restore default layout"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:543
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:555
msgid ""
"Dropping onto a device is not supported. First add the book to the calibre "
"library."
@@ -7242,7 +7405,7 @@ msgid "No matches for the search phrase %s were found."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:441
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:433
msgid "No matches found"
msgstr ""
@@ -7434,7 +7597,7 @@ msgstr ""
msgid "No matches found for this book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:23
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:36
msgid ""
"Restore settings to default values. You have to click Apply to actually save "
"the default settings."
@@ -7580,15 +7743,15 @@ msgstr ""
msgid "Use internal &viewer for:"
msgstr "استخدم المستعرض& الداخلي في:"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:94
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96
msgid "You must select a column to delete it"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:99
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101
msgid "The selected column is not a custom column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
@@ -7818,125 +7981,135 @@ msgstr ""
msgid "Wide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:51
msgid "Medium"
msgstr "متوسط"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:51
msgid "Small"
msgstr "صغير"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:51
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:52
msgid "Large"
msgstr "كبير"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:55
msgid "Always"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:55
msgid "Automatic"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:55
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:56
msgid "Never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:98
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:106
msgid "User Interface &layout (needs restart):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:99
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:107
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:108
msgid "Choose &language (requires restart):"
msgstr "إختر ال&لغة (يحتاج إعادة تشغيل):"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:109
msgid "Show &average ratings in the tags browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:102
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:110
msgid "Disable all animations. Useful if you have a slow/old computer."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:111
msgid "Disable &animations"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:104
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:112
msgid "Enable system &tray icon (needs restart)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:105
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:113
msgid "Show &splash screen at startup"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:106
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:114
msgid "Disable ¬ifications in system tray"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:107
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:115
msgid "Use &Roman numerals for series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:108
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:116
msgid "Show cover &browser in a separate window (needs restart)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:109
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:117
msgid "Search as you type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:110
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:118
msgid "&Toolbar"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:111
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:119
msgid "&Icon size:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:112
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:120
msgid "Show &text under icons:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:172
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:121
+msgid "&Split the toolbar into two toolbars"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:215
msgid "&Apply"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:218
msgid "&Cancel"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:184
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:222
msgid "Restore &defaults"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:223
msgid "Save changes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:224
msgid "Cancel and return to overview"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:259
msgid "Restoring to defaults not supported for"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:247
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120
-msgid "Restart needed"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:294
msgid ""
"Some of the changes you made require a restart. Please restart calibre as "
"soon as possible."
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:297
+msgid ""
+"The changes you have made require calibre be restarted immediately. You will "
+"not be allowed set any more preferences, until you restart."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120
+msgid "Restart needed"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:49
msgid "Checking database integrity"
msgstr ""
@@ -8365,7 +8538,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:50
msgid ""
"Values for the tweaks are shown below. Edit them to change the behavior of "
-"calibre"
+"calibre. Your changes will only take effect after a restart of calibre."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:51
@@ -8509,53 +8682,53 @@ msgstr ""
msgid "Manage User Categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:435
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:300
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:433
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:304
msgid "Searches"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:513
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:511
msgid "Duplicate search name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:514
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:512
msgid "The saved search name %s is already used."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:770
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:769
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:770
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:769
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:771
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:770
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:774
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:773
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:780
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:779
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:780
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:779
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:785
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:784
msgid ""
"When selecting multiple entries in the Tag Browser match any or all of them"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:789
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:788
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:792
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:791
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -8588,11 +8761,11 @@ msgstr ""
msgid "Fetch news from "
msgstr "احصل على الأخبار من "
-#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:309
msgid "Convert existing"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:310
msgid ""
"The following books have already been converted to %s format. Do you wish to "
"reconvert them?"
@@ -8655,7 +8828,7 @@ msgstr ""
msgid "WARNING: Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:573
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:583
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -8828,7 +9001,7 @@ msgid "Options to customize the ebook viewer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:42
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:676
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:687
msgid "Remember last used window size"
msgstr ""
@@ -8968,88 +9141,92 @@ msgstr ""
msgid "Book format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:186
msgid "Position in book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:193
msgid "Go to a reference. To get reference numbers, use the reference mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:200
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:201
msgid "Search for text in book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:269
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:270
msgid "Print Preview"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:300
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:301
msgid "Connecting to dict.org to lookup: %s…"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:399
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:400
msgid "Choose ebook"
msgstr "إختيار الكتاب الإلكتروني"
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:400
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:401
msgid "Ebooks"
msgstr "كتب إلكترونية"
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:419
-msgid "Add bookmark"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:419
-msgid "Enter title for bookmark:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:442
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:434
msgid "No matches found for: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:479
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:471
msgid "Loading flow..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:515
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:507
msgid "Laying out %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:544
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:538
+msgid "Bookmark #%d"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:542
+msgid "Add bookmark"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:543
+msgid "Enter title for bookmark:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:553
msgid "Manage Bookmarks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:579
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:590
msgid "Loading ebook..."
msgstr "يتم تحميل الكتاب الإلكتروني..."
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:587
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:598
msgid "DRM Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:588
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:599
msgid "
Last Page Read: %d (%d%%)"
-msgstr ""
+msgstr "%s
Última pàgina llegida: %d (%d%%)"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:124
msgid "%s
Last Page Read: Location %d (%d%%)"
-msgstr ""
+msgstr "%s
Última pàgina llegida: localització %d (%d%%)"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:142
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:143
msgid "Location %d • %s
%s
"
-msgstr ""
+msgstr "Localització %d • %s
%s
"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:152
msgid "Page %d • %s
"
-msgstr ""
+msgstr "Pàgina %d • %s
"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:157
msgid "Location %d • %s
"
-msgstr ""
+msgstr "Localització %d • %s
"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:20
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:34
msgid "Create catalog of books in your calibre library"
-msgstr ""
+msgstr "Crea catàleg de llibres de la teva biblioteca"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:31
msgid "No books selected to generate catalog for"
-msgstr ""
+msgstr "No hi ha llibres seleccionats per generar el catàleg"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:49
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:53
msgid "Generating %s catalog..."
-msgstr ""
+msgstr "Generant %s catàleg..."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:229
msgid "No books found"
msgstr "No trobo llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:55
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:59
msgid ""
"No books to catalog\n"
"Check exclude tags"
msgstr ""
+"No hi ha llibres per catalogar\n"
+"Comprova les etiquetes d'exclusió"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69
msgid "Catalog generated."
msgstr "Catàleg generat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:72
msgid "Export Catalog Directory"
-msgstr ""
+msgstr "Directori d'exportació del catàleg"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:73
msgid "Select destination for %s.%s"
-msgstr ""
+msgstr "Seleccioneu una destinació per a %s.%s"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:81
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:51
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:111
msgid "%d books"
-msgstr ""
+msgstr "%d llibres"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:82
msgid "Choose calibre library to work with"
-msgstr ""
+msgstr "Trieu una biblioteca del calibre per treballar"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:91
msgid "Switch/create library..."
-msgstr ""
+msgstr "Canvia/crea una biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99
msgid "Quick switch"
-msgstr ""
+msgstr "Canvi ràpid"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:101
msgid "Rename library"
-msgstr ""
+msgstr "Canvia el nom de la biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:103
msgid "Delete library"
-msgstr ""
+msgstr "Esborra la biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:168
msgid "Rename"
-msgstr ""
+msgstr "Canvia el nom"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:169
msgid "Choose a new name for the library %s. "
-msgstr ""
+msgstr "Tria un nom nou per a la biblioteca %s. "
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:170
msgid "Note that the actual library folder will be renamed."
msgstr ""
+"Tingueu en compte que es canviarà el norm a la carpeta de la biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:185
msgid "Already exists"
-msgstr ""
+msgstr "Ja existeix"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:178
msgid "The folder %s already exists. Delete it first."
-msgstr ""
+msgstr "La carpeta %s ja existeix. Esborreu-la primer."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:186
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:753
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:184
+msgid "Rename failed"
+msgstr "Ha fallat el canvi de nom"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:185
+msgid ""
+"Failed to rename the library at %s. The most common cause for this is if one "
+"of the files in the library is open in another program."
+msgstr ""
+"Ha fallat el canvi de nom de la biblioteca a %s. La causa més habitual és "
+"que un altre programa té obert un dels fitxers de la bibilioteca ."
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:53
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
msgid "Are you sure?"
msgstr "N'estàs segur?"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:187
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:196
msgid "All files from %s will be permanently deleted. Are you sure?"
msgstr ""
+"S'esborraran permanentment tots els fitxers de %s. N'esteu segur?"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:216
msgid "No library found"
-msgstr ""
+msgstr "No s'ha trobat cap llibreria"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:217
msgid ""
"No existing calibre library was found at %s. It will be removed from the "
"list of known libraries."
msgstr ""
+"No hi ha cap biblioteques del calibre a %s. S'esborrarà de la llista de "
+"biblioteques conegudes."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:245
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100
-#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:542
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:254
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:554
msgid "Not allowed"
-msgstr ""
+msgstr "No està permès"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:241
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:250
msgid "You cannot change libraries when a device is connected."
msgstr ""
+"No podeu canviar les biblioteques quan hi ha un dispositiu connectat."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:246
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:255
msgid "You cannot change libraries while jobs are running."
-msgstr ""
+msgstr "No podeu canviar les biblioteques mentre hi ha treballs en execució."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:22
msgid "C"
-msgstr ""
+msgstr "C"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:22
msgid "Convert books"
msgstr "Converteix llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:28
msgid "Convert individually"
msgstr "Converteix individualment"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:30
msgid "Bulk convert"
msgstr "Converteix tots"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86
msgid "Cannot convert"
msgstr "No puc convertir-lo"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:115
msgid "Starting conversion of %d book(s)"
-msgstr ""
+msgstr "S'està començant la conversió de %d llibre(s)"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:79
msgid "Copy to library"
-msgstr ""
+msgstr "Copia a la biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:80
msgid "Copy selected books to the specified library"
-msgstr ""
+msgstr "Copia els llibres seleccionats a la biblioteca que s'ha especificat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:115
msgid "Cannot copy"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:119
-msgid "No library"
-msgstr ""
+msgstr "No es pot copiar"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:120
+msgid "No library"
+msgstr "No hi ha biblioteca"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:121
msgid "No library found at %s"
-msgstr ""
+msgstr "No s'ha trobat cap biblioteca a %s"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:123
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:127
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:128
msgid "Copying"
-msgstr ""
+msgstr "S'està copiant"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138
msgid "Could not copy books: "
-msgstr ""
+msgstr "No s'ha pogut copiar els llibres: "
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:234
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:670
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:424
msgid "Failed"
-msgstr ""
+msgstr "Ha fallat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:141
msgid "Copied %d books to %s"
-msgstr ""
+msgstr "S'ha copiat %d llibres a %s"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:18
msgid "Del"
@@ -3538,121 +3896,128 @@ msgstr "Esborra"
msgid "Remove books"
msgstr "Suprimeix llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:23
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:24
msgid "Remove selected books"
-msgstr ""
+msgstr "Elimina els llibres que s'han seleccionat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:26
msgid "Remove files of a specific format from selected books.."
msgstr ""
+"Elimina els fitxers d'un format específic dels llibres que s'han "
+"seleccionat.."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:29
msgid "Remove all formats from selected books, except..."
msgstr ""
+"Elimina tots els formats dels llibres que s'han seleccionat escepte..."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:32
msgid "Remove covers from selected books"
-msgstr ""
+msgstr "Elimina les portades dels llibres que s'han seleccionat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:34
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:35
msgid "Remove matching books from device"
-msgstr ""
+msgstr "Elimina els llibres que concordin del dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:52
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:53
msgid "Cannot delete"
msgstr "No puc esborrar"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:66
msgid "Choose formats to be deleted"
-msgstr ""
+msgstr "Trieu els formats que s'esborraran"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:84
msgid "Choose formats not to be deleted"
-msgstr ""
+msgstr "Trieu els formats que no s'esborraran"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104
msgid "Cannot delete books"
msgstr "No puc esborrar llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:104
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:105
msgid "No device is connected"
-msgstr ""
+msgstr "No hi ha cap dispositiu connectat"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115
msgid "Main memory"
msgstr "Memòria principal"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:115
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:436
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:445
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:435
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:444
msgid "Storage Card A"
msgstr "Tarja de memòria A"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:438
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:447
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:437
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:446
msgid "Storage Card B"
msgstr "Tarja de memòria B"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:121
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122
msgid "No books to delete"
msgstr "Cap llibre per esborrar"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:123
msgid "None of the selected books are on the device"
-msgstr ""
+msgstr "Cap dels llibres que s'han seleccionat són al dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:139
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:195
msgid "Deleting books from device."
-msgstr ""
+msgstr "S'estan eliminant llibres del dispositiu."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:161
msgid ""
"The selected books will be permanently deleted and the files removed "
-"from your computer. Are you sure?"
+"from your calibre library. Are you sure?"
msgstr ""
+"Els llibres que s'han seleccionat s'eliminaran permanentment i els "
+"fitxers es suprimiran de la vostra llibreria del calibre. N'esteu segur?"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:180
msgid ""
"The selected books will be permanently deleted from your device. Are "
"you sure?"
msgstr ""
+"Els llibres que s'han seleccionat s'eliminaran permanentment del "
+"dispositiu. N'esteu segur?"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:26
msgid "Connect to folder"
-msgstr ""
+msgstr "Connecta a una carpeta"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:31
msgid "Connect to iTunes"
-msgstr ""
+msgstr "Connecta a iTunes"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:40
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:48
msgid "Start Content Server"
-msgstr ""
+msgstr "Inicia el servidor de continguts"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:50
msgid "Stop Content Server"
-msgstr ""
+msgstr "Atura el servidor de contingut"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:69
msgid "Email to"
-msgstr ""
+msgstr "Envia per correu electrònic a"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:69
msgid " and delete from library"
-msgstr ""
+msgstr " i esborra'l de la biblioteca"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:81
msgid "Setup email based sharing of books"
-msgstr ""
+msgstr "Configura la compartició de llibres per correu electrònic"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:98
msgid "D"
-msgstr ""
+msgstr "D"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:98
msgid "Send to device"
@@ -3660,15 +4025,15 @@ msgstr "Envia al dispositiu"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:117
msgid "Connect/share"
-msgstr ""
+msgstr "Connecta/comparteix"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_collections.py:13
msgid "Manage collections"
-msgstr ""
+msgstr "Gestiona les coo·leccions"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_collections.py:14
msgid "Manage the collections on this device"
-msgstr ""
+msgstr "Gestiona les col·leccions d'aquest dispositiu"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:24
msgid "E"
@@ -3676,129 +4041,141 @@ msgstr "E"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:24
msgid "Edit metadata"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:27
-msgid "Merge book records"
-msgstr ""
+msgstr "Edita metadades"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:28
-msgid "M"
-msgstr ""
+msgid "Merge book records"
+msgstr "Fusiona els registres de llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:30
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:29
+msgid "M"
+msgstr "M"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:31
msgid "Edit metadata individually"
msgstr "Edita metadades individualment"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:34
msgid "Edit metadata in bulk"
msgstr "Edita metadades en massa"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:37
msgid "Download metadata and covers"
-msgstr ""
+msgstr "Descarrega metadades i cobertes"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:40
msgid "Download only metadata"
-msgstr ""
+msgstr "Descarrega només les metadades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:42
msgid "Download only covers"
-msgstr ""
+msgstr "Descarrega només les portades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45
msgid "Download only social metadata"
-msgstr ""
+msgstr "Descarrega només les metadades socials"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:51
msgid "Merge into first selected book - delete others"
-msgstr ""
+msgstr "Fusiona al primer llibre que s'ha seleccionat - esborra la resta"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:54
msgid "Merge into first selected book - keep others"
-msgstr ""
+msgstr "Fusiona al primer llibre que s'ha seleccionat - conserva la resta"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75
msgid "Cannot download metadata"
-msgstr ""
+msgstr "No es poden descarregar les metadades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
msgid "social metadata"
msgstr "Metadades socials"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:100
msgid "covers"
msgstr "portades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:100
msgid "metadata"
-msgstr ""
+msgstr "metadades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105
msgid "Downloading %s for %d book(s)"
-msgstr ""
+msgstr "S'està descarregant %s per a %d llibre(s)"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:126
msgid "Failed to download some metadata"
-msgstr ""
+msgstr "No s'ha pogut descarregar algunes metadedes"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:127
msgid "Failed to download metadata for the following:"
-msgstr ""
+msgstr "No s'ha pogut descarregar les metadades de:"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:130
msgid "Failed to download metadata:"
-msgstr ""
+msgstr "No s'ha pogut descarregar les metadades:"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:129
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:608
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1005
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:131
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:607
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:112
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54
msgid "Error"
msgstr "Error"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:141
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177
msgid "Cannot edit metadata"
msgstr "No puc editar les meta-dades"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:202
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:207
msgid "Cannot merge books"
-msgstr ""
+msgstr "No es pot fusionar els llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:208
msgid "At least two books must be selected for merging"
-msgstr ""
+msgstr "Cal seleccionar almenys dos llibres per fer una fusió"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:212
msgid ""
-"All book formats and metadata from the selected books will be added to the "
-"first selected book.
The second and subsequently selected "
-"books will not be deleted or changed.
Please confirm you want to "
-"proceed."
+"Book formats and metadata from the selected books will be added to the "
+"first selected book. ISBN will not be merged.
The "
+"second and subsequently selected books will not be deleted or "
+"changed.
Please confirm you want to proceed."
msgstr ""
+"S'afegiran els formats i les metadades dels llibres que s'han seleccionat al "
+"primer dels llibres que s'ha seleccionat. L'ISBN no es "
+"fusionarà. El segon llibre i els que s'hagin seleccionat a continuació no "
+"s'esborraran ni canviaran
Si us plau confirmeu que voleu continuar."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:224
msgid ""
-"All book formats and metadata from the selected books will be merged into "
-"the first selected book.
After merger the second and "
-"subsequently selected books will be deleted.
All book formats "
-"of the first selected book will be kept and any duplicate formats in the "
-"second and subsequently selected books will be permanently deleted "
-"from your computer.
Are you sure you want to proceed?"
+"Book formats and metadata from the selected books will be merged into the "
+"first selected book. 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 computer.
Are you sure "
+"you want to proceed?"
msgstr ""
+"Es fusionaran els formats i les metadades dels llibres que s'han seleccionat "
+"al primer dels llibres seleccionats. L'ISBN no es fusionarà. "
+"Després de fusionar-los el segon llibre i els que s'hagin seleccionat a "
+"continuació s'esborraran de forma permanent de vostre "
+"ordinador.
Esteu segur que voleu continuar?"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:233
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:237
msgid ""
"You are about to merge more than 5 books. Are you sure you want to "
"proceed?"
msgstr ""
+"Esteu a punt de fusionar més de 5 llibres. Esteu segur que voleu "
+"continuar?"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:18
msgid "F"
-msgstr ""
+msgstr "F"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:18
msgid "Fetch news"
@@ -3806,19 +4183,19 @@ msgstr "Recull notícies (RSS)"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:53
msgid "Fetching news from "
-msgstr ""
+msgstr "S'està aconseguint notícies de "
#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:67
msgid " fetched."
-msgstr ""
+msgstr " s'han obtingut"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16
msgid "Browse the calibre User Manual"
-msgstr ""
+msgstr "Explora el manual d'usuari del calibre"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16
msgid "F1"
-msgstr ""
+msgstr "F1"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16
msgid "Help"
@@ -3826,19 +4203,19 @@ msgstr "Ajuda"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/open.py:14
msgid "Open containing folder"
-msgstr ""
+msgstr "Obre la carpeta que el conté"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/open.py:15
msgid "O"
-msgstr ""
+msgstr "O"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:17
msgid "Ctrl+P"
-msgstr ""
+msgstr "Ctrl+P"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:23
msgid "Run welcome wizard"
-msgstr ""
+msgstr "Executa l'asitent de benvinguda"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:33
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:38
@@ -3851,173 +4228,180 @@ msgstr "No puc configurar-lo amb treballs processant-se"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:39
msgid "Cannot configure before calibre is restarted."
-msgstr ""
+msgstr "No es pot congigurar fins que el calibre es torni a engegar."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14
msgid "&Restart"
-msgstr ""
+msgstr "&Reinicia"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14
msgid "Ctrl+R"
-msgstr ""
+msgstr "Ctrl+R"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:24
msgid "Save single format to disk..."
-msgstr ""
+msgstr "Desa en un sol format al disc..."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40
msgid "S"
-msgstr ""
+msgstr "S"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:40
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:45
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:46
msgid "Save to disk"
msgstr "Desa al disc"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:47
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:48
msgid "Save to disk in a single directory"
-msgstr ""
+msgstr "Desa al disc en una única carpeta"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:68
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:69
msgid "Save only %s format to disk"
-msgstr ""
+msgstr "Desa al disc només en el format %s"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:72
msgid "Save only %s format to disk in a single directory"
-msgstr ""
+msgstr "Desa al disc en una única carpeta només en el format %s"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:90
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91
msgid "Cannot save to disk"
msgstr "No puc desar al disc"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:93
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:94
msgid "Choose destination directory"
-msgstr ""
+msgstr "Tria el directori de destí"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:102
msgid ""
"You are trying to save files into the calibre library. This can cause "
"corruption of your library. Save to disk is meant to export files from your "
"calibre library elsewhere."
msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:135
-msgid "Error while saving"
-msgstr ""
+"Esteu intentant desar fitxers a la biblioteca del calibre. Això pot causar "
+"corrupció a la vostra llibreria. Desar al disc està fet per exportar fitxers "
+"des de la vostra llibreria del calibre a un altre lloc."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:136
+msgid "Error while saving"
+msgstr "Error mentres es desava"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:137
msgid "There was an error while saving."
-msgstr ""
+msgstr "Hi ha hagut un error mentres es desava."
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:143
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:144
-msgid "Could not save some books"
-msgstr ""
-
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:145
+msgid "Could not save some books"
+msgstr "No s'ha pogut desar alguns llibres"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:146
msgid "Click the show details button to see which ones."
-msgstr ""
+msgstr "Feu clic al botó \"Mostra detalls\" per veure quins són."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
msgid "Show book details"
-msgstr ""
+msgstr "Mostra detalls del llibre"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:17
msgid "I"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:25
-msgid "No detailed info available"
-msgstr ""
+msgstr "I"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:26
+msgid "No detailed info available"
+msgstr "No es disposa d'informació detallada"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:27
msgid "No detailed information is available for books on the device."
msgstr ""
+"No es disposa d'informació detallada per als llibres d'aquest dispositiu"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:17
msgid "Similar books..."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
-msgid "Alt+A"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:23
-msgid "Books by same author"
-msgstr ""
+msgstr "Llibres semblants..."
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
-msgid "Books in this series"
-msgstr ""
+msgid "Alt+A"
+msgstr "Alt+A"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:24
+msgid "Books by same author"
+msgstr "Llibres del mateix autor"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:25
+msgid "Books in this series"
+msgstr "Llibres d'aquesta sèrie"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
msgid "Alt+Shift+S"
-msgstr ""
+msgstr "Alt+Maj+S"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
msgid "Alt+P"
-msgstr ""
+msgstr "Alt+P"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:26
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
msgid "Books by this publisher"
-msgstr ""
+msgstr "Llibres d'aquesta editorial"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28
msgid "Alt+T"
-msgstr ""
+msgstr "Alt+T"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/similar_books.py:28
msgid "Books with the same tags"
-msgstr ""
+msgstr "Llibres amb les mateixes etiquetes"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24
msgid "V"
-msgstr ""
+msgstr "V"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:24
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32
msgid "View"
msgstr "Mostra"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:33
msgid "View specific format"
-msgstr ""
+msgstr "Visualitza un format concret"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:94
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:155
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:95
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156
msgid "Cannot view"
msgstr "No puc mostrar-lo"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
msgid "Choose the format to view"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:108
-msgid "Multiple Books Selected"
-msgstr ""
+msgstr "Trieu el format de visualització"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:109
+msgid "Multiple Books Selected"
+msgstr "S'ha seleccionat múltiples llibres"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:110
msgid ""
"You are attempting to open %d books. Opening too many books at once can be "
"slow and have a negative effect on the responsiveness of your computer. Once "
"started the process cannot be stopped until complete. Do you wish to "
"continue?"
msgstr ""
+"Esteu intentant obrir %d llibres. Obrir massa llibres simultàniament pot ser "
+"lent i tenir un efecte negatiu a la resposta del vostre equip. Si s'inicia "
+"el procés no es pot aturar fins que s'acabi. Voleu continuar?"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:118
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:119
msgid "Cannot open folder"
-msgstr ""
+msgstr "No es pot obrir la carpeta"
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:157
msgid "%s has no available formats."
-msgstr ""
+msgstr "No hi ha formats disponibles a %s."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54
msgid "Searching in"
-msgstr ""
+msgstr "S'està cercant a"
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:197
msgid "Adding..."
@@ -4025,18 +4409,18 @@ msgstr "Afegint..."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:210
msgid "Searching in all sub-directories..."
-msgstr ""
+msgstr "S'està cercant a totes les subcarpetes..."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:223
msgid "Path error"
-msgstr ""
+msgstr "Error al camí"
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:224
msgid "The specified directory could not be processed."
-msgstr ""
+msgstr "La carpeta que s'ha especificat no es pot processar."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:228
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:807
msgid "No books"
msgstr "Cap llibre"
@@ -4046,13 +4430,16 @@ msgstr "Afegit"
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:306
msgid "Adding failed"
-msgstr ""
+msgstr "Ha fallat en afegir"
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:307
msgid ""
"The add books process seems to have hung. Try restarting calibre and adding "
"the books in smaller increments, until you find the problem book."
msgstr ""
+"Sembla que el procés d'afegir llibres no respon. Intenteu tornar a iniciar "
+"el calibre i afegiu els llibres en grups més petits, fins que trobeu el "
+"llibre que causa el problema."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:322
msgid "Duplicates found!"
@@ -4063,10 +4450,12 @@ msgid ""
"Books with the same title as the following already exist in the database. "
"Add them anyway?"
msgstr ""
+"Ja hi ha llibres amb el mateix títol a la base de dades. S'afegeixen "
+"igualment?"
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:326
msgid "Adding duplicates..."
-msgstr ""
+msgstr "S'estan afegint els duplicats..."
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:393
msgid "Saving..."
@@ -4078,59 +4467,59 @@ msgstr "Desat"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:57
msgid "Searching for sub-folders"
-msgstr ""
+msgstr "S'estan buscant subcarpetes"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:62
msgid "Searching for books"
-msgstr ""
+msgstr "S'estan buscant llibres"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:74
msgid "Looking for duplicates based on file hash"
-msgstr ""
+msgstr "S'estan buscant duplicats al hash del fitxer"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:109
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:70
msgid "Choose root folder"
-msgstr ""
+msgstr "Trieu la carpeta arrel"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:137
msgid "Invalid root folder"
-msgstr ""
+msgstr "Carpeta arrel no vàlida"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:138
msgid "is not a valid root folder"
-msgstr ""
+msgstr "no és una carpeta arrel vàlida"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:148
msgid "Add books to calibre"
-msgstr ""
+msgstr "Afegeix llibres al calibre"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:21
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41
msgid "WizardPage"
-msgstr ""
+msgstr "Pàgina de l'assistent"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:22
msgid "Scanning root folder for books"
-msgstr ""
+msgstr "S'estan buscant llibres a la carpeta arrel"
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:23
msgid "This may take a few minutes"
-msgstr ""
+msgstr "Pot trigar uns quants minuts"
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:58
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63
msgid "Choose the location to add books from"
-msgstr ""
+msgstr "Trieu el lloc des d'on s'han d'afegir els llibres"
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:59
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:64
msgid "Select a folder on your hard disk"
-msgstr ""
+msgstr "Seleccioneu una carpeta del vostre disc dur"
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:60
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:65
msgid ""
"
"
msgstr "
"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:189
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:134
msgid " is not a valid picture"
msgstr " no és una imatge vàlida"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407
msgid "Book Cover"
msgstr "Coberta"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173
msgid "Use cover from &source file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408
msgid "Change &cover image:"
msgstr "Canvia la imatge de la &coberta:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175
msgid "Browse for an image to use as the cover of this book."
msgstr "Cerca una imatge per a utilitzar com a coberta d'aquest llibre."
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366
msgid "&Title: "
msgstr "&Títol: "
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367
msgid "Change the title of this book"
msgstr "Canvia el títol del llibre"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:229
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370
msgid "&Author(s): "
msgstr "&Autor(s): "
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180
msgid "Author So&rt:"
msgstr "Ord&re per autor:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181
msgid ""
"Change the author(s) of this book. Multiple authors should be separated by a "
"comma"
msgstr ""
"Canvia l'autor(s). Per a especificar més d'un, separeu-los amb comes."
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:238
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
msgid "&Publisher: "
msgstr "&Editorial: "
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382
msgid "Ta&gs: "
msgstr "Etique&tes: "
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:240
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383
msgid ""
"Tags categorize the book. This is particularly useful while searching. "
"
They can be any words or phrases, separated by commas."
@@ -4966,23 +5403,23 @@ msgstr ""
"Etiquetes per a categoritzar el llibre (especialment útil per a recerques). "
"
Pot emprar-se qualsevol paraula o frase, separada per comes."
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:247
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
msgid "&Series:"
msgstr "&Sèries:"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:180
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:181
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:187
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388
msgid "List of known series. You can add new series."
msgstr "Llistat de sèries conegudes. Podeu afegir-hi de noves."
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:188
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
msgid "Book "
msgstr "Llibre "
@@ -4990,7 +5427,7 @@ msgstr "Llibre "
msgid "MOBI Output"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:43
msgid "Default"
msgstr "Per defecte"
@@ -5141,7 +5578,7 @@ msgid "Regex:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:55
-#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122
msgid "Test"
msgstr ""
@@ -5153,18 +5590,18 @@ msgstr "Converteix"
msgid "Options specific to the input format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:112
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53
msgid "Dialog"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:113
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:118
msgid "&Input format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:119
msgid "Use &saved conversion settings for individual books"
msgstr ""
@@ -5179,66 +5616,70 @@ msgid ""
"Fine tune the detection of chapter headings and other document structure."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37
msgid "Detect chapters at (XPath expression):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:36
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38
msgid "Insert page breaks before (XPath expression):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:38
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40
msgid "Header regular expression:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:43
msgid "Footer regular expression:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:59
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87
msgid "Invalid regular expression"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:58
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:77
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:60
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:88
msgid "Invalid regular expression: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:65
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39
msgid "Invalid XPath"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:66
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:40
msgid "The XPath expression %s is invalid."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:81
msgid "Chapter &mark:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:82
msgid "Remove first &image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:83
msgid "Insert &metadata as page at start of book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64
-msgid "&Preprocess input file to possibly improve structure detection"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:84
msgid "Remove F&ooter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:66
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:85
msgid "Remove H&eader"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:86
+msgid "Line &un-wrap factor during preprocess:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:87
+msgid "&Preprocess input file to possibly improve structure detection"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16
msgid ""
"Table of\n"
@@ -5320,18 +5761,18 @@ msgstr ""
msgid "Force maximum line length"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:49
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:55
msgid "TextLabel"
msgstr "TextLabel"
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:57
msgid "Use a wizard to help construct the XPath expression"
msgstr ""
@@ -5432,16 +5873,12 @@ msgid "Undefined"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:241
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:119
msgid "Yes"
msgstr "Sí"
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:59
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:243
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:121
msgid "No"
@@ -5464,7 +5901,7 @@ msgid " index:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:451
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:256
msgid "Automatically number books in this series"
msgstr ""
@@ -5480,97 +5917,97 @@ msgstr ""
msgid "tags to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:49
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:48
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:136
msgid "No details available."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:165
msgid "Device no longer connected."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:284
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:283
msgid "Get device information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:294
msgid "Get list of books on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:305
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:304
msgid "Get annotations from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:314
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:313
msgid "Send metadata to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:318
msgid "Send collections to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:343
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:342
msgid "Upload %d books to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:358
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357
msgid "Delete books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:374
msgid "Download books from device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:384
msgid "View book on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:418
msgid "Set default send to device action"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:425
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:424
msgid "Send to main memory"
msgstr "Envia a la memòria interna"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:427
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:426
msgid "Send to storage card A"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:429
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:428
msgid "Send to storage card B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:434
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:443
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:433
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:442
msgid "Main Memory"
msgstr "Memòria principal"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:454
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:453
msgid "Send and delete from library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:455
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:454
msgid "Send specific format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:491
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:490
msgid "Eject device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:609
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:608
msgid "Error communicating with device"
msgstr "Error en la comunicació amb el dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:636
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629
msgid "Select folder to open as device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:684
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:676
msgid "Error talking to device"
msgstr "Error comunicant amb el dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:685
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:677
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
@@ -5578,157 +6015,157 @@ msgstr ""
"Hi ha hagut un error de comunicació amb el dispositiu. Lleve, torne a "
"connectar el dispositiu i torne a iniciar el programa"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:724
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:716
msgid "Device: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:718
msgid " detected."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:808
msgid "selected to send"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Choose format to send to device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:826
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:822
msgid "No device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823
msgid "Cannot send: No device is connected"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:826
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:830
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:834
msgid "No card"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:827
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:831
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:835
msgid "Cannot send: Device has no storage card"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872
msgid "E-book:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:879
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:875
msgid "Attached, you will find the e-book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:880
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:876
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:107
msgid "by"
msgstr "per"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:881
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:877
msgid "in the %s format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:894
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:890
msgid "Sending email to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:924
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:932
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1026
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1088
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1207
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1215
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:920
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:928
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1083
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1202
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1210
msgid "No suitable formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:921
msgid "Auto convert the following books before sending via email?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:933
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:929
msgid ""
"Could not email the following books as no suitable formats were found:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:951
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:947
msgid "Failed to email books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:948
msgid "Failed to email the following books:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:956
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:952
msgid "Sent by email:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:985
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:980
msgid "News:"
msgstr "Notícies:"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:986
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:981
msgid "Attached is the"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:992
msgid "Sent news to"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1027
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1089
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1022
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1084
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1203
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1057
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1052
msgid "Sending catalogs to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1121
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1116
msgid "Sending news to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1174
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1169
msgid "Sending books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1216
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1211
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:1278
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1273
msgid "No space on device"
msgstr "Sense espai al dispositiu"
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1279
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1274
msgid ""
"
to this email "
-"address (provided it is in one of the listed formats)."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:309
-msgid "new email address"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:492
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:24
-msgid "Wide"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:493
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:24
-msgid "Narrow"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50
-msgid "Medium"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:50
-msgid "Small"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:510
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:51
-msgid "Large"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:516
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54
-msgid "Always"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:516
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:54
-msgid "Automatic"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:517
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:55
-msgid "Never"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:530
-msgid "Toolbars/Context menus"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:544
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:156
-msgid "Done"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:545
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:157
-msgid "Confirmation dialogs have all been reset"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
-msgid "System port selected"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
-msgid ""
-"The value %d you have chosen for the content server port is a system "
-"port. Your operating system may not allow the server to run on this "
-"port. To be safe choose a port number larger than 1024."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:571
-msgid "Failed to install command line tools."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:574
-msgid "Command line tools installed"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575
-msgid "Command line tools installed in"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:576
-msgid ""
-"If you move calibre.app, you have to re-install the command line tools."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:627
-msgid "No valid plugin path"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:628
-msgid "%s is not a valid plugin path"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:631
-msgid "Choose plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:643
-msgid "Plugin cannot be disabled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:644
-msgid "The plugin: %s cannot be disabled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:653
-msgid "Plugin not customizable"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654
-msgid "Plugin: %s does not need customization"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:662
-msgid "Customize"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700
-msgid "Cannot remove builtin plugin"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701
-msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:716
-msgid "Invalid tweaks"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:717
-msgid ""
-"The tweaks you entered are invalid, try resetting the tweaks to default and "
-"changing them one by one until you find the invalid setting."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:747
-msgid "You must select a column to delete it"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752
-msgid "The selected column is not a custom column"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:754
-msgid "Do you really want to delete column %s and all its data?"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
-msgid "Error log:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:828
-msgid "Access log:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:856
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:319
-msgid "Failed to start content server"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:881
-msgid "Invalid size"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:882
-msgid "The size %s is invalid. must be of the form widthxheight"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:951
-msgid "Must restart"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:952
-msgid ""
-"The changes you made require that Calibre be restarted. Please restart as "
-"soon as practical."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:986
-msgid "Checking database integrity"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1006
-msgid "Failed to check database integrity"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1011
-msgid "Some inconsistencies found"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:1012
-msgid ""
-"The following books had formats listed in the database that are not actually "
-"available. The entries for the formats have been removed. You should check "
-"them manually. This can happen if you manipulate the files in the library "
-"folder directly."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:133
-msgid "TabWidget"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:134
-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/dialogs/config/add_save_ui.py:135
-msgid "Read metadata only from &file name"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:136
-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/dialogs/config/add_save_ui.py:137
-msgid "&Swap author firstname and lastname"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:138
-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"
-"\n"
-"Title match ignores leading indefinite articles (\"the\", \"a\", \"an\"), "
-"punctuation, case, etc. Author match is exact."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:142
-msgid ""
-"If books with similar titles and authors found, &merge the new files "
-"automatically"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:143
-msgid "&Configure metadata from file name"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:144
-msgid "&Adding books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:145
-msgid ""
-"Here you can control how calibre will save your books when you click the "
-"Save to Disk button:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:146
-msgid "Save &cover separately"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:147
-msgid "Update &metadata in saved copies"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:148
-msgid "Save metadata in &OPF file"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:149
-msgid "Convert non-English characters to &English equivalents"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:150
-msgid "Format &dates as:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:151
-msgid "File &formats to save:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:152
-msgid "Replace space with &underscores"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:153
-msgid "Change paths to &lowercase"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:154
-msgid "&Saving books"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:155
-msgid "Metadata &management:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:156
-msgid "Manual management"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:157
-msgid "Only on send"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:158
-msgid "Automatic management"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:159
-msgid ""
-"\n"
-"
"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114
-msgid "Use MMM yyyy for month + year, yyyy for year only"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115
-msgid "Default: dd MMM yyyy."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116
-msgid "Format for &dates"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21
-msgid "Getting debug information"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22
-msgid "Copy to &clipboard"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24
-msgid "Debug device detection"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44
-msgid "Invalid template"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45
-msgid "The template %s is invalid:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42
-msgid "Save &template"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:43
-msgid ""
-"By adjusting the template below, you can control what folders the files are "
-"saved in and what filenames they are given. You can use the / character to "
-"indicate sub-folders. Available metadata variables are described below. If a "
-"particular book does not have some metadata, the variable will be replaced "
-"by the empty string."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44
-msgid "Available variables:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34
-msgid "Downloading social metadata, please wait..."
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:35
-msgid "Switch between library and device views"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:38
-msgid "Separator"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:51
-msgid "Choose library"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:201
-msgid "The main toolbar"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:202
-msgid "The main toolbar when a device is connected"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:203
-msgid "The context menu for the books in the calibre library"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:205
-msgid "The context menu for the books on the device"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:243
-msgid "Cannot add"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:244
-msgid "Cannot add the actions %s to this location"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:261
-msgid "Cannot remove"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar.py:262
-msgid "Cannot remove the actions %s from this location"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:97
-msgid "Customize the actions in:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:98
-msgid "A&vailable actions"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:99
-msgid "&Current actions"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:100
-msgid "Move selected action up"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:102
-msgid "Move selected action down"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:104
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
-msgid "Ctrl+S"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:105
-msgid "Add selected actions to toolbar"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:107
-msgid "Remove selected actions from toolbar"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/toolbar_ui.py:109
-msgid "Restore to &default"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:55
msgid "&Show this warning again"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:47
msgid "ERROR"
msgstr "ERROR"
@@ -6996,7 +6334,15 @@ msgid "Location"
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:1064
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:69
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:884
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:588
+msgid "Date"
+msgstr "Data"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066
msgid "Format"
msgstr "Format"
@@ -7068,11 +6414,11 @@ msgid ""
"No metadata found, try adjusting the title and author or the ISBN key."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90
msgid "Fetch metadata"
msgstr "Recull metadades"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91
msgid ""
"
"
msgstr "No puc aconseguir la coberta.
"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:588
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:627
msgid "The download timed out."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:592
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:631
msgid "Could not find cover for this book. Try specifying the ISBN first."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:604
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:643
msgid ""
"For the error message from each cover source, click Show details below."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
msgid "Bad cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
msgid "The cover is not a valid picture"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:684
msgid "There were errors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:685
msgid "There were errors downloading social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:675
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:714
msgid "Cannot fetch metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:715
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:759
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:798
msgid "Permission denied"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:799
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364
msgid "Edit Meta Information"
msgstr "Edita la meta-informació"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365
msgid "Meta information"
msgstr "Meta-informació"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368
msgid "Swap the author and title"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371
msgid "Author S&ort: "
msgstr "&Ordena autors: "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372
msgid ""
-"Automatically create the author sort entry based on the current author entry"
+"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:382
-msgid "Remove unused series (Series that have no books)"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384
-msgid "IS&BN:"
-msgstr "IS&BN:"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385
-msgid "Publishe&d:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388
-msgid "dd MMM yyyy"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374
+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."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389
-msgid "&Date:"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390
-msgid "&Comments"
+msgid "Remove unused series (Series that have no books)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391
+msgid "IS&BN:"
+msgstr "IS&BN:"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392
+msgid "Publishe&d:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
+msgid "dd MMM yyyy"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396
+msgid "&Date:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
+msgid "&Comments"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398
msgid "&Fetch metadata from server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399
msgid "Available Formats"
msgstr "Formats disponibles"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400
msgid "Add a new format for this book to the database"
msgstr "Afegir un nou format per a aquest llibre a la base de dades"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
msgid "Remove the selected formats for this book from the database."
msgstr ""
"Elimina els formats seleccionats per a aquest llibre de la base de dades."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404
msgid "Set the cover for the book from the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406
msgid "Update metadata from the metadata in the selected format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409
msgid "&Browse"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410
msgid "Reset cover to default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405
-msgid "Download &cover"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412
+msgid "Download co&ver"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413
msgid "Generate a default cover based on the title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414
msgid "&Generate cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:61
msgid "Password needed"
msgstr "Es necessita una contrasenya."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
+msgid "&Username:"
+msgstr "Nom d'&usuari:"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
+#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
+msgid "&Password:"
+msgstr "&Contrasenya:"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
+msgid "&Show password"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:59
msgid "Aborting..."
msgstr ""
@@ -7483,31 +6947,31 @@ msgid ""
"The current saved search will be permanently deleted. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88
msgid "Saved Search Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89
msgid "Saved Search: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90
msgid "Select a saved search to edit"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91
msgid "Delete this selected saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:93
msgid "Enter a new saved search name."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:94
msgid "Add the new saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:96
msgid "Change the contents of the saved search"
msgstr ""
@@ -7536,7 +7000,7 @@ msgid "Last downloaded"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
msgid "Schedule news download"
msgstr ""
@@ -7556,115 +7020,115 @@ msgstr ""
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:193
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:278
msgid "Recipes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199
msgid "Download all scheduled recipes at once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:195
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200
msgid "Download &all scheduled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:196
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
msgid "Every "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
msgid "day"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
msgid "Monday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
msgid "Tuesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
msgid "Wednesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
msgid "Thursday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
msgid "Friday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
msgid "Saturday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
msgid "Sunday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "at"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
msgid ""
"Interval at which to download this recipe. A value of zero means that the "
"recipe will be downloaded every hour."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268
msgid " days"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "&Download now"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid ""
"Delete downloaded news older than the specified number of days. Set to zero "
"to disable."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "Delete downloaded news older than "
msgstr ""
@@ -7686,56 +7150,56 @@ msgstr ""
msgid "Negate"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118
msgid "Advanced Search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119
msgid "Find entries that have..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120
msgid "&All these words:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121
msgid "This exact &phrase:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122
msgid "&One or more of these words:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123
msgid "But dont show entries that have..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124
msgid "Any of these &unwanted words:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125
msgid "What kind of match to use:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:126
msgid "Contains: the word or phrase matches anywhere in the metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:127
msgid "Equals: the word or phrase must match an entire metadata field"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:128
msgid ""
"Regular expression: the expression must match anywhere in the metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:129
msgid " "
msgstr " "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:130
msgid ""
"See the User Manual for more help"
@@ -7746,12 +7210,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:80
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:82
msgid "Authors"
msgstr "Autors"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:50
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113
msgid "Publishers"
msgstr "Editors"
@@ -7764,51 +7228,51 @@ msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:153
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158
msgid "User Categories Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:154
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159
msgid "A&vailable items"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:155
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160
msgid "Apply tags to current tag category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:157
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162
msgid "A&pplied items"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163
msgid "Unapply (remove) tag from current tag category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165
msgid "Category name: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166
msgid "Select a category to edit"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167
msgid "Delete this selected tag category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169
msgid "Enter a new category name. Select the kind before adding it."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:170
msgid "Add the new category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:172
msgid "Category filter: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:173
msgid "Select the content kind of the new category"
msgstr ""
@@ -7823,43 +7287,43 @@ msgid ""
"to delete them?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:123
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128
msgid "Tag Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:124
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129
msgid "A&vailable tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130
msgid ""
"Delete tag from database. This will unapply the tag from all books and then "
"remove it from the database."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:127
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132
msgid "Apply tag to current book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:134
msgid "A&pplied tags"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135
msgid "Unapply (remove) tag from current book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:137
msgid "&Add tag:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:138
msgid ""
"If the tag you want is not in the available list, you can add it here. "
"Accepts a comma separated list of tags."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:139
msgid "Add tag to available tags and apply it to current book"
msgstr ""
@@ -7868,12 +7332,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:503
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:501
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:504
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:502
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -7897,34 +7361,39 @@ msgstr ""
msgid "Are you certain you want to delete the following items?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77
msgid "Category Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78
msgid "Items in use"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:79
msgid ""
"Delete item from database. This will unapply the item from all books and "
"then remove it from the database."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:81
msgid "Rename the item in every book where it is used."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:83
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:106
+msgid "Ctrl+S"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:56
msgid "Test email settings"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:57
msgid "Send test mail from %s to:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:58
+#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120
msgid "&Test"
msgstr ""
@@ -7942,7 +7411,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:150
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:161
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:255
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260
msgid "Switch to Advanced mode"
msgstr ""
@@ -8007,35 +7476,35 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253
msgid "Add custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254
msgid "Available user recipes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:250
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:255
msgid "Add/Update &recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:251
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256
msgid "&Remove recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:252
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:257
msgid "&Share recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:258
msgid "Customize &builtin recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:259
msgid "&Load recipe from file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261
msgid ""
"