diff --git a/Changelog.yaml b/Changelog.yaml
index c5eadc5e65..a25b52bfbf 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -19,6 +19,117 @@
# new recipes:
# - title:
+- version: 0.7.49
+ date: 2011-03-11
+
+ new features:
+ - title: "News download: More flexible news downlaod scheduling. You can now schedule by days of the week, days of the month and an interval, which can be as small as an hour for news sources that change rapidly"
+
+ - title: "Improved support for dragging and dropping cover images directly from web browsers into calibre."
+ description: >
+ "You can drop the images onto the cover in calibre and it will be replaced. Tested on a number of OS/browser combinations, but I am sure there a still a few for which it wont work."
+
+ - title: "Add shortcuts of Alt+Left and Alt+Right for the next and previous buttons in the edit metadata dialog."
+ tickets: [9360]
+
+ - title: "When adding a GUI plugin, prompt the user for where the plugin should be displayed"
+
+ - title: "Conversion: When using the Level x Table of Contents options, support the case when the level 1,2,3 items are spread over multiple HTML files."
+
+ - title: "Support for the Optimus V"
+
+ - title: "FB2 Input: Support for tables"
+ tickets: [9302]
+
+ - title: "Display a checkmark/cross next to 'true' and 'false' items in custom columns. Controlled via Preferences->Add a custom column"
+
+ - title: "Catalog generation: Reuse cover from existing catalog, allows the use of a custom cover for catalogs"
+
+ - title: "When setting covers in calibre, resize to fit within a maximum size of (1200, 1600), to prevent slowdowns due to extra large covers. This size can be controlled via Preferences->Tweaks."
+ tickets: [9277]
+
+ bug fixes:
+ - title: "Fix long standing bug that caused errors when saving books to disk if the book metadata has certain chinese/russian characters on windows. The fix required some changes to how unicode paths are handled in calibre, so it might have broken something else. If so, please open a ticket."
+ tickets: [7250]
+
+ - title: "Custom recipes: Store custom recipes in the calibre config directory instead of the library database. This allows scheduling of custom recipes to work with multiple libraries. Note that you may have to re-schedule any existing custom recipes."
+
+ - title: "Restore the ability to do search and replace on ISBN. Use the 'identifiers' field with type isbn to do this"
+
+ - title: "Fix amazon metadata download plugin not working with ISBN-13 and social metadata not downloading if the supplied ISBN 10 is not for an edition available on Amazon"
+
+ - title: "Workaround for openlibrary blocking the user agent used by calibre, preventing cover downloads from that site"
+
+ - title: "FB2 Output: Add sequence to metadata. Fix bugs with author names. Fix bug where
tags."
+
+ - title: "Conversion pipeline: If the input HTML document uses uppercase tag and attribute names, convert them to lowercase"
+
+ - title: "RTF Input: Fix space after unicode quote character being incorrectly removed"
+ tickets: [9343]
+
+ - title: "Fix regression that broke the ebook-device command line program in the previous release"
+
+ - title: "Fix custom columns with numbers not allowing entry of positive numbers of 64-bit machines"
+ tickets: [9283]
+
+ - title: "Fix regression that caused focus to be lost when editing metadata in the device view"
+ tickets: [9323]
+
+ - title: "CHM Input: If an input encoding is specified, use it rather than trying to detect the encoding of the text in the CHM file."
+ tickets: [9173]
+
+ - title: "Fix regression that caused the viewer to forget its window size and other attributes when launched from within calibre, after calibre is restarted."
+ tickets: [9326]
+
+ - title: "News download: Fix regression that caused the delay parameter in recipes to not actually delay downloads."
+ tickets: [9332]
+
+ - title: "Conversion pipeline: When converting the :first-letter pseudo CSS selector to a follow W3C rules for handling leading punctuation characters."
+ tickets: [9319]
+
+ - title: "Fix regression that caused clicking saved searches in the Tag Browser to not work"
+
+ - title: "Comic Input: Fix conversion failing when output profile is set to Tablet Output"
+
+ - title: "Replace leading periods in all path components generated by calibre with underscores"
+
+ - title: "Search and replace preferences: Prevent very long strings from causing the wizard button to get pushed off the screen"
+
+ - title: "Content server: Fix regression that caused various metadata to be missing in the book details view."
+ ticckets: [8929]
+
+ - title: "Apple driver: Ignore invalid EPUBs when sending to iTunes"
+
+ improved recipes:
+ - golem.de
+ - gulli.de
+ - La Nacion
+ - Ming Pao
+ - evz.ro
+ - Kompiuterra
+ - NRC Handelsblad (EPUB)
+ - The Leduc - Wetaskiwin Pipestone Flyer
+
+ new recipes:
+ - title: "Various Romanian news sources"
+ author: Silviu Cotoara
+
+ - title: "Salt Lake City Tribune"
+ author: Charles Holbert
+
+ - title: "Bay Citizen and Oakland North"
+ author: noah
+
+ - title: "Nikkei Business and JB Press"
+ author: Ado Nishimura
+
+ - title: "El Pais Babelia"
+ author: oneillpt
+
+ - title: "Komchadluek"
+ author: ballsai
+
+
- version: 0.7.48
date: 2011-03-04
diff --git a/resources/images/news/avantaje.png b/resources/images/news/avantaje.png
new file mode 100644
index 0000000000..79f83c2665
Binary files /dev/null and b/resources/images/news/avantaje.png differ
diff --git a/resources/images/news/onemagazine.png b/resources/images/news/onemagazine.png
new file mode 100644
index 0000000000..61ce048c30
Binary files /dev/null and b/resources/images/news/onemagazine.png differ
diff --git a/resources/images/news/pcworldro.png b/resources/images/news/pcworldro.png
new file mode 100644
index 0000000000..532548302d
Binary files /dev/null and b/resources/images/news/pcworldro.png differ
diff --git a/resources/images/news/protvmagazin.png b/resources/images/news/protvmagazin.png
new file mode 100644
index 0000000000..8824760edb
Binary files /dev/null and b/resources/images/news/protvmagazin.png differ
diff --git a/resources/images/news/psychologies.png b/resources/images/news/psychologies.png
new file mode 100644
index 0000000000..027296dde2
Binary files /dev/null and b/resources/images/news/psychologies.png differ
diff --git a/resources/images/news/tvmania.png b/resources/images/news/tvmania.png
new file mode 100644
index 0000000000..022267f885
Binary files /dev/null and b/resources/images/news/tvmania.png differ
diff --git a/resources/images/news/viva.png b/resources/images/news/viva.png
new file mode 100644
index 0000000000..e01fc6125e
Binary files /dev/null and b/resources/images/news/viva.png differ
diff --git a/resources/recipes/avantaje.recipe b/resources/recipes/avantaje.recipe
new file mode 100644
index 0000000000..9a48616fa1
--- /dev/null
+++ b/resources/recipes/avantaje.recipe
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+avantaje.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Avantaje(BasicNewsRecipe):
+ title = u'Avantaje'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u''
+ publisher = u'Avantaje'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,Stiri'
+ encoding = 'utf-8'
+ cover_url = 'http://www.avantaje.ro/images/default/logo.gif'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ keep_only_tags = [
+ dict(name='div', attrs={'id':'articol'})
+ , dict(name='div', attrs={'class':'gallery clearfix'})
+ , dict(name='div', attrs={'align':'justify'})
+ ]
+
+ remove_tags = [
+ dict(name='div', attrs={'id':['color_sanatate_box']})
+ , dict(name='div', attrs={'class':['nav']})
+ , dict(name='div', attrs={'class':['voteaza_art']})
+ , dict(name='div', attrs={'class':['bookmark']})
+ , dict(name='div', attrs={'class':['links clearfix']})
+ , dict(name='div', attrs={'class':['title']})
+ ]
+
+ remove_tags_after = [
+ dict(name='div', attrs={'class':['title']})
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://feeds.feedburner.com/Avantaje')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/bay_citizen.recipe b/resources/recipes/bay_citizen.recipe
new file mode 100644
index 0000000000..e6a6c2b63d
--- /dev/null
+++ b/resources/recipes/bay_citizen.recipe
@@ -0,0 +1,46 @@
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class TheBayCitizen(BasicNewsRecipe):
+ title = 'The Bay Citizen'
+ language = 'en'
+ __author__ = 'noah'
+ description = 'The Bay Citizen'
+ publisher = 'The Bay Citizen'
+ INDEX = u'http://www.baycitizen.org'
+ category = 'news'
+ oldest_article = 2
+ max_articles_per_feed = 20
+ no_stylesheets = True
+ masthead_url = 'http://media.baycitizen.org/images/layout/logo1.png'
+ feeds = [('Main Feed', 'http://www.baycitizen.org/feeds/stories/')]
+ keep_only_tags = [dict(name='div', attrs={'class':'story'})]
+ remove_tags = [
+ dict(name='div', attrs={'class':'socialBar'}),
+ dict(name='div', attrs={'id':'text-resize'}),
+ dict(name='div', attrs={'class':'story relatedContent'}),
+ dict(name='div', attrs={'id':'comment_status_loading'}),
+ ]
+
+ def append_page(self, soup, appendtag, position):
+ pager = soup.find('a',attrs={'class':'stry-next'})
+ if pager:
+ nexturl = self.INDEX + pager['href']
+ soup2 = self.index_to_soup(nexturl)
+ texttag = soup2.find('div', attrs={'class':'body'})
+ for it in texttag.findAll(style=True):
+ del it['style']
+ newpos = len(texttag.contents)
+ self.append_page(soup2,texttag,newpos)
+ texttag.extract()
+ appendtag.insert(position,texttag)
+
+
+ def preprocess_html(self, soup):
+ for item in soup.findAll(style=True):
+ del item['style']
+ self.append_page(soup, soup.body, 3)
+ garbage = soup.findAll(id='story-pagination')
+ [trash.extract() for trash in garbage]
+ garbage = soup.findAll('em', 'cont-from-prev')
+ [trash.extract() for trash in garbage]
+ return soup
diff --git a/resources/recipes/golem_de.recipe b/resources/recipes/golem_de.recipe
index d0280a9617..77374cb162 100644
--- a/resources/recipes/golem_de.recipe
+++ b/resources/recipes/golem_de.recipe
@@ -1,17 +1,83 @@
-from calibre.web.feeds.news import BasicNewsRecipe
+#!/usr/bin/env python
-class AdvancedUserRecipe1257093338(BasicNewsRecipe):
+from calibre.web.feeds.news import BasicNewsRecipe
+class golem_ger(BasicNewsRecipe):
title = u'Golem.de'
language = 'de'
__author__ = 'Kovid Goyal'
oldest_article = 7
max_articles_per_feed = 100
+ language = 'de'
+ lang = 'de-DE'
+ no_stylesheets = True
+ encoding = 'iso-8859-1'
+ recursions = 1
+ match_regexps = [r'http://www.golem.de/.*.html']
- feeds = [(u'Golem.de', u'http://rss.golem.de/rss.php?feed=ATOM1.0')]
+ keep_only_tags = [
+ dict(name='h1', attrs={'class':'artikelhead'}),
+ dict(name='p', attrs={'class':'teaser'}),
+ dict(name='div', attrs={'class':'artikeltext'}),
+ dict(name='h2', attrs={'id':'artikelhead'}),
+ ]
- def print_version(self, url):
- murxb = url.rfind('/') + 1
- murxc = url[murxb :-5]
- murxa = 'http://www.golem.de/' + 'print.php?a=' + murxc
- return murxa
+
+ remove_tags = [
+ dict(name='div', attrs={'id':['similarContent','topContentWrapper','storycarousel','aboveFootPromo','comments','toolbar','breadcrumbs','commentlink','sidebar','rightColumn']}),
+ dict(name='div', attrs={'class':['gg_embeddedSubText','gg_embeddedIndex gg_solid','gg_toOldGallery','golemGallery']}),
+ dict(name='img', attrs={'class':['gg_embedded','gg_embeddedIconRight gg_embeddedIconFS gg_cursorpointer']}),
+ dict(name='td', attrs={'class':['xsmall']}),
+ ]
+
+
+ # remove_tags_after = [
+ # dict(name='div', attrs={'id':['contentad2']})
+ # ]
+
+
+ feeds = [
+ (u'Golem.de', u'http://rss.golem.de/rss.php?feed=ATOM1.0'),
+ (u'Audio/Video', u'http://rss.golem.de/rss.php?tp=av&feed=RSS2.0'),
+ (u'Foto', u'http://rss.golem.de/rss.php?tp=foto&feed=RSS2.0'),
+ (u'Games', u'http://rss.golem.de/rss.php?tp=games&feed=RSS2.0'),
+ (u'Internet', u'http://rss.golem.de/rss.php?tp=inet&feed=RSS1.0'),
+ (u'Mobil', u'http://rss.golem.de/rss.php?tp=mc&feed=ATOM1.0'),
+ (u'Internet', u'http://rss.golem.de/rss.php?tp=inet&feed=RSS1.0'),
+ (u'Politik/Recht', u'http://rss.golem.de/rss.php?tp=pol&feed=ATOM1.0'),
+ (u'Desktop-Applikationen', u'http://rss.golem.de/rss.php?tp=apps&feed=RSS2.0'),
+ (u'Software-Entwicklung', u'http://rss.golem.de/rss.php?tp=dev&feed=RSS2.0'),
+ (u'Wirtschaft', u'http://rss.golem.de/rss.php?tp=wirtschaft&feed=RSS2.0'),
+ (u'Hardware', u'http://rss.golem.de/rss.php?r=hw&feed=RSS2.0'),
+ (u'Software', u'http://rss.golem.de/rss.php?r=sw&feed=RSS2.0'),
+ (u'Networld', u'http://rss.golem.de/rss.php?r=nw&feed=RSS2.0'),
+ (u'Entertainment', u'http://rss.golem.de/rss.php?r=et&feed=RSS2.0'),
+ (u'TK', u'http://rss.golem.de/rss.php?r=tk&feed=RSS2.0'),
+ (u'E-Commerce', u'http://rss.golem.de/rss.php?r=ec&feed=RSS2.0'),
+ (u'Unternehmen/Maerkte', u'http://rss.golem.de/rss.php?r=wi&feed=RSS2.0')
+ ]
+
+
+
+
+ feeds = [
+ (u'Golem.de', u'http://rss.golem.de/rss.php?feed=ATOM1.0'),
+ (u'Mobil', u'http://rss.golem.de/rss.php?tp=mc&feed=feed=RSS2.0'),
+ (u'OSS', u'http://rss.golem.de/rss.php?tp=oss&feed=RSS2.0'),
+ (u'Politik/Recht', u'http://rss.golem.de/rss.php?tp=pol&feed=RSS2.0'),
+ (u'Desktop-Applikationen', u'http://rss.golem.de/rss.php?tp=apps&feed=RSS2.0'),
+ (u'Software-Entwicklung', u'http://rss.golem.de/rss.php?tp=dev&feed=RSS2.0'),
+ ]
+
+
+ extra_css = '''
+ h1 {color:#0066CC;font-family:Arial,Helvetica,sans-serif; font-size:30px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:20px;margin-bottom:2 em;}
+ h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:22px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
+ h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:x-small; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:normal; line-height:5px;}
+ h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:13px; }
+ h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:11px; text-transform:uppercase;}
+ .teaser {font-style:italic;font-size:12pt;margin-bottom:15pt;}
+ .xsmall{font-style:italic;font-size:x-small;}
+ .td{font-style:italic;font-size:x-small;}
+ img {align:left;}
+ '''
diff --git a/resources/recipes/gulli.recipe b/resources/recipes/gulli.recipe
index e695aa02ef..8a861f527f 100644
--- a/resources/recipes/gulli.recipe
+++ b/resources/recipes/gulli.recipe
@@ -11,6 +11,26 @@ class AdvancedUserRecipe1259599587(BasicNewsRecipe):
feeds = [(u'gulli:news', u'http://ticker.gulli.com/rss/')]
- remove_tags = [{'class' : ['addthis_button', 'BreadCrumb']}, {'id' : ['plista0']}]
+ remove_tags = [dict(name='div', attrs={'class':['FloatL','_forumBox']})]
- keep_only_tags = [dict(name='div', attrs={'class':'inside'})]
+ keep_only_tags = [dict(name='div', attrs={'id':['_contentLeft']})]
+
+ remove_tags_after = [dict(name='div', attrs={'class':['_bookmark']})]
+
+
+
+
+
+ extra_css = '''
+ h1 {color:#008852;font-family:Arial,Helvetica,sans-serif; font-size:25px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:22px; }
+ h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:18px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
+ h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
+ h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:12px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
+ h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
+ .newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
+ .articleInfo {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
+ .byline {color:#666;margin-bottom:0;font-size:12px}
+ .blockquote {color:#030303;font-style:italic;padding-left:15px;}
+ img {align:center;}
+ .li {list-style-type: none}
+ '''
diff --git a/resources/recipes/onemagazine.recipe b/resources/recipes/onemagazine.recipe
new file mode 100644
index 0000000000..73dd50141a
--- /dev/null
+++ b/resources/recipes/onemagazine.recipe
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+onemagazine.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Onemagazine(BasicNewsRecipe):
+ title = u'The ONE'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'Be the ONE, not anyone ..'
+ publisher = u'The ONE'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,Femei'
+ encoding = 'utf-8'
+ cover_url = 'http://www.onemagazine.ro/images/logo_rss.jpg'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'class':'article'})
+ , dict(name='div', attrs={'class':'gallery clearfix'})
+ , dict(name='div', attrs={'align':'justify'})
+ ]
+
+ remove_tags = [
+ dict(name='p', attrs={'class':['info']})
+ , dict(name='table', attrs={'class':['connect_widget_interactive_area']})
+ , dict(name='span', attrs={'class':['photo']})
+ , dict(name='div', attrs={'class':['counter']})
+ , dict(name='div', attrs={'class':['carousel']})
+ , dict(name='div', attrs={'class':['jcarousel-container jcarousel-container-horizontal']})
+ ]
+
+ remove_tags_after = [
+ dict(name='table', attrs={'class':['connect_widget_interactive_area']})
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://www.onemagazine.ro/rss')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/pcworldro.recipe b/resources/recipes/pcworldro.recipe
new file mode 100644
index 0000000000..89ddbaf21d
--- /dev/null
+++ b/resources/recipes/pcworldro.recipe
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+pcworld.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Pcworld(BasicNewsRecipe):
+ title = u'PC World'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'IT'
+ publisher = u'PC World'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Stiri,IT'
+ encoding = 'utf-8'
+ cover_url = 'http://www.pcworld.ro/img/ui/header-logo.gif'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'id':'content_page'})
+ , dict(name='div', attrs={'class':'box_center content_body'})
+ ]
+
+ remove_tags = [
+ dict(name='h3', attrs={'class':['breadcrumb']})
+ , dict(name='div', attrs={'class':['box_center voteaza']})
+ ]
+
+ remove_tags_after = [
+ dict(name='div', attrs={'class':['box_center voteaza']})
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://www.pcworld.ro/contents/pcworld.rss')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/protvmagazin.recipe b/resources/recipes/protvmagazin.recipe
new file mode 100644
index 0000000000..fbdb7465fc
--- /dev/null
+++ b/resources/recipes/protvmagazin.recipe
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+protvmagazin.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Protvmagazin(BasicNewsRecipe):
+ title = u'ProTv Magazin'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'Ghid TV'
+ publisher = u'ProTv Magazin'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,TV'
+ encoding = 'utf-8'
+ cover_url = 'http://www.protvmagazin.ro/images/logo.png'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'class':'box gradient'})
+ ]
+
+ remove_tags = [
+ dict(name='p', attrs={'class':['title']})
+ , dict(name='div', attrs={'id':['online_only']})
+ , dict(name='div', attrs={'class':['show_article_rating']})
+ , dict(name='ul', attrs={'class':['breadcrumbs']})
+ , dict(name='p', attrs={'class':['tags']})
+ ]
+
+ remove_tags_after = [
+ dict(name='table', attrs={'class':['connect_widget_interactive_area']})
+ , dict(name='p', attrs={'class':['tags']})
+ , dict(name='dev', attrs={'class':['connect_widget_sample_connections clearfix']})
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://www.protvmagazin.ro/rss/articole-noi')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/psychologies.recipe b/resources/recipes/psychologies.recipe
new file mode 100644
index 0000000000..1b69a2ed9e
--- /dev/null
+++ b/resources/recipes/psychologies.recipe
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+psychologies.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Psychologies(BasicNewsRecipe):
+ title = u'Psychologies'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'Psihologie \u015fi Dezvoltare Personal\u0103..'
+ publisher = u'Psychologies'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,Psihologie'
+ encoding = 'utf-8'
+ cover_url = 'http://www.psychologies.ro/images/default/logo.gif'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'class':'nav'})
+ , dict(name='div', attrs={'id':'textarticol'})
+
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://feeds.feedburner.com/Psychologies')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/sltrib.py b/resources/recipes/sltrib.py
new file mode 100644
index 0000000000..a6701ae296
--- /dev/null
+++ b/resources/recipes/sltrib.py
@@ -0,0 +1,56 @@
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class AdvancedUserRecipe1278347258(BasicNewsRecipe):
+ title = u'Salt Lake City Tribune'
+ __author__ = 'Charles Holbert'
+ oldest_article = 7
+ max_articles_per_feed = 100
+
+ description = '''Utah's independent news source since 1871'''
+ publisher = 'http://www.sltrib.com/'
+ category = 'news, Utah, SLC'
+ language = 'en'
+ encoding = 'utf-8'
+ #delay = 1
+ #simultaneous_downloads = 1
+ remove_javascript = True
+ use_embedded_content = False
+ no_stylesheets = True
+
+ #masthead_url = 'http://www.sltrib.com/csp/cms/sites/sltrib/assets/images/logo_main.png'
+ #cover_url = 'http://webmedia.newseum.org/newseum-multimedia/dfp/jpg9/lg/UT_SLT.jpg'
+
+ keep_only_tags = [dict(name='div',attrs={'id':'imageBox'})
+ ,dict(name='div',attrs={'class':'headline'})
+ ,dict(name='div',attrs={'class':'byline'})
+ ,dict(name='p',attrs={'class':'TEXT_w_Indent'})]
+
+ feeds = [(u'SL Tribune Today', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rss.csp?cat=All'),
+ (u'Utah News', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rss.csp?cat=UtahNews'),
+ (u'Business News', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rss.csp?cat=Money'),
+ (u'Technology', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rss.csp?cat=Technology'),
+ (u'Most Popular', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rsspopular.csp'),
+ (u'Sports', u'http://www.sltrib.com/csp/cms/sites/sltrib/RSS/rss.csp?cat=Sports')]
+
+ extra_css = '''
+ .headline{font-family:Arial,Helvetica,sans-serif; font-size:xx-large; font-weight: bold; color:#0E5398;}
+ .byline{font-family:Arial,Helvetica,sans-serif; color:#333333; font-size:xx-small;}
+ .storytext{font-family:Arial,Helvetica,sans-serif; font-size:medium;}
+ '''
+
+ def print_version(self, url):
+ seg = url.split('/')
+ x = seg[5].split('-')
+ baseURL = 'http://www.sltrib.com/csp/cms/sites/sltrib/pages/printerfriendly.csp?id='
+ s = baseURL + x[0]
+ return s
+
+ def get_cover_url(self):
+ cover_url = None
+ href = 'http://www.newseum.org/todaysfrontpages/hr.asp?fpVname=UT_SLT&ref_pge=lst'
+ soup = self.index_to_soup(href)
+ div = soup.find('div',attrs={'class':'tfpLrgView_container'})
+ if div:
+ cover_url = div.img['src']
+ return cover_url
+
diff --git a/resources/recipes/thai_post_daily.recipe b/resources/recipes/thai_post_daily.recipe
index 2be17cc37f..4523a9331a 100644
--- a/resources/recipes/thai_post_daily.recipe
+++ b/resources/recipes/thai_post_daily.recipe
@@ -3,6 +3,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
class AdvancedUserRecipe1299054026(BasicNewsRecipe):
title = u'Thai Post Daily'
__author__ = 'Chotechai P.'
+ language = 'th'
oldest_article = 7
max_articles_per_feed = 100
cover_url = 'http://upload.wikimedia.org/wikipedia/th/1/10/ThaiPost_Logo.png'
diff --git a/resources/recipes/tvmania.recipe b/resources/recipes/tvmania.recipe
new file mode 100644
index 0000000000..a2d9fcc060
--- /dev/null
+++ b/resources/recipes/tvmania.recipe
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+tvmania.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Tvmania(BasicNewsRecipe):
+ title = u'TVmania'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'Programe TV'
+ publisher = u'TVmania'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,TV'
+ encoding = 'utf-8'
+ cover_url = 'http://www.tvmania.ro/wp-content/themes/tvmania/images/logo.png'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'class':'articol'})
+ , dict(name='font', attrs={'class':'mic'})
+ , dict(name='div', attrs={'id':'header_recomandari'})
+ , dict(name='div', attrs={'class':'main-image'})
+ , dict(name='div', attrs={'id':'articol_recomandare'})
+
+ ]
+
+ remove_tags = [
+ dict(name='div', attrs={'class':['iLikeThis']})
+ , dict(name='span', attrs={'class':['tag-links']})
+ ]
+
+ remove_tags_after = [
+ dict(name='div', attrs={'class':['iLikeThis']})
+ , dict(name='span', attrs={'class':['tag-links']})
+ ]
+
+ feeds = [
+ (u'Feeds', u'http://www.tvmania.ro/feed')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/recipes/viva.recipe b/resources/recipes/viva.recipe
new file mode 100644
index 0000000000..df697ea298
--- /dev/null
+++ b/resources/recipes/viva.recipe
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+#!/usr/bin/env python
+
+__license__ = 'GPL v3'
+__copyright__ = u'2011, Silviu Cotoar\u0103'
+'''
+viva.ro
+'''
+
+from calibre.web.feeds.news import BasicNewsRecipe
+
+class Viva(BasicNewsRecipe):
+ title = u'Viva'
+ __author__ = u'Silviu Cotoar\u0103'
+ description = u'Vedete si evenimente'
+ publisher = u'Viva'
+ oldest_article = 25
+ language = 'ro'
+ max_articles_per_feed = 100
+ no_stylesheets = True
+ use_embedded_content = False
+ category = 'Ziare,Reviste,Femei'
+ encoding = 'utf-8'
+ cover_url = 'http://www.viva.ro/images/default/viva.gif'
+
+ conversion_options = {
+ 'comments' : description
+ ,'tags' : category
+ ,'language' : language
+ ,'publisher' : publisher
+ }
+
+ extra_css = '''
+ h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
+ h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
+ .byline {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ .date {font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
+ p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .copyright {font-family:Arial,Helvetica,sans-serif;font-size:xx-small;text-align:center}
+ .story{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .entry-asset asset hentry{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .pagebody{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .maincontentcontainer{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ .story-body{font-family:Arial,Helvetica,sans-serif;font-size:small;}
+ body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
+ '''
+
+ keep_only_tags = [
+ dict(name='div', attrs={'class':'articol'})
+ , dict(name='div', attrs={'class':'gallery clearfix'})
+ , dict(name='div', attrs={'align':'justify'})
+ ]
+
+ remove_tags = [
+ dict(name='div', attrs={'class':['breadcrumbs']})
+ , dict(name='div', attrs={'class':['links clearfix']})
+ , dict(name='a', attrs={'id':['img_arrow_right']})
+ , dict(name='img', attrs={'id':['zoom']})
+ , dict(name='div', attrs={'class':['foto_counter']})
+ , dict(name='div', attrs={'class':['gal_select clearfix']})
+ ]
+
+ remove_tags_after = [
+ dict(name='div', attrs={'class':['links clearfix']})
+ ]
+
+ feeds = [
+ (u'Vedete', u'http://feeds.feedburner.com/viva-Vedete')
+ ,(u'Evenimente', u'http://feeds.feedburner.com/viva-Evenimente')
+ ,(u'Frumusete', u'http://feeds.feedburner.com/viva-Beauty-Fashion')
+ ,(u'Noutati', u'http://feeds.feedburner.com/viva-Noutati')
+ ]
+
+ def preprocess_html(self, soup):
+ return self.adeify_images(soup)
diff --git a/resources/template-functions.json b/resources/template-functions.json
index fe4379d701..c19627c6c7 100644
--- a/resources/template-functions.json
+++ b/resources/template-functions.json
@@ -16,6 +16,7 @@
"template": "def evaluate(self, formatter, kwargs, mi, locals, template):\n template = template.replace('[[', '{').replace(']]', '}')\n return formatter.__class__().safe_format(template, kwargs, 'TEMPLATE', mi)\n",
"print": "def evaluate(self, formatter, kwargs, mi, locals, *args):\n print args\n return None\n",
"titlecase": "def evaluate(self, formatter, kwargs, mi, locals, val):\n return titlecase(val)\n",
+ "subitems": "def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index):\n if not val:\n return ''\n si = int(start_index)\n ei = int(end_index)\n items = [v.strip() for v in val.split(',')]\n rv = set()\n for item in items:\n component = item.split('.')\n try:\n if ei == 0:\n rv.add('.'.join(component[si:]))\n else:\n rv.add('.'.join(component[si:ei]))\n except:\n pass\n return ', '.join(sorted(rv, key=sort_key))\n",
"sublist": "def evaluate(self, formatter, kwargs, mi, locals, val, start_index, end_index, sep):\n if not val:\n return ''\n si = int(start_index)\n ei = int(end_index)\n val = val.split(sep)\n try:\n if ei == 0:\n return sep.join(val[si:])\n else:\n return sep.join(val[si:ei])\n except:\n return ''\n",
"test": "def evaluate(self, formatter, kwargs, mi, locals, val, value_if_set, value_not_set):\n if val:\n return value_if_set\n else:\n return value_not_set\n",
"eval": "def evaluate(self, formatter, kwargs, mi, locals, template):\n from formatter import eval_formatter\n template = template.replace('[[', '{').replace(']]', '}')\n return eval_formatter.safe_format(template, locals, 'EVAL', None)\n",
diff --git a/src/calibre/constants.py b/src/calibre/constants.py
index 2c4ae9d512..0013486506 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.48'
+__version__ = '0.7.49'
__author__ = "Kovid Goyal Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7223,7 +7265,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr ""
@@ -7393,9 +7435,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr ""
@@ -7422,44 +7466,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr ""
@@ -7601,22 +7656,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8458,21 +8513,21 @@ msgid "Password needed"
msgstr ""
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8550,177 +8605,212 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
msgstr ""
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr ""
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
@@ -8840,12 +8930,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr ""
@@ -8854,29 +8944,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -8989,12 +9079,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9171,6 +9261,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9419,34 +9513,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9534,7 +9628,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9543,7 +9637,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9611,12 +9705,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr ""
@@ -9624,34 +9718,68 @@ msgstr ""
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11887,52 +12068,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7320,7 +7362,7 @@ msgstr "إختيار التهيئة"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr "التهيئة"
@@ -7490,9 +7532,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr "تاريخ"
@@ -7519,44 +7563,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr "ترتيب المؤلف"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr "ISBN"
@@ -7698,22 +7753,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8555,21 +8610,21 @@ msgid "Password needed"
msgstr ""
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr "&اسم المستخدم:"
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr "&كلمة السرّ"
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8647,179 +8702,213 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
-msgstr "&بحث:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
+msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr "أنشأه: "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr "آخر تنزيل: لم ينزّل من قبل"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr "آخر تنزيل"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr "جدولة تنزيل الأخبار"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
-msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
+msgstr "&بحث:"
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr "ج&دولة للتنزيل:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr "كل "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr "اليوم"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr "الأثنين"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr "الثلاثاء"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr "الأربعاء"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr "الخميس"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr "الجمعة"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr "السبت"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr "الأحد"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr "في"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr "&حساب"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr "&تنزيل الآن"
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-"حذف الأخبار المنزّلة التي أقدم من العدد المخصص من الأيام. اضبطه بـ0 لتعطيله."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
-msgstr "حذف أخبار أقدم من "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
+msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
msgid "contains"
@@ -8938,12 +9027,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr "المؤلفون"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr "الناشرون"
@@ -8952,29 +9041,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -9091,12 +9180,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9273,6 +9362,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9521,34 +9614,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr "متصل "
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9636,7 +9729,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9645,7 +9738,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9713,12 +9806,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr ""
@@ -9726,30 +9819,64 @@ msgstr ""
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11985,52 +12165,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr "خطأ في التحويل"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7223,7 +7265,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr ""
@@ -7393,9 +7435,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr ""
@@ -7422,44 +7466,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr ""
@@ -7601,22 +7656,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8458,21 +8513,21 @@ msgid "Password needed"
msgstr ""
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8550,177 +8605,212 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
msgstr ""
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr ""
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
@@ -8840,12 +8930,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr ""
@@ -8854,29 +8944,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -8989,12 +9079,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9171,6 +9261,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9419,34 +9513,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9534,7 +9628,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9543,7 +9637,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9611,12 +9705,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr ""
@@ -9624,34 +9718,68 @@ msgstr ""
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11887,52 +12068,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7241,7 +7283,7 @@ msgstr "Избор на формат"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr "Формат"
@@ -7411,9 +7453,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr "Дата"
@@ -7440,44 +7484,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr "ISBN"
@@ -7619,22 +7674,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr "Малки букви"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr "Главни букви"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8479,21 +8534,21 @@ msgid "Password needed"
msgstr "Необходима е парола"
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr "&Потребителско име:"
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr "П&арола:"
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8571,177 +8626,212 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
-msgstr "&Търсене:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
+msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr "преди %d дни, %d часа и %d минути"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr "Последно свалено"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr "График за сваляне на новини"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr "Няма интернет връзка"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
-msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
+msgstr "&Търсене:"
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr "Всеки "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr "ден"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr "Понеделник"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr "Вторник"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr "Сряда"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr "Четвъртък"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr "Петък"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr "Събота"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr "Неделя"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr "в"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr "Д&опълнителни"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr ""
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
@@ -8861,12 +8951,12 @@ msgid "Choose formats"
msgstr "Избор на формати"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr "Автори"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr "Издатели"
@@ -8875,29 +8965,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -9010,12 +9100,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9192,6 +9282,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9440,34 +9534,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9555,7 +9649,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9564,7 +9658,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9632,12 +9726,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr "Размер (MB)"
@@ -9645,34 +9739,68 @@ msgstr "Размер (MB)"
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr "Книга %s от %s."
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11912,52 +12093,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7218,7 +7260,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr ""
@@ -7388,9 +7430,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr ""
@@ -7417,44 +7461,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr ""
@@ -7596,22 +7651,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8453,21 +8508,21 @@ msgid "Password needed"
msgstr ""
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8545,177 +8600,212 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
msgstr ""
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr ""
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
@@ -8835,12 +8925,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr ""
@@ -8849,29 +8939,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -8984,12 +9074,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9166,6 +9256,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9414,34 +9508,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9529,7 +9623,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9538,7 +9632,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9606,12 +9700,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr ""
@@ -9619,34 +9713,68 @@ msgstr ""
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11882,52 +12063,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr ""
@@ -7218,7 +7260,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr ""
@@ -7388,9 +7430,11 @@ 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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr ""
@@ -7417,44 +7461,55 @@ msgstr ""
msgid "Author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr ""
@@ -7596,22 +7651,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr ""
@@ -8453,21 +8508,21 @@ msgid "Password needed"
msgstr ""
#: /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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr ""
#: /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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8545,177 +8600,212 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
msgstr ""
-#: /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:200
-msgid "Download &all scheduled"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
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:215
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /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:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr ""
-#: /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."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
@@ -8835,12 +8925,12 @@ msgid "Choose formats"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr ""
@@ -8849,29 +8939,29 @@ msgid " (not on any book)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr ""
@@ -8984,12 +9074,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -9166,6 +9256,10 @@ msgstr ""
msgid "Choose a recipe file"
msgstr ""
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -9414,34 +9508,34 @@ msgstr ""
msgid "Shift+Alt+T"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr ""
@@ -9529,7 +9623,7 @@ msgid "Show books in the main memory of the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr ""
@@ -9538,7 +9632,7 @@ msgid "Show books in storage card A"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr ""
@@ -9606,12 +9700,12 @@ msgid "Edit template"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr ""
@@ -9619,34 +9713,68 @@ msgstr ""
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
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:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr ""
@@ -11882,52 +12063,52 @@ msgstr ""
msgid "Calibre Quick Start Guide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
"automatically."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
"Your donation helps keep calibre development going."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s Cannot upload books to device there is no more free space available "
msgstr " No es pot desar llibres al dispositiu perquè no hi ha prou espai "
@@ -8162,7 +8206,7 @@ msgstr "Trieu un format"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1169
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Format"
msgstr "Format"
@@ -8340,9 +8384,11 @@ msgstr "Ubicació"
#: /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:979
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr "Data"
@@ -8375,47 +8421,62 @@ msgstr ""
msgid "Author sort"
msgstr "Ordre per autor"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:117
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1324
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
msgid "Invalid author name"
msgstr "El nom de l'autor no és vàlid"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:118
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
msgid "Author names cannot contain & characters."
msgstr "Els noms d'autor no poden contenir caràcters &."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
msgid "Manage authors"
msgstr "Administra els autors"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:72
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
msgid "Sort by author"
msgstr "Ordena per autor"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:73
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:76
msgid "Sort by author sort"
msgstr "Ordena per ordre per autor"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:77
msgid ""
-"Reset all the author sort values to a value automatically generated from the "
-"author. Exactly how this value is automatically generated can be controlled "
-"via Preferences->Advanced->Tweaks"
+"Reset all the author sort values to a value automatically\n"
+"generated from the author. Exactly how this value is automatically\n"
+"generated can be controlled via Preferences->Advanced->Tweaks"
msgstr ""
-"Restableix tots els valors d'ordre per autor a un valor generat "
-"automàticament a partir de l'autor. Es pot controlar la manera exacta com es "
-"genera automàticament aquest valor a Preferències->Avançat->Ajustos"
+"Estableix tots els valors d'ordre per autor a un valor generat\n"
+"automàticament a partir de l'autor. Es pot controlar la manera\n"
+"exacta com es genera aquest valor a Preferències->Avançat->\n"
+"Ajustaments"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:80
msgid "Recalculate all author sort values"
msgstr "Torna a calcular tots els valors d'ordre per autor"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:81
+msgid ""
+"Copy author sort to author for every author. You typically use this button\n"
+"after changing Preferences->Advanced->Tweaks->Author sort name algorithm"
+msgstr ""
+"Copia l'ordre per autor a l'autor per a tots els autors. Normalment es fa\n"
+"servir aquest botó després de canviar Preferències->Avançat->Ajustaments->\n"
+"Algoritme d'ordre per autor"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:83
+msgid "Copy all author sort values to author"
+msgstr "Copia tots els valors d'odre per autor a autor"
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62
msgid "Author Sort"
msgstr "Ordre per autor"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
msgid "ISBN"
msgstr "ISBN"
@@ -8567,22 +8628,22 @@ msgid "Working"
msgstr "S'està treballant..."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Lower Case"
msgstr "Minúscules"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
msgid "Upper Case"
msgstr "Majúscules"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
msgid "Title Case"
msgstr "Inicials en majúscula"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
msgid "Capitalize"
msgstr "Posa en majúscules"
@@ -9526,21 +9587,21 @@ msgid "Password needed"
msgstr "Cal 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/dialogs/scheduler_ui.py:233
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
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/dialogs/scheduler_ui.py:234
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
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/dialogs/scheduler_ui.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -9632,133 +9693,124 @@ msgstr "Afegeix un cerca desada nova"
msgid "Change the contents of the saved search"
msgstr "Canvieu el contingut de la cerca desada"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:35
-msgid "&Search:"
-msgstr "&Cerca:"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+msgid "%s news sources"
+msgstr "%s fonts de notícies"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
msgid "Need username and password"
msgstr "Fa falta un nom d'usuari i una contrasenya"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:134
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
msgid "You must provide a username and/or password to use this news source."
msgstr ""
"Heu de donar un nom d'usuari i/o una contrasenya per a aquesta font de "
"notícies."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
msgid "Account"
msgstr "Compte"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:174
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "(optional)"
msgstr "(opcional)"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
msgid "(required)"
msgstr "(necessari)"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:192
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
msgid "Created by: "
msgstr "Creat per: "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
msgid "Last downloaded: never"
msgstr "Darrera descàrrega: mai"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
msgid "%d days, %d hours and %d minutes ago"
msgstr "Fa %d dies, %d hores i %d minuts"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
msgid "Last downloaded"
msgstr "Darrera descàrrega"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
msgid "Schedule news download"
msgstr "Planifica la descàrrega de notícies"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:243
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
msgid "Add a custom news source"
msgstr "Afegeix una font nova de notícies"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
msgid "Download all scheduled new sources"
msgstr "Descarrega totes les fonts de notícies planificades"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
msgid "No internet connection"
msgstr "No hi ha connexió a internet"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
msgid "Cannot download news as no internet connection is active"
msgstr ""
"No es poden baixar notícies perquè no hi ha connexió d'internet activa"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
-msgid "Recipes"
-msgstr "Receptes"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+msgid "&Search:"
+msgstr "&Cerca:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199
-msgid "Download all scheduled recipes at once"
-msgstr "Descarrega d'un cop totes les receptes que s'ha planificat"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200
-msgid "Download &all scheduled"
-msgstr "Descarrega &totes les que s'ha planificat"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "blurb"
msgstr "publicitat"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid "&Schedule for download:"
msgstr "Planifica la de&scàrrega:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
msgid "Every "
msgstr "Cada "
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "day"
msgstr "dia"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "Monday"
msgstr "Dilluns"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid "Tuesday"
msgstr "Dimarts"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
msgid "Wednesday"
msgstr "Dimecres"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "Thursday"
msgstr "Dijous"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
msgid "Friday"
msgstr "Divendres"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Saturday"
msgstr "Dissabte"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Sunday"
msgstr "Diumenge"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
msgid "at"
msgstr "a"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
msgid ""
"Interval at which to download this recipe. A value of zero means that the "
"recipe will be downloaded every hour."
@@ -9766,52 +9818,108 @@ msgstr ""
"Interval de descàrrega d'aquesta recepta. Un valor de zero implica que es "
"descarregarà la recepta cada hora."
-#: /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/scheduler_ui.py:231
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268
msgid " days"
msgstr " dies"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:232
msgid "&Account"
msgstr "Com&pte"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
"Per tal que la planificació funcioni heu de deixar el calibre en execució."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
msgid "&Schedule"
msgstr "&Planifica"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
msgid "Add &title as tag"
msgstr "Afegeix el &títol com a etiqueta"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
msgid "&Extra tags:"
msgstr "&Etiquetes addcionals:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+msgid ""
+"Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep "
+"all (disable)."
+msgstr ""
+"Nombre màxim de còpies (exemplars) que es desaran d'aquesta recepta. Poseu-"
+"hi «0» per desar-ho tot (inhabilita)."
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+msgid "&Keep at most:"
+msgstr "&Desa com a màxim:"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+msgid ""
+" When set, this option will cause calibre to keep, at most, the specified "
+"number of issues of this periodical. Every time a new issue is downloaded, "
+"the oldest one is deleted, if the total is larger than this number.\n"
+" Note that this feature only works if you have the option to add the title "
+"as tag checked, above.\n"
+" Also, the setting for deleting periodicals older than a number of days, "
+"below, takes priority over this setting."
+msgstr ""
+" Si s'activa, aquesta opció fa que el calibre conservi com a màxim el "
+"nombre d'exemplars que s'especifiqui de la publicació. Cada cop que es "
+"descarregui un exemplar nou el més vell se suprimeix, si el total és més "
+"gran que aquest número.\n"
+" Aquesta característica només funciona si heu activat l'opció d'afegir el "
+"títol com a etiqueta, més amunt.\n"
+" A més, l'opció de suprimir publicacions més antigues d'un nombre de dies, "
+"més avall, té prioritat sobre aquesta opció."
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+msgid "all issues"
+msgstr "tots els exemplars"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+msgid " issues"
+msgstr " exemplars"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
msgid "&Advanced"
msgstr "&Avançat"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
msgid "&Download now"
msgstr "&Descarrega-ho ara"
-#: /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 ""
-"Suprimeix les notícies que s'hagin descarregat més antigues que el nombre de "
-"dies que s'indica. Introduïu zero per inhabilitar-ho."
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+msgid "&Delete downloaded news older than:"
+msgstr "&Suprimeix les notícies descarregades anteriors a:"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "Delete downloaded news older than "
-msgstr "Suprimeix les notícies més antigues que "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+msgid ""
+" Delete downloaded news older than the specified number of days. Set to "
+"zero to disable.\n"
+" You can also control the maximum number of issues of a specific "
+"periodical that are kept by clicking the Advanced tab for that periodical "
+"above."
+msgstr ""
+" Suprimeix les notícies descarregades més antigues al nombre de dies que "
+"s'especifica. Establiu-ho a zero per a inhabilitar-ho.\n"
+" També podeu controlar el número màxim d'exemplars que es conserva d'una "
+"publicació concreta fent clic a la pestanya «Avançat» per a la publicació."
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+msgid "never delete"
+msgstr "no suprimeixis mai"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+msgid "Download all scheduled news sources at once"
+msgstr "Descarrega totes les fonts de notícies programades alhora"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+msgid "Download &all scheduled"
+msgstr "Descarrega &totes les que s'ha planificat"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:41
msgid "contains"
@@ -9941,12 +10049,12 @@ msgid "Choose formats"
msgstr "Tria de formats"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:98
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:102
msgid "Authors"
msgstr "Autors"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:129
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:136
msgid "Publishers"
msgstr "Editorial"
@@ -9955,12 +10063,12 @@ msgid " (not on any book)"
msgstr " (a cap llibre)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:176
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:205
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:207
msgid "Invalid name"
msgstr "El nom no és vàlid"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:177
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:206
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:208
msgid ""
"That name contains leading or trailing periods, multiple periods in a row or "
"spaces before or after periods."
@@ -9968,19 +10076,19 @@ msgstr ""
"Aquest nom conté punts al començament o al final, múltiples punts seguits o "
"espais abans o després de punts."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:183
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:213
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:185
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:215
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions.py:151
msgid "Name already used"
msgstr "El nom ja s'està utilitzant"
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:214
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:186
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:216
msgid "That name is already used, perhaps with different case."
msgstr ""
"Aquest nom ja està en ús, potser amb majúscules/minúscules diferents."
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:227
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:229
msgid ""
"The current tag category will be permanently deleted. Are you sure?"
msgstr "L'etiqueta actual s'esborrarà permanentment. N'esteu segur?"
@@ -10103,12 +10211,12 @@ msgid "%s (was %s)"
msgstr "%s (era %s)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1275
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
msgid "Item is blank"
msgstr "L'element està en blanc"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1276
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
msgid "An item cannot be set to nothing. Delete it instead."
msgstr "No es pot deixar un element en blanc. En tot cas l'heu d'esborrar."
@@ -10295,6 +10403,10 @@ msgstr "Tria una recepta integrada"
msgid "Choose a recipe file"
msgstr "Tria un fitxer de recepta"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+msgid "Recipes"
+msgstr "Receptes"
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
msgid ""
"You will lose any unsaved changes. To save your changes, click the "
@@ -10570,34 +10682,34 @@ msgstr "l'explorador d'etiquetes"
msgid "Shift+Alt+T"
msgstr "Maj+Alt+T"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29
msgid "version"
msgstr "versió"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30
msgid "created by Kovid Goyal"
msgstr "ha estat creat per Kovid Goyal"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:166
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:175
msgid "Connected "
msgstr "Connectat "
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:188
msgid "Update found"
msgstr "S'ha trobat una actualització"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:214
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:224
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:223
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:233
msgid "Book Details"
msgstr "Detalls del llibre"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:225
msgid "Alt+D"
msgstr "Alt+D"
-#: /home/kovid/work/calibre/src/calibre/gui2/init.py:226
+#: /home/kovid/work/calibre/src/calibre/gui2/init.py:235
msgid "Shift+Alt+D"
msgstr "Maj+Alt+D"
@@ -10685,7 +10797,7 @@ msgid "Show books in the main memory of the device"
msgstr "Mostra els llibres de la memòria principal del dispositiu"
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:67
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:943
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:995
msgid "Card A"
msgstr "Targeta A"
@@ -10694,7 +10806,7 @@ msgid "Show books in storage card A"
msgstr "Mostra els llibres de la targeta de memòria A"
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:69
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:945
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:997
msgid "Card B"
msgstr "Targeta B"
@@ -10767,12 +10879,12 @@ msgid "Edit template"
msgstr "Edita la plantilla"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:66
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:251
msgid "On Device"
msgstr "Al dispositiu"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:286
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:301
msgid "Size (MB)"
msgstr "Grandària (MB)"
@@ -10780,34 +10892,68 @@ msgstr "Grandària (MB)"
msgid "Book %s of %s."
msgstr "Llibre %s de %s."
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:735
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1289
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:710
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+msgid "checked"
+msgstr "activat"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:624
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:540
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:554
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:564
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:954
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "yes"
+msgstr "sí"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+msgid "unchecked"
+msgstr "desactivat"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:626
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:542
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:551
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:561
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:956
+#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
+msgid "no"
+msgstr "no"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:754
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1308
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:748
msgid "The lookup/search name is \"{0}\""
msgstr "El nom de la cerca és «{0}»"
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:741
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:760
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1310
msgid "This book's UUID is \"{0}\""
msgstr "L'UUID del llibre és «{0}»"
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:976
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
msgid "In Library"
msgstr "A la biblioteca"
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:980
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999
msgid "Size"
msgstr "Mida"
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
msgid "Book %s of %s."
msgstr "Llibre %s de %s."
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1269
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1288
msgid "Marked for deletion"
msgstr "S'ha marcat per suprimir"
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1272
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1291
msgid "Double click to edit me Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's "
"for year. Click Find again to go to first match"
msgstr ""
"No hi ha més coincidències. Feu clic a «Cerca» per tornar a la "
"primera coincidència."
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by name"
msgstr "Ordena per nom"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1993
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2055
msgid "Sort by popularity"
msgstr "Ordena per popularitat"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1994
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2056
msgid "Sort by average rating"
msgstr "Ordena per valoració mitjana"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1997
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2059
msgid "Set the sort order for entries in the Tag Browser"
msgstr "Estableix l'ordre de les entrades a l'explorador d'etiquetes"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match all"
msgstr "Fes-ho coincidir tot"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2003
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2065
msgid "Match any"
msgstr "Qualsevol coincidència"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2008
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2070
msgid ""
"When selecting multiple entries in the Tag Browser match any or all of them"
msgstr ""
"Quan es seleccionin múltiples entrades a l'explorador d'etiquetes fes que "
"coincideixi una qualsevol o totes"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2012
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2074
msgid "Manage &user categories"
msgstr "Administra les categories d'&usuari"
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2015
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:2077
msgid "Add your own categories to the Tag Browser"
msgstr "Afegiu les vostres categories a l'explorador d'etiquetes"
@@ -13402,11 +13602,11 @@ msgstr "&Expulseu el dispositiu connectat"
msgid "Calibre Quick Start Guide"
msgstr "Guia d'inici ràpid del calibre"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
msgid "Debug mode"
msgstr "Mode de depuració"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:303
msgid ""
"You have started calibre in debug mode. After you quit calibre, the debug "
"log will be available in the file: %s The log will be displayed "
@@ -13416,19 +13616,19 @@ msgstr ""
"el registre de depuració estarà disponible al fitxer: %s El registre es "
"mostrarà automàticament."
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:493
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:495
msgid "Conversion Error"
msgstr "Error de conversió"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518
msgid "Recipe Disabled"
msgstr "Recepta inhabilitada"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:534
msgid "Failed"
msgstr "Ha fallat"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:571
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development. "
@@ -13438,11 +13638,11 @@ msgstr ""
"útil, considereu fer una donació per donar suport al seu desenvolupament. La "
"vostra donació ajudarà que el desenvolupament del calibre continuï."
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:595
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:597
msgid "There are active jobs. Are you sure you want to quit?"
msgstr "Hi ha tasques actives. Segur que voleu sortir?"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600
msgid ""
" is communicating with the device! Migrating old database to ebook library in %s S'està migrant la base de dades antiga a la biblioteca de %s Field template. Uses the same syntax as save templates."
#~ msgstr ""
#~ " Plantilla de camp. Fa servir la mateixa sintaxi que les plantilles de "
@@ -17997,6 +18233,13 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ msgid "You must provide the --really-do-it option to do a recovery"
#~ msgstr "Heu d'introduir l'opció --really-do-it per fer la recuperació"
+#~ msgid ""
+#~ "Delete downloaded news older than the specified number of days. Set to zero "
+#~ "to disable."
+#~ msgstr ""
+#~ "Suprimeix les notícies que s'hagin descarregat més antigues que el nombre de "
+#~ "dies que s'indica. Introduïu zero per inhabilitar-ho."
+
#~ msgid "Download covers from librarything.com"
#~ msgstr "Descarrega portades des de librarything.com"
@@ -18052,6 +18295,9 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ "No s'ha pogut aconseguir l'article. Executeu el programa amb -vv per veure'n "
#~ "el motiu"
+#~ msgid "Delete downloaded news older than "
+#~ msgstr "Suprimeix les notícies més antigues que "
+
#~ msgid "Send specific format"
#~ msgstr "Envia un format específic"
@@ -18375,6 +18621,12 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ "No hi ha llibres per catalogar\n"
#~ "Comproveu les etiquetes d'exclusió"
+#~ msgid "Copy Image"
+#~ msgstr "Copia la imatge"
+
+#~ msgid "Paste Image"
+#~ msgstr "Enganxa la imatge"
+
#~ msgid "Use a wizard to help construct the XPath expression"
#~ msgstr "Utilitza un assistent d'ajuda per construir l'expressió XPath"
diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot
index 0ff8a11443..27117db60d 100644
--- a/src/calibre/translations/calibre.pot
+++ b/src/calibre/translations/calibre.pot
@@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: calibre 0.7.48\n"
-"POT-Creation-Date: 2011-03-04 12:40+MST\n"
-"PO-Revision-Date: 2011-03-04 12:40+MST\n"
+"Project-Id-Version: calibre 0.7.49\n"
+"POT-Creation-Date: 2011-03-11 12:26+MST\n"
+"PO-Revision-Date: 2011-03-11 12:26+MST\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@@ -31,10 +31,10 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:660
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:455
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:97
-#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:100
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:98
+#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:101
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:423
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:430
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:127
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:100
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:102
@@ -82,9 +82,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:884
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:981
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:986
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1052
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:994
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:999
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1065
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:145
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:152
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:65
@@ -110,8 +110,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82
-#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:100
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:101
+#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:312
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:314
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:308
@@ -132,29 +132,29 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:145
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:185
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:732
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:188
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:734
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:366
#: /home/kovid/work/calibre/src/calibre/gui2/email.py:235
#: /home/kovid/work/calibre/src/calibre/gui2/email.py:244
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:421
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:440
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:991
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1184
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:430
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:449
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:988
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1181
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:70
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:167
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:185
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:112
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:197
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:199
#: /home/kovid/work/calibre/src/calibre/library/cli.py:216
#: /home/kovid/work/calibre/src/calibre/library/database.py:914
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:486
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:492
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:494
#: /home/kovid/work/calibre/src/calibre/library/database2.py:502
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1706
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:1816
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2790
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2792
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2925
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:513
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1716
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:1826
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2804
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2806
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2939
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:233
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:158
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:161
@@ -432,7 +432,7 @@ msgid "Setup the calibre Content Server which will give you access to your calib
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:995
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:267
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:268
msgid "Plugins"
msgstr ""
@@ -673,11 +673,11 @@ msgstr ""
msgid "Communicate with Android phones."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:83
+#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:86
msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:130
+#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:133
msgid "Communicate with S60 phones."
msgstr ""
@@ -706,14 +706,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:380
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:949
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:989
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2971
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3011
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2976
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3016
msgid "%d of %d"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:387
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:994
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3017
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3022
msgid "finished"
msgstr ""
@@ -738,7 +738,7 @@ msgid ""
"Click 'Show Details' for a list."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2552
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2557
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@@ -746,23 +746,23 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:915
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:945
#: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:71
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:264
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:288
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:301
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2654
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:293
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:306
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2668
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:159
msgid "News"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2553
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2558
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:634
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2616
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2634
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2630
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2648
msgid "Catalog"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2875
+#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2880
msgid "Communicate with iTunes."
msgstr ""
@@ -1045,7 +1045,7 @@ msgid "The Kobo supports only one collection currently: the \"Im_Reading\" list.
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:466
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:368
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:383
msgid "Not Implemented"
msgstr ""
@@ -1179,7 +1179,7 @@ msgid "Set this option if you want the cover thumbnails to have the same aspect
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:190
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:69
msgid "Unnamed"
msgstr ""
@@ -1310,83 +1310,83 @@ msgstr ""
msgid "Get device information..."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:190
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:197
msgid "Rendered %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:193
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:200
msgid "Failed %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:247
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:254
msgid ""
"Failed to process comic: \n"
"\n"
"%s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:266
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:273
msgid "Number of colors for grayscale image conversion. Default: %default. Values of less than 256 may result in blurred text on your device if you are creating your comics in EPUB format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:270
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:277
msgid "Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:273
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:280
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:275
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282
msgid "Disable sharpening."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:277
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:284
msgid "Disable trimming of comic pages. For some comics, trimming might remove content as well as borders."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:280
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:287
msgid "Don't split landscape images into two portrait images"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:282
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289
msgid "Keep aspect ratio and scale image using screen height as image width for viewing in landscape mode."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292
msgid "Used for right-to-left publications like manga. Causes landscape pages to be split into portrait pages from right to left."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:289
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:296
msgid "Enable Despeckle. Reduces speckle noise. May greatly increase processing time."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:292
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:299
msgid "Don't sort the files found in the comic alphabetically by name. Instead use the order they were added to the comic."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:296
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:303
msgid "The format that images in the created ebook are converted to. You can experiment to see which format gives you optimal size and look on your device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:300
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:307
msgid "Apply no processing to the image"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309
msgid "Do not convert the image to grayscale (black and white)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:304
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:311
msgid "Specify the image size as widthxheight pixels. Normally, an image size is automatically calculated from the output profile, this option overrides it."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:308
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315
msgid "When converting a CBC do not add links to each page to the TOC. Note this only applies if the TOC has more than one section"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:447
-#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:459
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:454
+#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:466
msgid "Page"
msgstr ""
@@ -2174,14 +2174,14 @@ msgid "TEMPLATE ERROR"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:576
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:554
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:553
msgid "No"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:576
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:554
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:553
msgid "Yes"
msgstr ""
@@ -2192,9 +2192,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:65
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:418
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:996
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:321
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:427
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:993
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:331
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:576
msgid "Title"
msgstr ""
@@ -2202,8 +2202,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:659
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:67
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:423
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:997
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:432
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:994
msgid "Author(s)"
msgstr ""
@@ -2219,36 +2219,36 @@ msgid "Producer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:662
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:40
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:244
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:247
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:129
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:79
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1203
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:389
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1200
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:211
msgid "Comments"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:664
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:170
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:30
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:31
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:368
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1199
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:377
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1196
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:65
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:171
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:755
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:753
msgid "Tags"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:30
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:74
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:385
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1208
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:394
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1205
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:65
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:114
msgid "Series"
@@ -2259,7 +2259,7 @@ msgid "Language"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:669
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1191
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
msgid "Timestamp"
msgstr ""
@@ -2362,23 +2362,23 @@ msgstr ""
msgid "Cover download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:79
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:81
msgid "Download covers from openlibrary.org"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:107
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:111
msgid "ISBN: %s not found"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:117
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:121
msgid "Download covers from amazon.com"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:205
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:211
msgid "Download covers from Douban.com"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:214
+#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/covers.py:220
msgid "Douban.com API timed out. Try again later."
msgstr ""
@@ -2606,7 +2606,7 @@ msgid "Cover saved to file "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1346
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1471
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1484
msgid "Cover"
msgstr ""
@@ -2655,70 +2655,70 @@ msgstr ""
msgid "This is an Amazon Topaz book. It cannot be processed."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1472
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1485
msgid "Title Page"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1473
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1486
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199
msgid "Table of Contents"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1474
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1487
msgid "Index"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1475
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1488
msgid "Glossary"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1476
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1489
msgid "Acknowledgements"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1477
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1490
msgid "Bibliography"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1478
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1491
msgid "Colophon"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1479
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1492
msgid "Copyright"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1480
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1493
msgid "Dedication"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1481
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1494
msgid "Epigraph"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1482
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1495
msgid "Foreword"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1483
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1496
msgid "List of Illustrations"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1484
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1497
msgid "List of Tables"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1485
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1498
msgid "Notes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1486
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1499
msgid "Preface"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1487
+#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1500
msgid "Main Text"
msgstr ""
@@ -2740,7 +2740,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:169
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:66
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:753
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:751
msgid "Rating"
msgstr ""
@@ -3351,42 +3351,42 @@ msgstr ""
msgid "Creating book records from ISBNs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:248
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:297
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:263
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:312
msgid "Uploading books to device."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:268
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:283
msgid "Supported books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:271
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:286
msgid "Select books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:323
msgid "Merged some books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:309
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:324
msgid "The following duplicate books were found and incoming book formats were processed and merged into your Calibre database according to your automerge settings:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:329
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:344
msgid "Failed to read metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:330
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:345
msgid "Failed to read metadata from the following"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:351
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:356
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:366
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:371
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:390
msgid "Add to library"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:356
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:371
#: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:116
#: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:85
@@ -3394,11 +3394,11 @@ msgstr ""
msgid "No book selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:369
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:384
msgid "The following books are virtual and cannot be added to the calibre library:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:375
+#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:390
msgid "No book files found"
msgstr ""
@@ -3557,7 +3557,7 @@ msgid "Note that the actual library folder will be renamed."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:225
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
msgid "Already exists"
msgstr ""
@@ -3576,11 +3576,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:244
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:78
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:360
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:424
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:430
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:273
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:274
msgid "Are you sure?"
msgstr ""
@@ -3611,8 +3611,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:306
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:111
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:284
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:338
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:286
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:340
msgid "Success"
msgstr ""
@@ -3623,7 +3623,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:312
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:689
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:911
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:963
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:186
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:276
@@ -4051,7 +4051,7 @@ msgid "Move to next highlighted match"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/next_match.py:13
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:355
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:354
msgid "N"
msgstr ""
@@ -4172,7 +4172,7 @@ msgid "Click the show details button to see which ones."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:760
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:758
msgid "Show book details"
msgstr ""
@@ -4359,32 +4359,32 @@ msgstr ""
msgid "Saved"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:56
msgid "Searching for sub-folders"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:62
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:61
msgid "Searching for books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:73
msgid "Looking for duplicates based on file hash"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:109
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:108
#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:70
msgid "Choose root folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:135
msgid "Invalid root folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:138
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:136
msgid "is not a valid root folder"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:146
msgid "Add books to calibre"
msgstr ""
@@ -4433,12 +4433,12 @@ msgstr ""
#: /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:143
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:162
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:57
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:534
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:539
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:414
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:417
@@ -4459,9 +4459,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:80
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:82
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:277
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:279
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:280
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:148
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:149
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89
@@ -4497,69 +4497,69 @@ msgstr ""
msgid "&Multiple books per folder, assumes every ebook file is a different book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:26
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:53
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:62
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:467
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:484
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:145
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:146
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:147
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:160
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:375
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:384
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1186
msgid "Path"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:27
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:57
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:148
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:149
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:150
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:153
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:374
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:383
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:63
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:137
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:24
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:124
msgid "Formats"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:28
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1000
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1192
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:29
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:997
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189
msgid "Collections"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:55
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:65
msgid "Click to open"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:56
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:367
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:373
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:379
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1198
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1202
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:57
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:376
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:388
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1195
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1199
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78
#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:83
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:346
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:344
msgid "None"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:157
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:239
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:158
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237
msgid "Paste Cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:158
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:240
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:159
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:238
msgid "Copy Cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:466
+#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:483
msgid "Double-click to open Book Details window"
msgstr ""
@@ -4632,7 +4632,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:84
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:53
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40
@@ -5537,7 +5537,7 @@ msgid "&Monospaced font family:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47
-#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115
+#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200
msgid "Metadata"
msgstr ""
@@ -5613,7 +5613,7 @@ msgid "Change the title of this book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:499
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420
msgid "&Author(s): "
msgstr ""
@@ -5627,7 +5627,7 @@ msgid "Change the author(s) of this book. Multiple authors should be separated b
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:509
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:535
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:428
msgid "&Publisher: "
msgstr ""
@@ -5638,13 +5638,13 @@ msgid "Ta&gs: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:430
msgid "Tags categorize the book. This is particularly useful while searching. Cannot upload books to device there is no more free space available "
msgstr ""
@@ -6504,7 +6504,7 @@ msgstr ""
#:
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:137
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:403
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:402
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:255
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:61
msgid "Invalid template"
@@ -6512,7 +6512,7 @@ msgstr ""
#:
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget.py:138
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:404
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:403
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:256
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:62
msgid "The template %s is invalid:"
@@ -6746,7 +6746,7 @@ msgstr ""
#:
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
-#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1188
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1185
msgid "Format"
msgstr ""
@@ -6839,6 +6839,21 @@ msgstr ""
msgid "&Move current library to new location"
msgstr ""
+#:
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:23
+msgid "Add \"%s\" to toolbars or menus"
+msgstr ""
+
+#:
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:29
+msgid "Select the toolbars and/or menus to add %s to:"
+msgstr ""
+
+#:
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45
+msgid "You can also customise the plugin locations using Preferences -> Customise the toolbar"
+msgstr ""
+
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33
msgid "Set defaults for conversion of comics (CBR/CBZ files)"
msgstr ""
@@ -6923,11 +6938,11 @@ 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:998
+#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:995
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:32
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
-#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:311
+#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:321
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:575
msgid "Date"
msgstr ""
@@ -6954,13 +6969,13 @@ msgstr ""
#:
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:128
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1371
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1379
msgid "Invalid author name"
msgstr ""
#:
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:129
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1372
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1380
msgid "Author names cannot contain & characters."
msgstr ""
@@ -7144,22 +7159,22 @@ msgid "Working"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Lower Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:261
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:413
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:411
msgid "Upper Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:416
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414
msgid "Title Case"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:417
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Capitalize"
msgstr ""
@@ -7191,156 +7206,164 @@ msgstr ""
msgid "Immediately make all changes without closing the dialog. This operation cannot be canceled or undone"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:381
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:382
msgid "Book %d:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:396
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:400
+msgid "Enter an identifier type"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:405
msgid "You can destroy your library using this feature. Changes are permanent. There is no undo function. You are strongly encouraged to back up your library before proceeding. Search and replace in text fields using character matching or regular expressions. "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:404
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:413
msgid "In character mode, the field is searched for the entered search text. The text is replaced by the specified replacement text everywhere it is found in the specified field. After replacement is finished, the text can be changed to upper-case, lower-case, or title-case. If the case-sensitive check box is checked, the search text must match exactly. If it is unchecked, the search text will match both upper- and lower-case letters"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:415
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:424
msgid "In regular expression mode, the search text is an arbitrary python-compatible regular expression. The replacement text can contain backreferences to parenthesized expressions in the pattern. The search is not anchored, and can match and replace multiple times on the same string. The modification functions (lower-case etc) are applied to the matched text, not to the field as a whole. The destination box specifies the field where the result after matching and replacement is to be assigned. You can replace the text in the field, or prepend or append the matched text. See this reference for more information on python's regular expressions, and in particular the 'sub' function."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:489
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:502
msgid "S/R TEMPLATE ERROR"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:616
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:646
msgid "You must specify a destination when source is a composite field"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:715
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:723
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:844
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:652
+msgid "You must specify a destination identifier type"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:756
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:775
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:896
msgid "Search/replace invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:716
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:757
msgid "Authors cannot be set to the empty string. Book title %s not processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:724
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:776
msgid "Title cannot be set to the empty string. Book title %s not processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:845
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:897
msgid "Search pattern is invalid: %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:897
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:949
msgid ""
"Applying changes to %d books.\n"
"Phase {0} {1}%%."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:927
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:979
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587
msgid "Delete saved search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:928
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:980
msgid "The selected saved search/replace will be deleted. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:945
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:953
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:997
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1005
msgid "Save search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:946
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:998
msgid "Search/replace name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:954
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1006
msgid "That saved search/replace already exists and will be overwritten. Are you sure?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:498
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524
msgid "Edit Meta information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:500
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:526
msgid "A&utomatically set author sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:501
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:527
msgid "&Swap title and author"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:502
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528
msgid "Author s&ort: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:503
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:529
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:504
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:530
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:786
msgid "&Rating:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:426
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:787
msgid "Rating of this book. 0-5 stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:507
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:533
msgid "No change"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:508
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:427
msgid " stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:510
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:536
msgid "Add ta&gs: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:512
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:539
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:432
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:143
msgid "Open Tag Editor"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:514
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540
msgid "&Remove tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:515
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541
msgid "Comma separated list of tags to remove from the books. "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:516
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:542
msgid "Check this box to remove all tags from the books."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:517
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:543
msgid "Remove &all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:521
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:547
msgid "If checked, the series will be cleared"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:522
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:548
msgid "&Clear series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:523
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:549
msgid ""
"If not checked, the series number for the books will be set to 1.\n"
"If checked, selected books will be automatically numbered, in the order\n"
@@ -7348,244 +7371,254 @@ 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:527
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553
msgid "&Automatically number books in this series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554
msgid ""
"Series will normally be renumbered from the highest number in the database\n"
"for that series. Checking this box will tell calibre to start numbering\n"
"from the value in the box"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557
msgid "&Force numbers to start with:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:978
msgid "&Date:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:533
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559
msgid "d MMM yyyy"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:535
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566
msgid "&Apply date"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:536
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562
msgid "&Published:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:444
msgid "Clear published date"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567
msgid "Remove &format:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:542
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568
msgid ""
"Force the title to be in title case. If both this and swap authors are checked,\n"
"title and author are swapped before the title case is set"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570
msgid "Change title to title &case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:545
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:571
msgid "Update title sort based on the current title. This will be applied only after other changes to title."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:546
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572
msgid "Update &title sort"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:547
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573
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:550
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576
msgid "Remove &stored conversion settings for the selected books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577
msgid "Change &cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:578
msgid "&Generate default cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:579
msgid "&Remove cover"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580
msgid "Set from &ebook file(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:465
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:392
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:521
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:397
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:526
msgid "&Basic metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:466
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:404
msgid "&Custom metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583
msgid "Load searc&h/replace:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:558
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:584
msgid "Select saved search/replace to load."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:559
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585
msgid "Save current search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:560
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586
msgid "Sa&ve"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64
msgid "Delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:589
msgid "Search &field:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:590
msgid "The name of the field that you want to search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:591
msgid "Search &mode:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:592
msgid "Choose whether to use basic text matching or advanced regular expression matching"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:593
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:615
+msgid "Identifier type:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:594
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:616
+msgid "Choose which identifier type to operate upon"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:595
msgid "Te&mplate:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:568
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:596
msgid "Enter a template to be used as the source for the search/replace"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:597
msgid "&Search for:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:598
msgid "Enter the what you are looking for, either plain text or a regular expression, depending on the mode"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:571
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:599
msgid "Check this box if the search string must match exactly upper and lower case. Uncheck it if case is to be ignored"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:572
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:600
msgid "Cas&e sensitive"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:573
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:601
msgid "&Replace with:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:574
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:602
msgid "The replacement text. The matched search text will be replaced with this string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:575
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:603
msgid "&Apply function after replace:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:604
msgid ""
"Specify how the text is to be processed after matching and replacement. In character mode, the entire\n"
"field is processed. In regular expression mode, only the matched text is processed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:578
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:606
msgid "&Destination field:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:579
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:607
msgid ""
"The field that the text will be put into after all replacements.\n"
"If blank, the source field is used if the field is modifiable"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609
msgid "M&ode:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:582
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:610
msgid "Specify how the text should be copied into the destination."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:583
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:611
msgid ""
"Specifies whether result items should be split into multiple values or\n"
"left as single values. This option has the most effect when the source field is\n"
"not multiple and the destination field is multiple"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:586
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:614
msgid "Split &result"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:617
msgid "For multiple-valued fields, sho&w"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:618
msgid "values starting a&t"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:589
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:619
msgid "with values separated b&y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:590
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:620
msgid "Used when displaying test results to separate values in multiple-valued fields"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:591
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:621
msgid "Test text"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:592
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:622
msgid "Test result"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:593
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:623
msgid "Your test:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:594
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:624
msgid "&Search and replace"
msgstr ""
@@ -7596,18 +7629,18 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:122
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:128
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:252
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:259
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:255
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:262
msgid "Could not read cover"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:253
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:256
msgid "Could not read cover from %s format"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:129
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:260
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:263
msgid "The cover in the %s format is invalid"
msgstr ""
@@ -7721,7 +7754,7 @@ msgid " The red color warns that the current title sort does not match the curre
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:472
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:49
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:50
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:102
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:221
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:384
@@ -7729,13 +7762,13 @@ msgid "Previous"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:475
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:483
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:358
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:362
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:484
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:361
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:366
msgid "Save changes and edit the metadata of %s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:480
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:481
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:46
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:103
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:211
@@ -7743,58 +7776,58 @@ msgstr ""
msgid "Next"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:688
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:693
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:690
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:695
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:913
msgid "This ISBN number is valid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:696
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:698
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:920
msgid "This ISBN number is invalid"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:781
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:783
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:862
msgid "Tags changed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:782
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:784
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:863
msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes. Apply changes?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:817
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:819
msgid "Timed out"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:818
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:820
msgid "The download of social metadata timed out, the servers are probably busy. Try again later."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:825
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:827
msgid "There were errors"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:826
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:828
msgid "There were errors downloading social metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:860
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:862
msgid "Cannot fetch metadata"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:861
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:863
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:959
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:307
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:961
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:310
msgid "Permission denied"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:960
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:308
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:962
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:311
msgid "Could not open %s. Is it being used by another program?"
msgstr ""
@@ -7807,19 +7840,19 @@ msgid "Meta information"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:89
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:92
msgid ""
"Automatically create the title sort entry based on the current title entry.\n"
"Using this button to create title sort will change title sort from red to green."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:111
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:114
msgid "Swap the author and title"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:415
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:103
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."
@@ -7846,7 +7879,7 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:436
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:121
msgid "Remove unused series (Series that have no books)"
msgstr ""
@@ -7865,7 +7898,7 @@ msgid "Publishe&d:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:445
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:156
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159
msgid "&Fetch metadata from server"
msgstr ""
@@ -7928,7 +7961,7 @@ msgid "Update metadata from the metadata in the selected format"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:464
-#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:580
+#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:585
msgid "&Comments"
msgstr ""
@@ -7937,21 +7970,21 @@ msgid "Password needed"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:233
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133
msgid "&Username:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:64
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:234
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:135
msgid "&Password:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:235
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:130
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:172
msgid "&Show password"
@@ -8024,200 +8057,231 @@ msgstr ""
msgid "Change the contents of the saved search"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:30
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:42
+msgid ""
+" Download this periodical every week on the specified days after\n"
+" the specified time. For example, if you choose: Monday after\n"
+" 9:00 AM, then the periodical will be download every Monday as\n"
+" soon after 9:00 AM as possible.\n"
+" "
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:61
+msgid "&Download after:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:91
+msgid ""
+" Download this periodical every month, on the specified days.\n"
+" The download will happen as soon after the specified time as\n"
+" possible on the specified days of each month. For example,\n"
+" if you choose the 1st and the 15th after 9:00 AM, the\n"
+" periodical will be downloaded on the 1st and 15th of every\n"
+" month, as soon after 9:00 AM as possible.\n"
+" "
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:103
+msgid "&Days of the month:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:105
+msgid "Comma separated list of days of the month. For example: 1, 15"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:109
+msgid "Download &after:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:142
+msgid ""
+" Download this periodical every x days. For example, if you\n"
+" choose 30 days, the periodical will be downloaded every 30\n"
+" days. Note that you can set periods of less than a day, like\n"
+" 0.1 days to download a periodical more than once a day.\n"
+" "
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:151
+msgid "&Download every:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:154
+msgid "every hour"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:157
+msgid "days"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:161
+msgid "Note: You can set intervals of less than a day, by typing the value manually."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:196
msgid "%s news sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:125
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:311
msgid "Need username and password"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:126
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:312
msgid "You must provide a username and/or password to use this news source."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:168
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:346
msgid "Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:347
msgid "(optional)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:348
msgid "(required)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:187
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:365
msgid "Created by: "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:372
msgid "Last downloaded: never"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:209
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:373
+msgid "never"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:379
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:211
-msgid "Last downloaded"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:393
+msgid "Last downloaded:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:242
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:421
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197
msgid "Schedule news download"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:245
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:424
msgid "Add a custom news source"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:250
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429
msgid "Download all scheduled new sources"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:534
msgid "No internet connection"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:535
msgid "Cannot download news as no internet connection is active"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198
msgid "&Search:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199
msgid "blurb"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200
msgid "&Schedule for download:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:229
-msgid "Every "
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201
+msgid "Days of week"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
-msgid "day"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202
+msgid "Days of month"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
-msgid "Monday"
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203
+msgid "Every x days"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
-msgid "Tuesday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223
-msgid "Wednesday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
-msgid "Thursday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
-msgid "Friday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
-msgid "Saturday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
-msgid "Sunday"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:228
-msgid "at"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230
-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:231
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:253
-#: /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:232
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204
msgid "&Account"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:236
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208
msgid "For the scheduling to work, you must leave calibre running."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:237
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209
msgid "&Schedule"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:238
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
msgid "Add &title as tag"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:239
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
msgid "&Extra tags:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:240
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "Maximum number of copies (issues) of this recipe to keep. Set to 0 to keep all (disable)."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:241
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213
msgid "&Keep at most:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:242
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214
msgid ""
" When set, this option will cause calibre to keep, at most, the specified number of issues of this periodical. Every time a new issue is downloaded, the oldest one is deleted, if the total is larger than this number.\n"
" Note that this feature only works if you have the option to add the title as tag checked, above.\n"
" Also, the setting for deleting periodicals older than a number of days, below, takes priority over this setting."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:245
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217
msgid "all issues"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:246
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218
msgid " issues"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:247
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219
msgid "&Advanced"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220
msgid "&Download now"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:249
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221
msgid "&Delete downloaded news older than:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:250
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222
msgid ""
" Delete downloaded news older than the specified number of days. Set to zero to disable.\n"
" You can also control the maximum number of issues of a specific periodical that are kept by clicking the Advanced tab for that periodical above."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:252
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:224
msgid "never delete"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:254
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:225
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273
+msgid " days"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:226
msgid "Download all scheduled news sources at once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:255
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:227
msgid "Download &all scheduled"
msgstr ""
@@ -8472,12 +8536,12 @@ msgid "%s (was %s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:85
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1319
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1325
msgid "Item is blank"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:86
-#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1320
+#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:1326
msgid "An item cannot be set to nothing. Delete it instead."
msgstr ""
@@ -8572,118 +8636,122 @@ msgstr ""
msgid " Explode the ePub to display contents in a file browser window. To tweak individual files, right-click, then 'Open with...' your editor of choice. When tweaks are complete, close the file browser window and the editor windows you used to edit files in the epub. Rebuild the ePub, updating your calibre library. Could not create recipe. Error:
"
msgstr ""
@@ -9987,7 +10115,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -9996,7 +10124,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10116,17 +10244,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10207,7 +10335,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10215,22 +10343,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10241,135 +10377,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12452,35 +12633,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12783,50 +12956,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13129,20 +13280,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13151,56 +13302,56 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13209,43 +13360,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13254,11 +13405,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13267,15 +13418,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13285,11 +13436,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13299,15 +13450,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13320,11 +13471,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13335,27 +13486,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13366,24 +13517,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13394,30 +13545,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13429,17 +13580,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13448,19 +13599,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13470,15 +13621,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13491,39 +13642,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13531,34 +13682,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13573,17 +13724,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13591,33 +13742,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13639,39 +13790,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
diff --git a/src/calibre/translations/ar.po b/src/calibre/translations/ar.po
index 1279996b50..ee045d78bd 100644
--- a/src/calibre/translations/ar.po
+++ b/src/calibre/translations/ar.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME
"
msgstr ""
@@ -10085,7 +10212,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -10094,7 +10221,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10214,17 +10341,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr "مرتفع"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr "منخفض"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10305,7 +10432,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10313,22 +10440,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10339,135 +10474,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12510,35 +12690,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12841,50 +13013,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13187,20 +13337,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13209,7 +13359,7 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
@@ -13219,49 +13369,49 @@ msgstr ""
"الحقول المتوفرة: %s\n"
"الإفتراضي: %%default"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr "ترتيب الترتيب بترتيب تصاعدي"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr "السلسلة التي تستخدم لتفريق الحقول. الإفتراضي يستخدم الفراغ."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr "الحقول غير صالحة. الحقول المتوفرة:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr "حقل الترتيب غير صالح. الحقول المتوفرة:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13270,43 +13420,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13315,11 +13465,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr "يجب أن تخصص على الأقل كتاباً واحداً للحذف"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13328,15 +13478,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13346,11 +13496,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13360,15 +13510,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13381,11 +13531,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13396,27 +13546,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13427,24 +13577,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13455,30 +13605,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13490,17 +13640,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13509,19 +13659,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13531,15 +13681,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13552,39 +13702,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13592,34 +13742,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13634,17 +13784,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13652,33 +13802,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13700,39 +13850,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
@@ -15457,6 +15639,15 @@ msgstr ""
#~ msgid "Schedule for download"
#~ msgstr "جدولة للتنزيل"
+#~ msgid "Delete downloaded news older than "
+#~ msgstr "حذف أخبار أقدم من "
+
+#~ msgid ""
+#~ "Delete downloaded news older than the specified number of days. Set to zero "
+#~ "to disable."
+#~ msgstr ""
+#~ "حذف الأخبار المنزّلة التي أقدم من العدد المخصص من الأيام. اضبطه بـ0 لتعطيله."
+
#~ msgid ""
#~ "\n"
#~ "Downloaded article %s from %s\n"
diff --git a/src/calibre/translations/ast.po b/src/calibre/translations/ast.po
index 832a6be57d..eb8881b664 100644
--- a/src/calibre/translations/ast.po
+++ b/src/calibre/translations/ast.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME
"
msgstr ""
@@ -9987,7 +10115,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -9996,7 +10124,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10116,17 +10244,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10207,7 +10335,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10215,22 +10343,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10241,135 +10377,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12452,35 +12633,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12783,50 +12956,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13129,20 +13280,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13151,56 +13302,56 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13209,43 +13360,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13254,11 +13405,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13267,15 +13418,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13285,11 +13436,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13299,15 +13450,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13320,11 +13471,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13335,27 +13486,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13366,24 +13517,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13394,30 +13545,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13429,17 +13580,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13448,19 +13599,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13470,15 +13621,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13491,39 +13642,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13531,34 +13682,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13573,17 +13724,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13591,33 +13742,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13639,39 +13790,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
diff --git a/src/calibre/translations/bg.po b/src/calibre/translations/bg.po
index ea10262e92..921e348f79 100644
--- a/src/calibre/translations/bg.po
+++ b/src/calibre/translations/bg.po
@@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre 0.4.51\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-25 19:16+0000\n"
+"POT-Creation-Date: 2011-03-04 20:51+0000\n"
"PO-Revision-Date: 2011-01-29 00:02+0000\n"
"Last-Translator: Rocky Stone
"
msgstr ""
@@ -10008,7 +10136,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -10017,7 +10145,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10137,17 +10265,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10228,7 +10356,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10236,22 +10364,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10262,135 +10398,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12477,35 +12658,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12808,50 +12981,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13154,20 +13305,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13176,56 +13327,56 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13234,43 +13385,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13279,11 +13430,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13292,15 +13443,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13310,11 +13461,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13324,15 +13475,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13345,11 +13496,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13360,27 +13511,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13391,24 +13542,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13419,30 +13570,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13454,17 +13605,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13473,19 +13624,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13495,15 +13646,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13516,39 +13667,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13556,34 +13707,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13598,17 +13749,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13616,33 +13767,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13664,39 +13815,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
diff --git a/src/calibre/translations/bn.po b/src/calibre/translations/bn.po
index f1981ed3b5..223fa51760 100644
--- a/src/calibre/translations/bn.po
+++ b/src/calibre/translations/bn.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME
"
msgstr ""
@@ -9982,7 +10110,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -9991,7 +10119,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10111,17 +10239,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10202,7 +10330,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10210,22 +10338,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10236,135 +10372,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12447,35 +12628,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12778,50 +12951,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13124,20 +13275,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13146,56 +13297,56 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13204,43 +13355,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13249,11 +13400,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13262,15 +13413,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13280,11 +13431,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13294,15 +13445,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13315,11 +13466,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13330,27 +13481,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13361,24 +13512,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13389,30 +13540,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13424,17 +13575,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13443,19 +13594,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13465,15 +13616,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13486,39 +13637,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13526,34 +13677,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13568,17 +13719,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13586,33 +13737,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13634,39 +13785,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
diff --git a/src/calibre/translations/bs.po b/src/calibre/translations/bs.po
index 76229929db..78270dcc71 100644
--- a/src/calibre/translations/bs.po
+++ b/src/calibre/translations/bs.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME
"
msgstr ""
@@ -9982,7 +10110,7 @@ msgid "%s %s for: %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr ""
@@ -9991,7 +10119,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr ""
@@ -10111,17 +10239,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr ""
@@ -10202,7 +10330,7 @@ msgstr ""
msgid "Do you really want to delete column %s and all its data?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -10210,22 +10338,30 @@ msgid ""
"own, custom columns."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr ""
@@ -10236,135 +10372,172 @@ msgid ""
"section are restored."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
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/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
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/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
" Are you sure you want to quit?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -12447,35 +12628,27 @@ msgstr ""
msgid "Print eBook"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr ""
@@ -12778,50 +12951,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr ""
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr ""
@@ -13124,20 +13275,20 @@ msgstr ""
msgid "Folders raising exception"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
"List the books available in the calibre database.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -13146,56 +13297,56 @@ msgid ""
"fields. Only has effect in the text output format."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
"Default: %%default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
"to do no filtering."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -13204,43 +13355,43 @@ msgid ""
"the directory related options below.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -13249,11 +13400,11 @@ msgid ""
"command). For example, 23,34,57-85\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -13262,15 +13413,15 @@ msgid ""
"already exists, it is replaced.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -13280,11 +13431,11 @@ msgid ""
"EPUB. If the logical book does not have fmt available, do nothing.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -13294,15 +13445,15 @@ msgid ""
"id is an id number from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -13315,11 +13466,11 @@ msgid ""
"show_metadata command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -13330,27 +13481,27 @@ msgid ""
"an opf file). You can get id numbers from the list command.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -13361,24 +13512,24 @@ msgid ""
"datatype is one of: {0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -13389,30 +13540,30 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
"Default: no filtering"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -13424,17 +13575,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -13443,19 +13594,19 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -13465,15 +13616,15 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -13486,39 +13637,39 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -13526,34 +13677,34 @@ msgid ""
"{0}\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -13568,17 +13719,17 @@ msgid ""
" "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -13586,33 +13737,33 @@ msgid ""
"information is the equivalent of what is shown in the tags pane.\n"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -13634,39 +13785,43 @@ msgid ""
"start with a letter"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#genre:sublist(0,-1,.)} returns A.B"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po
index 524afbdd4f..3ee4d6823b 100644
--- a/src/calibre/translations/ca.po
+++ b/src/calibre/translations/ca.po
@@ -10,14 +10,14 @@ msgid ""
msgstr ""
"Project-Id-Version: ca\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-25 19:16+0000\n"
-"PO-Revision-Date: 2011-02-25 23:06+0000\n"
+"POT-Creation-Date: 2011-03-04 20:51+0000\n"
+"PO-Revision-Date: 2011-03-06 21:39+0000\n"
"Last-Translator: FerranRius
"
msgstr "Feu doble clic per a edittar>/b>
-me"
@@ -11165,7 +11311,7 @@ msgid "%s %s for: %s"
msgstr "%s %s per a: %s"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:291
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:160
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:164
msgid "Done"
msgstr "Acabat"
@@ -11174,7 +11320,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
msgstr "S'ha descarregat amb èxit les metadades de %d de %d llibres"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:294
-#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:757
+#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759
msgid "Details"
msgstr "Detalls"
@@ -11333,17 +11479,17 @@ msgstr ""
msgid "&Configure metadata from file name"
msgstr "&Configura les metadades a partir del nom de fitxer"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:140
msgid "High"
msgstr "Alt"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:32
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:141
msgid "Low"
msgstr "Baix"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:161
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:165
msgid "Confirmation dialogs have all been reset"
msgstr "S'ha reinicialitzat tot els diàlegs de confirmació"
@@ -11435,7 +11581,7 @@ msgid "Do you really want to delete column %s and all its data?"
msgstr ""
"Esteu segur que voleu suprimir la columna %s i totes les seves dades?"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:82
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82
msgid ""
"Here you can re-arrange the layout of the columns in the calibre library "
@@ -11446,22 +11592,30 @@ msgstr ""
"la biblioteca del calibre. Podeu ocultar columnes si les desmarqueu. També "
"podeu crear les vostres columnes personalitzades."
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:84
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+msgid "Move column up"
+msgstr "Puja la columna"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84
msgid "Remove a user-defined column"
msgstr "Suprimeix una columna definida per l'usuari"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86
msgid "Add a user-defined column"
msgstr "Afegeix una columna definida per l'usuari"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88
msgid "Edit settings of a user-defined column"
msgstr "Edita els paràmetres d'una columna definida per l'usuari"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:91
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96
+msgid "Move column down"
+msgstr "Baixa la columna"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91
msgid "Add &custom column"
msgstr "Afegeix una &columna personalitzada"
@@ -11474,66 +11628,108 @@ msgstr ""
"Restaura els paràmetres als valors per defecte. Només es restauren els "
"paràmetres de la secció que estigui seleccionada."
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:19
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:18
msgid "Text, column shown in the tag browser"
msgstr "Text, columna que es mostra a l'explorador d'etiquetes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:22
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21
msgid "Comma separated text, like tags, shown in the tag browser"
msgstr ""
"Text separat per comes, com les etiquetes, que es mostra a l'explorador "
"d'etiquetes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:25
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24
msgid "Long text, like comments, not shown in the tag browser"
msgstr ""
"Text llarg, com els comentaris, que no es mostra a l'explorador d'etiquetes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:28
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27
msgid "Text column for keeping series-like information"
msgstr "Columna de text per mantenir informació com una sèrie"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30
msgid "Text, but with a fixed set of permitted values"
msgstr "Text, però amb un conjunt fix de valors permesos"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:34
msgid "Floating point numbers"
msgstr "Nombre amb decimals"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:36
msgid "Integers"
msgstr "Enters"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:38
msgid "Ratings, shown with stars"
msgstr "Valoracions, es mostren amb estrelles"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:42
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:138
msgid "Yes/No"
msgstr "Sí/No"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:43
msgid "Column built from other columns"
msgstr "Columna generada a partir d'altres columnes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:74
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:50
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:51
+msgid "Create a custom column"
+msgstr "Crea una columna personalitzada"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:62
+msgid "Quick create:"
+msgstr "Creació ràpida:"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:64
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:142
+msgid "Modified Date"
+msgstr "Data de modificació"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Number"
+msgstr "Nombre"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71
+msgid "Text"
+msgstr "Text"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:86
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:87
+msgid "Edit a custom column"
+msgstr "Modifica una columna personalitzada"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91
msgid "No column selected"
msgstr "No s'ha seleccionat cap columna"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:75
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92
msgid "No column has been selected"
msgstr "No s'ha seleccionat cap columna"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:79
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96
msgid "Selected column is not a user-defined column"
msgstr "La columna seleccionada no és una columna definida per l'usuari"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:117
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+msgid "My Tags"
+msgstr "Les meves etiquetes"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:140
+msgid "My Series"
+msgstr "La meva sèrie"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:141
+msgid "My Rating"
+msgstr "La meva valoració"
+
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:168
msgid "No lookup name was provided"
msgstr "No s'ha donat cap nom per a la cerca"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:119
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:170
msgid ""
"The lookup name must contain only lower case letters, digits and "
"underscores, and start with a letter"
@@ -11541,7 +11737,7 @@ msgstr ""
"El nom de la cerca només ha de contenir minúscules, números i barres baixes, "
"i ha de començar amb una lletra"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:122
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:173
msgid ""
"Lookup names cannot end with _index, because these names are reserved for "
"the index of a series column."
@@ -11549,48 +11745,43 @@ msgstr ""
"Els noms de cerca no poden acabar en _index perquè aquests noms estan "
"reservats per als índexs d'una columna de sèrie."
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:132
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:183
msgid "No column heading was provided"
msgstr "No s'ha donat cap encapçalament de columna"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:139
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:193
msgid "The lookup name %s is already used"
msgstr "El nom de cerca %s ja existeix"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:205
msgid "The heading %s is already used"
msgstr "L'encapçalament %s ja existeix"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:162
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:216
msgid "You must enter a template for composite columns"
msgstr "Heu d'introduir una plantilla per a les columnes compostes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:167
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:224
msgid "You must enter at least one value for enumeration columns"
msgstr "S'ha d'introduir almenys un valor per a les columnes d'enumeració"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:171
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228
msgid "You cannot provide the empty value, as it is included by default"
msgstr "No es pot deixar el valor buit perquè s'inclou per defecte"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:175
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:232
msgid "The value \"{0}\" is in the list more than once"
msgstr "El valor «{0}» està més d'un cop a la llista"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:145
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:171
-msgid "Create or edit custom columns"
-msgstr "Crea o edita columnes personalitzades"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:146
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:176
msgid "&Lookup name"
msgstr "&Nom de la cerca"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:147
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:177
msgid "Column &heading"
msgstr "&Encapçalament de la columna"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:148
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:178
msgid ""
"Used for searching the column. Must contain only digits and lower case "
"letters."
@@ -11598,22 +11789,22 @@ msgstr ""
"Es fa servir per cercar dins la columna. Ha de contenir només números i "
"minúscules."
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:179
msgid ""
"Column heading in the library view and category name in the tag browser"
msgstr ""
"Encapçalament de la columna a la vista de biblioteca i nom de la categoria a "
"l'explorador d'etiquetes"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:150
-msgid "Column &type"
-msgstr "&Tipus de columna"
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:180
+msgid "&Column type"
+msgstr "Tipus de &columna"
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:151
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:181
msgid "What kind of information will be kept in the column."
msgstr "Tipus d'informació que hi haurà a la columna."
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:152
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:182
msgid ""
"
\n"
" Quitting may cause corruption on the device.
\n"
@@ -13452,11 +13652,11 @@ msgstr ""
" Si sortiu podeu malmetre el dispositiu.
\n"
" Segur que voleu sortir?"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:604
msgid "Active jobs"
msgstr "Tasques actives"
-#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:669
+#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:671
msgid ""
"will keep running in the system tray. To close it, choose Quit in the "
"context menu of the system tray."
@@ -14005,35 +14205,27 @@ msgstr "Troba la coincidència anterior"
msgid "Print eBook"
msgstr "Imprimeix el llibre"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:279
-msgid "Copy Image"
-msgstr "Copia la imatge"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:280
-msgid "Paste Image"
-msgstr "Enganxa la imatge"
-
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:382
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:412
msgid "Change Case"
msgstr "Canvia la caixa"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:385
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:415
msgid "Swap Case"
msgstr "Intercanvia la caixa"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:925
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:955
msgid "Drag to resize"
msgstr "Arrossega per canviar la mida"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:960
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:990
msgid "Show"
msgstr "Mostra"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:967
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:997
msgid "Hide"
msgstr "Amaga"
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1004
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1034
msgid "Toggle"
msgstr "Commuta"
@@ -14386,50 +14578,28 @@ msgstr ""
msgid "Turn on the &content server"
msgstr "Engega el servidor de &continguts"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:319
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:330
msgid "today"
msgstr "avui"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:322
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:333
msgid "yesterday"
msgstr "ahir"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:325
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:336
msgid "thismonth"
msgstr "aquest mes"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:328
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:329
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:339
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:340
msgid "daysago"
msgstr "fa dies"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-msgid "unchecked"
-msgstr "desactivat"
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:579
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:589
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "no"
-msgstr "no"
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-msgid "checked"
-msgstr "activat"
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:582
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:592
-#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:192
-msgid "yes"
-msgstr "sí"
-
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "blank"
msgstr "en blanc"
-#: /home/kovid/work/calibre/src/calibre/library/caches.py:586
+#: /home/kovid/work/calibre/src/calibre/library/caches.py:558
msgid "empty"
msgstr "buit"
@@ -14862,7 +15032,7 @@ msgstr "Els fitxers de portada no són a la base de dades"
msgid "Folders raising exception"
msgstr "Hi ha carpetes que donen errors"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:43
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:44
msgid ""
"Path to the calibre library. Default is to use the path stored in the "
"settings."
@@ -14870,7 +15040,7 @@ msgstr ""
"Camí a la biblioteca del calibre. Per defecte es fa servir el que hi ha als "
"paràmetres."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:122
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:123
msgid ""
"%prog list [options]\n"
"\n"
@@ -14880,7 +15050,7 @@ msgstr ""
"\n"
"Llista dels llibres disponibles a la base de dades del calibre.\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:130
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:131
msgid ""
"The fields to display when listing books in the database. Should be a comma "
"separated list of fields.\n"
@@ -14894,7 +15064,7 @@ msgstr ""
"Per defecte: %%default. El camp especial «all» es pot fer servir per "
"seleccionar tots els camps. Només té efecte en el format de sortida."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:137
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:138
msgid ""
"The field by which to sort the results.\n"
"Available fields: %s\n"
@@ -14904,11 +15074,11 @@ msgstr ""
"Camps disponibles: %s\n"
"Per defecte: %%default."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:139
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:140
msgid "Sort results in ascending order"
msgstr "Ordena els resultats en ordre ascendent"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:141
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:142
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search related documentation in the User Manual. Default is "
@@ -14918,8 +15088,8 @@ msgstr ""
"de cerca vegeu la documentació relacionada al Manual de l'usuari. Per "
"defecte no es filtra."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:143
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1042
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1043
msgid ""
"The maximum width of a single line in the output. Defaults to detecting "
"screen size."
@@ -14927,12 +15097,12 @@ msgstr ""
"Amplada màxima d'una línia a la sortida. Per defecte es detecta la mida de "
"la pantalla."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:144
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
msgid "The string used to separate fields. Default is a space."
msgstr ""
"Cadena que es fa servir per separar els camps. Per defecte és un espai."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:145
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:146
msgid ""
"The prefix for all file paths. Default is the absolute path to the library "
"folder."
@@ -14940,15 +15110,15 @@ msgstr ""
"Prefix per a tots els camins dels fitxers. Per defecte és el camí d'accés a "
"la carpeta de la biblioteca."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:167
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:168
msgid "Invalid fields. Available fields:"
msgstr "Camps no vàlids. Camps disponibles:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:174
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:175
msgid "Invalid sort field. Available fields:"
msgstr "Camp d'ordenació no vàlid. Camps disponibles:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:246
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:247
msgid ""
"The following books were not added as they already exist in the database "
"(see --duplicates option):"
@@ -14956,7 +15126,7 @@ msgstr ""
"No s'ha afegit els llibres següents perquè ja són a la base de dades (vegeu "
"l'opció --duplicates):"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:270
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:271
msgid ""
"%prog add [options] file1 file2 file3 ...\n"
"\n"
@@ -14970,7 +15140,7 @@ msgstr ""
"indicar carpetes, vegeu\n"
"les opcions relacionades amb les carpetes més avall.\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:279
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:280
msgid ""
"Assume that each directory has only a single logical book and that all files "
"in it are different e-book formats of that book"
@@ -14978,11 +15148,11 @@ msgstr ""
"Assumeix que cada carpeta conté un sol llibre lògic i que tots els fitxers "
"que hi ha són diferents formats del mateix llibre"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:281
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:282
msgid "Process directories recursively"
msgstr "Processa les carpetes de forma recursiva"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:283
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:284
msgid ""
"Add books to database even if they already exist. Comparison is done based "
"on book titles."
@@ -14990,27 +15160,27 @@ msgstr ""
"Afegeix els llibres a la base de dades encara que ja existeixin. La "
"comparació es fa mitjançant els títols dels llibres."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:285
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:286
msgid "Add an empty book (a book with no formats)"
msgstr "Afegeix un llibre en blanc (sense formats)"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:287
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:288
msgid "Set the title of the added empty book"
msgstr "Estableix el títol del llibre en blanc que s'ha afegit"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:289
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:290
msgid "Set the authors of the added empty book"
msgstr "Estableix els autors del llibre en blanc que s'ha afegit"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:291
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:292
msgid "Set the ISBN of the added empty book"
msgstr "Estableix l'ISBN del llibre en blanc que s'ha afegit"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:317
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:318
msgid "You must specify at least one file to add"
msgstr "Heu d'especificar almenys un camp per afegir"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:334
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:335
msgid ""
"%prog remove ids\n"
"\n"
@@ -15024,11 +15194,11 @@ msgstr ""
"una llista separada per comes de números d'identificació (els podeu obtenir "
"amb el comandament «list»). Per exemple, 23,34,57-85\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:349
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:350
msgid "You must specify at least one book to remove"
msgstr "Heu d'especificar almenys un llibre per suprimir"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:368
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:369
msgid ""
"%prog add_format [options] id ebook_file\n"
"\n"
@@ -15042,15 +15212,15 @@ msgstr ""
"identificat per ID. Podeu aconseguir l'ID amb el comandament «list». Si el "
"format ja existeix es sobreescriurà.\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:383
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:384
msgid "You must specify an id and an ebook file"
msgstr "Heu d'especificar una ID i un fitxer de llibre"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:388
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:389
msgid "ebook file must have an extension"
msgstr "Els fitxers de llibre han de tenir una extensió"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:396
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:397
msgid ""
"\n"
"%prog remove_format [options] id fmt\n"
@@ -15067,11 +15237,11 @@ msgstr ""
"extensió de fitxer com LRF, TXT o EPUB. Si el llibre lògic no té el format "
"que s'especifica no es farà res\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:413
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:414
msgid "You must specify an id and a format"
msgstr "Heu d'especificar una ID i un format"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:431
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:432
msgid ""
"\n"
"%prog show_metadata [options] id\n"
@@ -15087,15 +15257,15 @@ msgstr ""
"que identifica l'ID.\n"
"ID és un número obtingut amb l'ordre «list».\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:439
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:440
msgid "Print metadata in OPF form (XML)"
msgstr "Imprimeix les metadades en format OPF (XML)"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:448
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:449
msgid "You must specify an id"
msgstr "Heu d'especificar una ID"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:463
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:464
msgid ""
"\n"
"%prog set_metadata [options] id /path/to/metadata.opf\n"
@@ -15118,11 +15288,11 @@ msgstr ""
"comandament\n"
"«show_metadata».\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:479
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:480
msgid "You must specify an id and a metadata file"
msgstr "Heu d'especificar una ID i un fitxer de metadades"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:499
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:500
msgid ""
"%prog export [options] ids\n"
"\n"
@@ -15140,28 +15310,28 @@ msgstr ""
"metadades (a un\n"
"fitxer opf). Podeu aconseguir les IDs amb el comandament «list».\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:507
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:508
msgid "Export all books in database, ignoring the list of ids."
msgstr ""
"Exporta tots els llibres de la base de dades, ignorant la llista d'IDs."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:509
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:510
msgid "Export books to the specified directory. Default is"
msgstr "Exporta els llibres a la carpeta que s'indica. Per defecte és"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:511
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:512
msgid "Export all books into a single directory"
msgstr "Exporta tots els llibres a una carpeta"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:518
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:519
msgid "Specifying this switch will turn this behavior off."
msgstr "Si indiqueu aquesta opció es desactiva aquest comportament."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:541
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:542
msgid "You must specify some ids or the %s option"
msgstr "Heu d'indicar alguna ID o l'opció %s"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:554
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:555
msgid ""
"%prog add_custom_column [options] label name datatype\n"
"\n"
@@ -15178,7 +15348,7 @@ msgstr ""
"espais ni dos punts. El nom és el nom visible de la columna. El tipus de "
"dades és un de: {0}\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:563
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:564
msgid ""
"This column stores tag like data (i.e. multiple comma separated values). "
"Only applies if datatype is text."
@@ -15186,7 +15356,7 @@ msgstr ""
"Aquesta columna emmagatzema les etiquetes com a dades (amb valors separats "
"per comes). Només s'aplica si les dades són de tipus text."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:567
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:568
msgid ""
"A dictionary of options to customize how the data in this column will be "
"interpreted. This is a JSON string. For enumeration columns, use --"
@@ -15196,11 +15366,11 @@ msgstr ""
"columna. És una cadena JSON. Per a les columnes d'enumeració utilitzeu --"
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:581
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:582
msgid "You must specify label, name and datatype"
msgstr "Heu d'indicar etiqueta, nom i tipus de dades"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:642
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:643
msgid ""
"\n"
" %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n"
@@ -15219,7 +15389,7 @@ msgstr ""
"genera.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:656
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:657
msgid ""
"Comma-separated list of database IDs to catalog.\n"
"If declared, --search is ignored.\n"
@@ -15229,7 +15399,7 @@ msgstr ""
"Si es declara, s'ignora --search.\n"
"Per defecte: totes"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:660
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:661
msgid ""
"Filter the results by the search query. For the format of the search query, "
"please see the search-related documentation in the User Manual.\n"
@@ -15239,16 +15409,16 @@ msgstr ""
"documentació del tema al Manual de l'usuari.\n"
"Per defecte: sense filtre"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:666
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:667
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:499
msgid "Show detailed output information. Useful for debugging"
msgstr "Mostra informació de sortida detallada. Útil per a depurar"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:679
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:680
msgid "Error: You must specify a catalog output file"
msgstr "Error: Heu d'indicar un fitxer de sortida del catàleg"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:725
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:726
msgid ""
"\n"
" %prog set_custom [options] column id value\n"
@@ -15269,7 +15439,7 @@ msgstr ""
" comandament custom_columns.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:736
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:737
msgid ""
"If the column stores multiple values, append the specified values to the "
"existing ones, instead of replacing them."
@@ -15277,11 +15447,11 @@ msgstr ""
"Si la columna conté múltiples valors, afegeix els valors que s'indiquen als "
"que ja hi ha, en lloc de substituir-los."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:747
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:748
msgid "Error: You must specify a field name, id and value"
msgstr "Error: Heu d'indicar un nom de camp, ID i valor"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:766
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:767
msgid ""
"\n"
" %prog custom_columns [options]\n"
@@ -15296,19 +15466,19 @@ msgstr ""
"etiquetes de columna i les IDs.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:773
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:774
msgid "Show details for each column."
msgstr "Mostra els detalls de cada columna."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:785
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:786
msgid "You will lose all data in the column: %r. Are you sure (y/n)? "
msgstr "Perdreu totes les dades de la columna %r. N'esteu segur (s/n)? "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:787
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:788
msgid "y"
msgstr "s"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:793
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:794
msgid ""
"\n"
" %prog remove_custom_column [options] label\n"
@@ -15325,15 +15495,15 @@ msgstr ""
" les columnes disponibles amb el comandament custom_columns.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:801
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:802
msgid "Do not ask for confirmation"
msgstr "No demanis confirmació"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:811
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:812
msgid "Error: You must specify a column label"
msgstr "Error: Heu d'indicar una etiqueta per a la columna"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:821
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:822
msgid ""
"\n"
" %prog saved_searches [options] list\n"
@@ -15355,39 +15525,39 @@ msgstr ""
" es sobreescriurà.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:839
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:840
msgid "Error: You must specify an action (add|remove|list)"
msgstr "Error: Heu d'indicar una acció (add/remove/list)"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:847
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
msgid "Name:"
msgstr "Nom:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:848
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:849
msgid "Search string:"
msgstr "Cadena de cerca:"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:854
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:855
msgid "Error: You must specify a name and a search string"
msgstr "Error: Heu d'indicar un nom i una cadena de cerca"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:857
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:858
msgid "added"
msgstr "s'ha afegit"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:862
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:863
msgid "Error: You must specify a name"
msgstr "Error: Heu d'indicar un nom"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:865
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:866
msgid "removed"
msgstr "s'ha suprimit"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:869
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:870
msgid "Error: Action %s not recognized, must be one of: (add|remove|list)"
msgstr "Error: No es reconeix l'acció %s, ha de ser una de «add/remove/list»"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:877
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:878
msgid ""
"%prog check_library [options]\n"
"\n"
@@ -15399,12 +15569,12 @@ msgstr ""
"Fes algunes comprovacions al sistema de fitxers que hi ha en una biblioteca. "
"Els resultats són {0}\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:884
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1034
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:885
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035
msgid "Output in CSV"
msgstr "Sortida CSV"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:887
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:888
msgid ""
"Comma-separated list of reports.\n"
"Default: all"
@@ -15412,7 +15582,7 @@ msgstr ""
"Llista d'informes separats per comes.\n"
"Per defecte: tots"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:891
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:892
msgid ""
"Comma-separated list of extensions to ignore.\n"
"Default: all"
@@ -15420,7 +15590,7 @@ msgstr ""
"Llista de les extensions que s'ignoraran separada per comes.\n"
"Per defecte: totes"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:895
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:896
msgid ""
"Comma-separated list of names to ignore.\n"
"Default: all"
@@ -15428,11 +15598,11 @@ msgstr ""
"Llista de noms que s'ignoraran separats per comes.\n"
"Per defecte: tots"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:925
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:926
msgid "Unknown report check"
msgstr "Informe de comprovació desconegut"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:958
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:959
msgid ""
"%prog restore_database [options]\n"
"\n"
@@ -15462,7 +15632,7 @@ msgstr ""
"OPF.\n"
" "
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:973
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:974
msgid ""
"Really do the recovery. The command will not run unless this option is "
"specified."
@@ -15470,11 +15640,11 @@ msgstr ""
"Fer la recuperació. El comandament no s'executa si no s'especifica aquesta "
"opció."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:986
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:987
msgid "You must provide the %s option to do a recovery"
msgstr "Heu d'introduir l'opció %s per fer una recuperació"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1023
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024
msgid ""
"%prog list_categories [options]\n"
"\n"
@@ -15487,7 +15657,7 @@ msgstr ""
"La\n"
"informació equival al que es mostra a la subfinestra d'etiquetes.\n"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1031
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032
msgid ""
"Output only the number of items in a category instead of the counts per item "
"within the category"
@@ -15495,7 +15665,7 @@ msgstr ""
"Genera només la sortida del nombre d'elements en una categoria en lloc del "
"recompte per element a cada categoria"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1036
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1037
msgid ""
"The character to put around the category value in CSV mode. Default is "
"quotes (\")."
@@ -15503,7 +15673,7 @@ msgstr ""
"El caràcter que es posarà al voltant del valor de la categoria en mode CSV. "
"Per defecte són les cometes (\")."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1040
msgid ""
"Comma-separated list of category lookup names.\n"
"Default: all"
@@ -15511,17 +15681,17 @@ msgstr ""
"Llista separada per comes dels noms de la categoria de cerca.\n"
"Per defecte: all"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1045
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046
msgid "The string used to separate fields in CSV mode. Default is a comma."
msgstr ""
"La cadena que es farà servir per separar els camps en mode CSV. Per defecte "
"és una coma."
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1083
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1084
msgid "CATEGORY ITEMS"
msgstr "ELEMENTS DE LES CATEGORIES"
-#: /home/kovid/work/calibre/src/calibre/library/cli.py:1152
+#: /home/kovid/work/calibre/src/calibre/library/cli.py:1153
msgid ""
"%%prog command [options] [arguments]\n"
"\n"
@@ -15554,40 +15724,44 @@ msgstr ""
"L'etiqueta només pot contenir lletres minúscules, nombres i guions baixos, i "
"ha de començar amb una lletra"
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:62
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:63
msgid "%sAverage rating is %3.1f"
msgstr "%sLa valoració mitjana és %3.1f"
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:941
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:993
msgid "Main"
msgstr "Inici"
-#: /home/kovid/work/calibre/src/calibre/library/database2.py:2775
+#: /home/kovid/work/calibre/src/calibre/library/database2.py:2951
msgid "
{#gènere:sublist(0,1,.)} s'obté A
{#gènere:sublist(0,-1,.)} s'obté "
"A.B"
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:430
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:457
+msgid ""
+"format_date(val, format_string) -- format the value, which must be a date "
+"field, using the format_string, returning a string. The formatting codes "
+"are: d : the day as number without a leading zero (1 to 31) dd : the "
+"day as number with a leading zero (01 to 31) ddd : the abbreviated "
+"localized day name (e.g. \"Mon\" to \"Sun\"). dddd : the long localized day "
+"name (e.g. \"Monday\" to \"Sunday\"). M : the month as number without a "
+"leading zero (1 to 12). MM : the month as number with a leading zero (01 "
+"to 12) MMM : the abbreviated localized month name (e.g. \"Jan\" to "
+"\"Dec\"). MMMM : the long localized month name (e.g. \"January\" to "
+"\"December\"). yy : the year as two digit number (00 to 99). yyyy : the "
+"year as four digit number."
+msgstr ""
+"format_date(val, cadena_format) -- dóna format a un valor que ha de ser un "
+"camp de data seguint el format «cadena_format» i s'obté una cadena. Els "
+"codis de format són: «d» -el dia com a nombre sense zero inicial (d'1 a 31)-"
+". «dd» -el dia com a nombre amb zero inicial (de 01 a 31)-. «ddd» -el nom "
+"del dia abreujat en l'idioma local (de «dil» a «diu»)-. «dddd» -el nom "
+"complet del dia en l'idioma local (de «dilluns» a «diumenge»)-. «M» -el mes "
+"com a nombre sense zero inicial (d'1 a 12)-. «MM» -el mes com a nombre amb "
+"zero inicial (de 01 a 12)-. «MMM» -el nom del mes abreujat en l'idioma local "
+"(de «gen» a «des»)-. «MMMM» -el nom complet del mes en l'idioma local (de "
+"«gener» a «desembre»)-. «yy» -l'any com a nombre de dues xifres (de «00» a "
+"«99»)-. «yyyy» -l'any com a nombre de quatre xifres-."
+
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:484
msgid "uppercase(val) -- return value of the field in upper case"
msgstr "uppercase(val) -- s'obté el valor del camp en majúscules"
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:438
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:492
msgid "lowercase(val) -- return value of the field in lower case"
msgstr "lowercase(val) -- s'obté el valor del camp en minúscules"
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:446
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:500
msgid "titlecase(val) -- return value of the field in title case"
msgstr ""
"titlecase(val) -- s'obté el valor del camp amb les inicials en majúscula"
-#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:454
+#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:508
msgid "capitalize(val) -- return value of the field capitalized"
msgstr ""
"capitalize(val) -- s'obté el valor del camp amb la primera lletra en "
@@ -17545,6 +17763,15 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ msgid "Run the check"
#~ msgstr "Executa la comprobació"
+#~ msgid ""
+#~ "Reset all the author sort values to a value automatically generated from the "
+#~ "author. Exactly how this value is automatically generated can be controlled "
+#~ "via Preferences->Advanced->Tweaks"
+#~ msgstr ""
+#~ "Restableix tots els valors d'ordre per autor a un valor generat "
+#~ "automàticament a partir de l'autor. Es pot controlar la manera exacta com es "
+#~ "genera automàticament aquest valor a Preferències->Avançat->Ajustos"
+
#~ msgid ""
#~ "No metadata found, try adjusting the title and author or the ISBN key."
#~ msgstr ""
@@ -17662,6 +17889,9 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ "El camp on es posarà el text després de totes les substitucions. Se està en "
#~ "blanc es fa servir el camp original."
+#~ msgid "Download all scheduled recipes at once"
+#~ msgstr "Descarrega d'un cop totes les receptes que s'ha planificat"
+
#~ msgid "Contains: the word or phrase matches anywhere in the metadata"
#~ msgstr "Conté: la paraula o frase està a qualsevol lloc de les metadades"
@@ -17752,6 +17982,12 @@ msgstr "No descarreguis els fulls d'estil CSS"
#~ msgid "Tags to apply when adding a book:"
#~ msgstr "Etiquetes que s'aplicaran quan s'afegeixi un llibre:"
+#~ msgid "Create or edit custom columns"
+#~ msgstr "Crea o edita columnes personalitzades"
+
+#~ msgid "Column &type"
+#~ msgstr "&Tipus de columna"
+
#~ msgid "
They can be any words or phrases, separated by commas."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:518
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:433
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:293
@@ -5653,8 +5653,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:520
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:545
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:546
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:434
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:435
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:292
@@ -5881,12 +5881,12 @@ msgid "&Search Regular Expression"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:71
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:99
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:101
msgid "Invalid regular expression"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72
-#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:100
+#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:102
msgid "Invalid regular expression: %s"
msgstr ""
@@ -6139,7 +6139,7 @@ msgstr ""
msgid "TXTZ Output"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:78
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:46
@@ -6150,7 +6150,7 @@ msgstr ""
msgid "TextLabel"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:55
+#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:56
msgid "Use a wizard to help construct the Regular expression"
msgstr ""
@@ -6230,74 +6230,74 @@ msgstr ""
msgid "Cover browser could not be loaded"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:64
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:89
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:113
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:150
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:184
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:294
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:558
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:599
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:622
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:673
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:63
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:88
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:112
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:149
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:183
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:293
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:557
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:598
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:621
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:672
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:306
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:311
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:503
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:504
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:114
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:134
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:216
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:249
-#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:253
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:505
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:506
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:113
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:133
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:215
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:248
+#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:252
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:994
msgid "Undefined"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:127
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:630
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:126
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:629
msgid "star(s)"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:128
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:631
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:127
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:630
msgid "Unrated"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:171
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:660
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:170
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:659
msgid "Set '%s' to today"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:173
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:662
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:172
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:661
msgid "Clear '%s'"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:290
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:289
msgid " index:"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:359
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:358
msgid "The enumeration \"{0}\" contains an invalid value that will be set to the default"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:513
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:512
msgid "Apply changes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:706
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:705
msgid "Remove series"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:709
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:708
msgid "Automatically number books"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:712
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:711
msgid "Force numbers to start with "
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:783
+#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:782
msgid "The enumeration \"{0}\" contains invalid values that will not appear in the list"
msgstr ""
@@ -6393,7 +6393,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:611
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41
-#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302
+#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:304
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54
msgid "Error"
msgstr ""
@@ -6484,11 +6484,11 @@ msgstr ""
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:1221
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1229
msgid "No space on device"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1222
+#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1230
msgid "
%s"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:306
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:333
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:255
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:314
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
msgid "Replace recipe?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:307
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:315
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:342
msgid "A custom recipe named %s already exists. Do you want to replace it?"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:274
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:282
msgid "Choose builtin recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:328
msgid "Choose a recipe file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:329
msgid "Recipes"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:361
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:369
msgid "You will lose any unsaved changes. To save your changes, click the Add/Update recipe button. Continue?"
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:257
msgid "Add custom news source"
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:258
msgid "Available user recipes"
msgstr ""
-#: /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:259
msgid "Add/Update &recipe"
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:260
msgid "&Remove recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:257
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261
msgid "&Share recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:258
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262
+msgid "S&how recipe files"
+msgstr ""
+
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263
msgid "Customize &builtin recipe"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:259
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264
msgid "&Load recipe from file"
msgstr ""
-#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261
+#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266
msgid ""
"