diff --git a/Changelog.yaml b/Changelog.yaml
index e96c990cfc..71f7f1c52b 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -19,6 +19,124 @@
# new recipes:
# - title:
+- version: 0.7.44
+ date: 2011-02-04
+
+ new features:
+ - title: "Nook Color driver: Send downloaded news to the My Files/Magazines folder on the Nook Color. Also when getting the list of books on the device look at all folders in My Files, not just My Files/Books."
+
+ - title: "MOBI Output: Use the book uuid as the ASIN field and set cdetype to EBOK to allow Amazon furthest read tracking to work with calibre generated MOBI files."
+ tickets: [8721]
+
+ - title: "Comic input: Add an option to override the image size in the generated comic. Useful if you have a device whose screen size is not coverred by one of the available output profiles."
+ tickets: [7837]
+
+ - title: "Add a restore database option to the Library maintenance menu in the GUI"
+
+ - title: "TXT Output: Allow output in the textile markup language"
+
+ - title: "PML Output: Create multi-level Table of Contents"
+
+ - title: "Driver for the Archos 7O"
+
+ - title: "Search and Replace in the Bulk metadata dialog can now operate on the title_sort field as well"
+ tickets: [8732]
+
+ - title: "Allow changing the case of authors/tags/series etc. via the edit metadata dialog"
+
+ - title: "Connect/share menu: Re-organize to make it a little less easy to select email and delete instead of just email by mistake"
+
+ - title: "Heuristics: Improved Scene break detection and add option to control what scene breaks are replaced by."
+
+ - title: "SONY driver: Add option to not preserve aspect ratio of cover thumbnails."
+
+ - title: "BiBTeX catalog: Add on device column when available"
+
+ - title: "Add search to the plugin preferences dialog"
+
+ bug fixes:
+ - title: "Fix a bug that could cause fiels to be lost when changing metadata on east asian windows installs if the title and/or author is very long."
+ tickets: [8620]
+
+ - title: "Tag browser: Fix searching with items in a user category not owrking if the main category is hidden"
+ tickets: [8741]
+
+ - title: "Make completion for author/series/tags/etc. fields less disruptive"
+
+ - title: "Fix regression that broke the content server when user categories/custom columns are present"
+
+ - title: "Catalog generation: Handle user supplied templates more robustly"
+
+ - title: "Move the Tags to apply to newly added books option into Preferences->Adding books"
+ tickets: [8730]
+
+ - title: "Workaround for bug in Qt on OS X that caused crashes when reading metedata from two or more EPUB files with HTML covers that used embedded fonts. Now the embedded fonts are ignored on OS X."
+ tickets: [8643]
+
+ - title: "Fix regression that broke the use of the group searched terms tweak"
+ tickets: [8739]
+
+ - title: "Fix template program regression triggered by recursively calling the processor"
+
+ - title: "Fix mimetype sent by content server for PDB files"
+
+ - title: "OPF: Write title_sort as a calibre custom metadata field rather than as a file-as attribute on the title. This conforms to the OPF spec"
+ tickets: [7883]
+
+ - title: "SONY driver: Fix thumbnails being sent to SD card are sent to the wrong location. Also use correct thumbnail size so that the SONY does not regenerate the thumbnail on disconnect"
+
+ - title: "Do not discard the result of a conversion if the user opens the edit metadata dialog while the conversion is running"
+ tickets: [8672]
+
+ - title: "CHM Input: When the chm file lacks a hhc, lookf for index.html instead"
+ tickets: [8688]
+
+ - title: "EPUB Input: Filter some invalid media types from the spine"
+
+ - title: "RTF Input: More encoding handlig fixes."
+ tickets: [8678]
+
+ - title: "Linux binary build: Restore functioning of CALIBRE_DEVELOP_FROM, which was accidentally removed a few versions ago"
+
+ - title: "RTF Output: Retain html headings as rtf headings when converting to rtf. Also fix output of italics."
+ tickets: [8641, 8640]
+
+ - title: "LIT Input: Fix regression that broke handling of LIT files that contain txt data instead of html"
+
+ - title: "MOBI Input: Handle more non printing ASCII codes"
+ tickets: [8646]
+
+ - title: "Handle empty cover files more gracefully"
+ tickets: [8656]
+
+ - title: "Catalog geenration: Fix error when Pocketbook is connected and trying to geenrate catalog"
+ tickets: [8651]
+
+ - title: "Heuristics: Italicize common cases, reduce false positives."
+
+ - title: "Fix regression that caused reporting of device connection errors to break"
+
+ improved recipes:
+ - MSN Japan
+ - The Onion
+ - La Tribuna de
+ - Wall Street Journal
+ - "20 Minutos"
+ - LA Times
+ - Endgadget Japan
+ - Ledevoir
+ - Vijesti
+
+ new recipes:
+ - title: "Cinco Dias and BBC Mundo"
+ author: Luis Hernandez
+
+ - title: "Explosm"
+ author: Andromeda Rabbit
+
+ - title: "Cinco Dias"
+ author: Luis Hernandez
+
- version: 0.7.43
date: 2011-01-28
diff --git a/resources/catalog/stylesheet.css b/resources/catalog/stylesheet.css
index 4b32056400..55a7c9fbec 100644
--- a/resources/catalog/stylesheet.css
+++ b/resources/catalog/stylesheet.css
@@ -1,57 +1,10 @@
body { background-color: white; }
-p.title {
- margin-top:0em;
- margin-bottom:0em;
- text-align:center;
- font-style:italic;
- font-size:xx-large;
- }
-
-p.series_id {
- margin-top:0em;
- margin-bottom:0em;
- text-align:center;
- }
-
a.series_id {
font-style:normal;
font-size:large;
}
-p.author {
- font-size:large;
- margin-top:0em;
- margin-bottom:0em;
- text-align: center;
- text-indent: 0em;
- }
-
-p.author_index {
- font-size:large;
- font-weight:bold;
- text-align:left;
- margin-top:0px;
- margin-bottom:-2px;
- text-indent: 0em;
- }
-
-p.genres {
- font-style:normal;
- margin-top:0.5em;
- margin-bottom:0em;
- text-align: left;
- text-indent: 0.0in;
- }
-
-p.formats {
- font-size:90%;
- margin-top:0em;
- margin-bottom:0.5em;
- text-align: left;
- text-indent: 0.0in;
- }
-
/*
* Minimize widows and orphans by logically grouping chunks
* Some reports of problems with Sony (ADE) ereaders
@@ -77,71 +30,6 @@ div.initial_letter {
page-break-before:always;
}
-p.author_title_letter_index {
- font-size:x-large;
- text-align:center;
- font-weight:bold;
- margin-top:0px;
- margin-bottom:0px;
- }
-
-p.date_index {
- font-size:x-large;
- text-align:center;
- font-weight:bold;
- margin-top:1em;
- margin-bottom:0px;
- }
-
-p.series {
- font-style:italic;
- margin-top:2px;
- margin-bottom:0px;
- margin-left:2em;
- text-align:left;
- text-indent:-2em;
- }
-
-p.series_letter_index {
- font-size:x-large;
- text-align:center;
- font-weight:bold;
- margin-top:1em;
- margin-bottom:0px;
- }
-
-p.read_book {
- text-align:left;
- margin-top:0px;
- margin-bottom:0px;
- margin-left:2em;
- text-indent:-2em;
- }
-
-p.unread_book {
- text-align:left;
- margin-top:0px;
- margin-bottom:0px;
- margin-left:2em;
- text-indent:-2em;
- }
-
-p.wishlist_item {
- text-align:left;
- margin-top:0px;
- margin-bottom:0px;
- margin-left:2em;
- text-indent:-2em;
- }
-
-p.date_read {
- text-align:left;
- margin-top:0px;
- margin-bottom:0px;
- margin-left:6em;
- text-indent:-6em;
- }
-
hr.annotations_divider {
width:50%;
margin-left:1em;
@@ -175,6 +63,102 @@ hr.merged_comments_divider {
border-left: solid white 0px;
}
+p.date_read {
+ text-align:left;
+ margin-top:0px;
+ margin-bottom:0px;
+ margin-left:6em;
+ text-indent:-6em;
+ }
+
+p.author {
+ font-size:large;
+ margin-top:0em;
+ margin-bottom:0em;
+ text-align: center;
+ text-indent: 0em;
+ }
+
+p.author_index {
+ font-size:large;
+ font-weight:bold;
+ text-align:left;
+ margin-top:0px;
+ margin-bottom:-2px;
+ text-indent: 0em;
+ }
+
+p.author_title_letter_index {
+ font-size:x-large;
+ text-align:center;
+ font-weight:bold;
+ margin-top:0px;
+ margin-bottom:0px;
+ }
+
+p.date_index {
+ font-size:x-large;
+ text-align:center;
+ font-weight:bold;
+ margin-top:1em;
+ margin-bottom:0px;
+ }
+
+p.formats {
+ font-size:90%;
+ margin-top:0em;
+ margin-bottom:0.5em;
+ text-align: left;
+ text-indent: 0.0in;
+ }
+
+p.genres {
+ font-style:normal;
+ margin-top:0.5em;
+ margin-bottom:0em;
+ text-align: left;
+ text-indent: 0.0in;
+ }
+
+p.series {
+ font-style:italic;
+ margin-top:0.25em;
+ margin-bottom:0em;
+ margin-left:2em;
+ text-align:left;
+ text-indent:-2em;
+ }
+
+p.series_id {
+ margin-top:0em;
+ margin-bottom:0em;
+ text-align:center;
+ }
+
+p.series_letter_index {
+ font-size:x-large;
+ text-align:center;
+ font-weight:bold;
+ margin-top:1em;
+ margin-bottom:0px;
+ }
+
+p.title {
+ margin-top:0em;
+ margin-bottom:0em;
+ text-align:center;
+ font-style:italic;
+ font-size:xx-large;
+ }
+
+p.wishlist_item, p.unread_book, p.read_book {
+ text-align:left;
+ margin-top:0px;
+ margin-bottom:0px;
+ margin-left:2em;
+ text-indent:-2em;
+ }
+
td.publisher, td.date {
font-weight:bold;
text-align:center;
diff --git a/resources/recipes/wsj.recipe b/resources/recipes/wsj.recipe
index eb473f1121..f2854e65ca 100644
--- a/resources/recipes/wsj.recipe
+++ b/resources/recipes/wsj.recipe
@@ -131,6 +131,7 @@ class WallStreetJournal(BasicNewsRecipe):
'description':desc, 'date':''})
self.log('\tFound WN article:', title)
+ self.log('\t\t', desc)
return articles
@@ -157,17 +158,23 @@ class WallStreetJournal(BasicNewsRecipe):
meta = a.find(attrs={'class':'meta_sectionName'})
if meta is not None:
meta.extract()
- title = self.tag_to_string(a).strip() + ' [%s]'%self.tag_to_string(meta)
+ meta = self.tag_to_string(meta).strip()
+ if meta:
+ title = self.tag_to_string(a).strip() + ' [%s]'%meta
+ else:
+ title = self.tag_to_string(a).strip()
url = 'http://online.wsj.com'+a['href']
desc = ''
- p = container.find('p')
- if p is not None:
+ for p in container.findAll('p'):
desc = self.tag_to_string(p)
+ if not 'Subscriber Content' in desc:
+ break
articles.append({'title':title, 'url':url,
'description':desc, 'date':''})
self.log('\tFound article:', title)
+ self.log('\t\t', desc)
return articles
diff --git a/resources/recipes/wsj_free.recipe b/resources/recipes/wsj_free.recipe
index a4a957fc90..dd42fb5540 100644
--- a/resources/recipes/wsj_free.recipe
+++ b/resources/recipes/wsj_free.recipe
@@ -140,12 +140,17 @@ class WallStreetJournal(BasicNewsRecipe):
meta = a.find(attrs={'class':'meta_sectionName'})
if meta is not None:
meta.extract()
- title = self.tag_to_string(a).strip() + ' [%s]'%self.tag_to_string(meta)
+ meta = self.tag_to_string(meta).strip()
+ if meta:
+ title = self.tag_to_string(a).strip() + ' [%s]'%meta
+ else:
+ title = self.tag_to_string(a).strip()
url = 'http://online.wsj.com'+a['href']
desc = ''
- p = container.find('p')
- if p is not None:
+ for p in container.findAll('p'):
desc = self.tag_to_string(p)
+ if not 'Subscriber Content' in desc:
+ break
articles.append({'title':title, 'url':url,
'description':desc, 'date':''})
diff --git a/resources/template-functions.json b/resources/template-functions.json
index cb329d771c..332ce1ddea 100644
--- a/resources/template-functions.json
+++ b/resources/template-functions.json
@@ -12,7 +12,7 @@
"re": "def evaluate(self, formatter, kwargs, mi, locals, val, pattern, replacement):\n return re.sub(pattern, replacement, val)\n",
"add": "def evaluate(self, formatter, kwargs, mi, locals, x, y):\n x = float(x if x else 0)\n y = float(y if y else 0)\n return unicode(x + y)\n",
"lookup": "def evaluate(self, formatter, kwargs, mi, locals, val, *args):\n if len(args) == 2: # here for backwards compatibility\n if val:\n return formatter.vformat('{'+args[0].strip()+'}', [], kwargs)\n else:\n return formatter.vformat('{'+args[1].strip()+'}', [], kwargs)\n if (len(args) % 2) != 1:\n raise ValueError(_('lookup requires either 2 or an odd number of arguments'))\n i = 0\n while i < len(args):\n if i + 1 >= len(args):\n return formatter.vformat('{' + args[i].strip() + '}', [], kwargs)\n if re.search(args[i], val):\n return formatter.vformat('{'+args[i+1].strip() + '}', [], kwargs)\n i += 2\n",
- "template": "def evaluate(self, formatter, kwargs, mi, locals, template):\n template = template.replace('[[', '{').replace(']]', '}')\n return formatter.safe_format(template, kwargs, 'TEMPLATE', mi)\n",
+ "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",
"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",
diff --git a/setup/publish.py b/setup/publish.py
index 8d9fe34f5c..6aa2aa0e06 100644
--- a/setup/publish.py
+++ b/setup/publish.py
@@ -43,7 +43,7 @@ class Stage3(Command):
description = 'Stage 3 of the publish process'
sub_commands = ['upload_user_manual', 'upload_demo', 'sdist',
- 'upload_to_google_code', 'upload_to_sourceforge',
+ 'upload_to_sourceforge', 'upload_to_google_code',
'tag_release', 'upload_to_server',
'upload_to_mobileread',
]
diff --git a/setup/upload.py b/setup/upload.py
index 54bc8e108c..1917e0ab1f 100644
--- a/setup/upload.py
+++ b/setup/upload.py
@@ -324,7 +324,7 @@ class UploadToServer(Command):
def run(self, opts):
check_call('ssh divok rm -f %s/calibre-\*.tar.gz'%DOWNLOADS, shell=True)
- check_call('scp dist/calibre-*.tar.gz divok:%s/'%DOWNLOADS, shell=True)
+ #check_call('scp dist/calibre-*.tar.gz divok:%s/'%DOWNLOADS, shell=True)
check_call('gpg --armor --detach-sign dist/calibre-*.tar.gz',
shell=True)
check_call('scp dist/calibre-*.tar.gz.asc divok:%s/signatures/'%DOWNLOADS,
diff --git a/src/calibre/constants.py b/src/calibre/constants.py
index 76580d8db8..7b93019f2d 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.43'
+__version__ = '0.7.44'
__author__ = "Kovid Goyal )', re.IGNORECASE|re.DOTALL)
self.blankreg = re.compile(r'\s*(?P ]*>)\s*(?P ]*>)\s*(?P ]*>\s* ]*>\s*
]*>\s*
)', re.IGNORECASE) @@ -384,6 +384,8 @@ class HeuristicProcessor(object): html = re.sub(r"\s*<(font|[ibu]|em|strong)[^>]*>\s*(<(font|[ibu]|em|strong)[^>]*>\s*(font|[ibu]|em|strong)>\s*){0,2}\s*(font|[ibu]|em|strong)>", " ", html) html = re.sub(r"\s*]*>\s*(]>\s*){0,2}\s*\s*", " ", html) html = re.sub(r"\s*<(font|[ibu]|em|strong)[^>]*>\s*(<(font|[ibu]|em|strong)[^>]*>\s*(font|[ibu]|em|strong)>\s*){0,2}\s*(font|[ibu]|em|strong)>", " ", html) + # delete surrounding divs from empty paragraphs + html = re.sub(']*>\s*
\s*', html) # Empty heading tags html = re.sub(r'(?i)
This function is not currently available in the " -"GUI. You can recover your database using the 'calibredb restore_database' " -"command line function." +"Found no errors in your calibre library database. Do you want calibre to " +"check if the files in your library match the information in the database?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:672 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:877 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:190 +msgid "Failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:311 +msgid "Database integrity check failed, click Show details for details." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:316 +msgid "No problems found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:317 +msgid "The files in your library match the information in the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:326 msgid "No library found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:327 msgid "" "No existing calibre library was found at %s. It will be removed from the " "list of known libraries." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:418 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:423 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:385 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:780 msgid "Not allowed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:381 msgid "" "You cannot change libraries while using the environment variable " "CALIBRE_OVERRIDE_DATABASE_PATH." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:424 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:386 msgid "You cannot change libraries while jobs are running." msgstr "" @@ -3987,7 +3979,7 @@ msgid "Bulk convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:506 msgid "Cannot convert" msgstr "" @@ -4032,13 +4024,6 @@ msgstr "" msgid "Could not copy books: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:150 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:674 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:854 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:190 -msgid "Failed" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:153 msgid "Copied %d books to %s" msgstr "" @@ -4608,7 +4593,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:127 msgid "Choose the format to view" msgstr "" @@ -4659,7 +4644,7 @@ msgid "The specified directory could not be processed." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:250 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:823 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:821 msgid "No books" msgstr "" @@ -4788,8 +4773,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library_ui.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:485 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:535 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_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 @@ -4799,10 +4784,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:462 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:136 @@ -4895,7 +4881,7 @@ msgstr "" #: /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:294 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:316 msgid "None" msgstr "" @@ -4923,7 +4909,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "Options specific to" msgstr "" @@ -4939,11 +4925,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pml_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 @@ -4974,7 +4960,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:81 @@ -4984,7 +4970,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:113 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:68 @@ -4996,64 +4982,68 @@ msgstr "" msgid "Form" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 msgid "Bib file encoding:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:88 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:43 msgid "Fields to include in output:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 msgid "ascii/LaTeX" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 msgid "Encoding configuration (change if you have errors) :" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 msgid "strict" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 msgid "replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 msgid "ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:97 msgid "backslashreplace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:98 msgid "BibTeX entry type:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:99 msgid "mixed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:100 msgid "misc" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:101 msgid "book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:102 msgid "Create a citation tag?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:103 +msgid "Add files path with formats?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:104 msgid "Expression to form the BibTeX citation tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:105 msgid "" "Some explanation about this template:\n" " -The fields availables are 'author_sort', 'authors', 'id',\n" @@ -5293,6 +5283,10 @@ msgstr "" msgid "Remove formatting" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:96 +msgid "Copy" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/comments_editor.py:97 msgid "Paste" msgstr "" @@ -5390,18 +5384,18 @@ msgstr "" msgid "HTML Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:40 msgid "" "For settings that cannot be specified in this dialog, use the values saved " "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:74 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 msgid "Options specific to the output format." msgstr "" @@ -5925,7 +5919,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:450 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:495 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:420 msgid "&Author(s): " msgstr "" @@ -5941,7 +5935,7 @@ msgid "" 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:460 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:505 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:428 msgid "&Publisher: " msgstr "" @@ -5952,7 +5946,7 @@ 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:462 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:507 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:430 msgid "" "Tags categorize the book. This is particularly useful while searching. " @@ -5960,7 +5954,7 @@ msgid "" 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:469 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:514 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:433 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:289 @@ -5969,8 +5963,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:470 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:516 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:434 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:435 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:288 @@ -6131,35 +6125,59 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:133 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:153 msgid "Open book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:90 msgid "Regex Builder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:58 -msgid "Preview" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:91 msgid "Regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:125 msgid "Test" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:93 +msgid "Occurrences:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:94 +msgid "0" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:95 +msgid "Goto:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:89 +msgid "&Previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:88 +msgid "&Next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:98 +msgid "Preview" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 msgid "" "Search\n" @@ -6173,13 +6191,13 @@ msgstr "" msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:86 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:99 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:100 msgid "Invalid regular expression: %s" msgstr "" @@ -6221,6 +6239,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:53 msgid "Dialog" msgstr "" @@ -6367,7 +6386,7 @@ msgstr "" msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:15 msgid "TXT Output" msgstr "" @@ -6496,75 +6515,86 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:273 -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:495 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:302 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:306 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:499 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:650 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:502 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:235 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:268 #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:973 msgid "Undefined" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:607 msgid "star(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:608 msgid "Unrated" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:637 msgid "Set '%s' to today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:639 +msgid "Clear '%s'" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:285 msgid " index:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:351 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:495 -msgid "Do not change" +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:505 +msgid "Apply changes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:683 msgid "Remove series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:686 msgid "Automatically number books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:689 msgid "Force numbers to start with " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:608 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:758 msgid "" "The enumeration \"{0}\" contains invalid values that will not appear in the " "list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:800 msgid "Remove all tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:685 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:820 msgid "tags to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:826 msgid "tags to remove" msgstr "" @@ -6646,93 +6676,108 @@ msgstr "" msgid "Eject device" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:41 +#: /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 "" + #: /home/kovid/work/calibre/src/calibre/gui2/device.py:595 msgid "Error communicating with device" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:611 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1100 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1114 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:297 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:627 msgid "Select folder to open as device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:678 msgid "Error talking to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:679 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:722 msgid "Device: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:724 msgid " detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:824 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:822 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:829 -msgid "Choose format to send to device" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:838 -msgid "No device" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:839 -msgid "Cannot send: No device is connected" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:842 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:846 -msgid "No card" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:841 +msgid "%i of %i Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:843 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:847 +msgid "0 of %i Books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:844 +msgid "Choose format to send to device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:852 +msgid "No device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:853 +msgid "Cannot send: No device is connected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:856 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:860 +msgid "No card" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:861 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:893 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:976 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1094 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:907 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1108 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:922 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:936 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1007 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1021 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1061 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1075 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1101 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1115 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:1165 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1179 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1166 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1180 msgid "" "
Cannot upload books to device there is no more free space available " msgstr "" @@ -6816,107 +6861,197 @@ msgstr "" msgid "Fit &cover within view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:81 -msgid "&Previous" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:82 -msgid "&Next" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:33 msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:309 msgid "Generate catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:93 msgid "Generate catalog for {0} books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:82 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:94 msgid "Catalog &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:95 msgid "" "Catalog &title (existing catalog with the same title will be replaced):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:96 msgid "&Send catalog to device automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:97 msgid "Catalog options" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:26 -msgid "Check Library" +msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:35 -msgid "&Run the check" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:55 +msgid "Dumping database to SQL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:81 +msgid "Loading database from SQL" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:148 +msgid "Check Library -- Problems Found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158 +msgid "" +"
calibre stores the list of your books and their metadata in a\n" +" database. The actual book files and covers are stored as normal\n" +" files in the calibre library folder. The database contains a list of " +"the files\n" +" and covers belonging to each book entry. This tool checks that the\n" +" actual files in the library folder on your computer match the\n" +" information in the database.
\n" +"\n" +"The result of each type of check is shown to the left. The " +"various\n" +" checks are:\n" +"
\n" +"There are two kinds of automatic fixes possible: Delete\n" +" marked and Fix marked.
\n" +"Delete marked is used to remove extra files/folders/covers " +"that\n" +" have no entries in the database. Check the box next to the item you " +"want\n" +" to delete. Use with caution.
\n" +"Fix marked is applicable only to covers (the two lines " +"marked\n" +" 'fixable'). In the case of missing cover files, checking the " +"fixable\n" +" box and pushing this button will remove the cover mark from the\n" +" database for all the files in that category. In the case of extra\n" +" cover files, checking the fixable box and pushing this button will\n" +" add the cover mark to the database for all the files in that\n" +" category.
\n" +" " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:218 +msgid "&Run the check again" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:221 msgid "Copy &to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:228 msgid "Delete marked files (checked subitems)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:234 msgid "Fix marked sections (checked fixable items)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:244 msgid "Names to ignore:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:249 msgid "" "Enter comma-separated standard file name wildcards, such as synctoy*.dat" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:252 msgid "Extensions to ignore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:257 msgid "" "Enter comma-separated extensions without a leading dot. Used only in book " "folders" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:306 msgid "(fixable)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:329 msgid "Path from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:329 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:89 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:253 msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:354 msgid "" "The marked files and folders will be permanently deleted. Are you " "sure?" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:45 msgid "Choose Format" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1162 +msgid "Format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:50 +msgid "Existing" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:51 +msgid "Convertible" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:43 msgid "Choose location for calibre library" msgstr "" @@ -6954,7 +7089,7 @@ msgid "No location selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:665 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:670 msgid "Bad location" msgstr "" @@ -7082,11 +7217,6 @@ msgstr "" msgid "Date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1162 -msgid "Format" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device_ui.py:55 msgid "Delete from device" msgstr "" @@ -7107,12 +7237,12 @@ 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:837 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:893 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:838 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:894 msgid "Author names cannot contain & characters." msgstr "" @@ -7242,82 +7372,103 @@ msgstr "" msgid "Stop &all non device jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:57 -msgid "Title/Author" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:43 +msgid "&Copy to clipboard" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:48 +msgid "Show &details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:49 +msgid "Hide &details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:53 +msgid "Show detailed information about this error" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:525 +msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:58 -msgid "Standard metadata" +msgid "Title/Author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:59 -msgid "Custom metadata" +msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:60 +msgid "Custom metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:61 msgid "Search/Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:64 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:76 msgid "Working" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:256 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:384 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:257 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:383 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:386 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:387 msgid "Capitalize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263 msgid "Character match" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:264 msgid "Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:267 msgid "Replace field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:268 msgid "Prepend to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:269 msgid "Append to field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:279 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:320 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:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:378 msgid "Book %d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:393 msgid "" "You can destroy your library using this feature. Changes are " "permanent. There is no undo function. You are strongly encouraged to back up " @@ -7325,7 +7476,7 @@ msgid "" "character matching or regular expressions. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:401 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 " @@ -7335,7 +7486,7 @@ msgid "" "text will match both upper- and lower-case letters" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:412 msgid "" "In regular expression mode, the search text is an arbitrary python-" "compatible regular expression. The replacement text can contain " @@ -7350,121 +7501,145 @@ msgid "" "function." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:458 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:476 msgid "S/R TEMPLATE ERROR" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:578 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:596 msgid "You must specify a destination when source is a composite field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:681 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:689 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:788 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:707 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:811 msgid "Search/replace invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:700 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:690 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:708 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:789 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:812 msgid "Search pattern is invalid: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:840 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:863 msgid "" "Applying changes to %d books.\n" "Phase {0} {1}%%." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:892 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:555 +msgid "Delete saved search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:893 +msgid "The selected saved search/replace will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:910 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:918 +msgid "Save search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:911 +msgid "Search/replace name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:919 +msgid "" +"That saved search/replace already exists and will be overwritten. Are you " +"sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:494 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:496 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:497 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:453 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:498 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:454 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:499 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:455 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:500 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:424 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:774 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:456 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:457 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:502 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:426 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:775 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:458 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:503 msgid "No change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:459 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:504 #: /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:461 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:463 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:464 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:509 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:432 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:465 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:510 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:467 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:512 msgid "Check this box to remove all tags from the books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:468 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513 msgid "Remove &all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:517 msgid "If checked, the series will be cleared" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:518 msgid "&Clear series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:474 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519 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" @@ -7472,161 +7647,182 @@ 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:478 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:523 msgid "&Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:479 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524 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:482 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:527 msgid "&Force numbers to start with:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:483 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:528 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:440 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:957 msgid "&Date:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:529 msgid "d MMM yyyy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:486 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:491 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:536 msgid "&Apply date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:487 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:532 msgid "&Published:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:489 +#: /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:444 msgid "Clear published date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:538 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:495 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:540 msgid "Change title to title &case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:541 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:499 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:544 msgid "Remove &stored conversion settings for the selected books" 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:545 msgid "Change &cover" 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:546 msgid "&Generate default cover" 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:547 msgid "&Remove cover" 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:548 msgid "Set from &ebook file(s)" 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:549 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:465 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:509 msgid "&Basic metadata" 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:550 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:466 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:387 msgid "&Custom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:551 +msgid "Load searc&h/replace:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:552 +msgid "Select saved search/replace to load." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:553 +msgid "Save current search/replace" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:554 +msgid "Sa&ve" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:557 msgid "Search &field:" 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:558 msgid "The name of the field that you want to search" 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:559 msgid "Search &mode:" msgstr "" -#: /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:560 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:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 msgid "Te&mplate:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 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:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:563 msgid "&Search for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:564 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:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:565 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:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:566 msgid "Cas&e sensitive" 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:567 msgid "&Replace with:" 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:568 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:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:569 msgid "&Apply function after replace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:570 msgid "" "Specify how the text is to be processed after matching and replacement. In " "character mode, the entire\n" @@ -7634,25 +7830,25 @@ msgid "" "processed" 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:572 msgid "&Destination field:" 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:573 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:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:575 msgid "M&ode:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:576 msgid "Specify how the text should be copied into the destination." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:577 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 " @@ -7660,41 +7856,41 @@ msgid "" "not multiple and the destination field is multiple" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:580 msgid "Split &result" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:581 msgid "For multiple-valued fields, sho&w" 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:582 msgid "values starting a&t" 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:583 msgid "with values separated b&y" 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:584 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:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:585 msgid "Test text" 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:586 msgid "Test result" 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:587 msgid "Your test:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:588 msgid "&Search and replace" msgstr "" @@ -7730,115 +7926,115 @@ msgstr "" msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:685 msgid "Specify title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:686 msgid "You must specify a title and author before generating a cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:246 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:260 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:271 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:276 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:278 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:272 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:279 msgid "Could not fetch cover.This operation will rebuild the " +"database from the individual book metadata. This is useful if the database " +"has been corrupted and you get a blank list of books. Note that restoring " +"only restores books, not any settings stored in the database, or any custom " +"recipes.
Do you want to restore the database?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:102 +msgid "Restoring database failed, click Show details to see details" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:107 +msgid "" +"Restoring the database succeeded with some warnings click Show details to " +"see the details." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:112 +msgid "Restoring database was successful" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:55 msgid "" "The current saved search will be permanently deleted. Are you sure?" @@ -8176,11 +8407,11 @@ msgstr "" msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:353 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:354 msgid "Cannot download news as no internet connection is active" msgstr "" @@ -8422,63 +8653,78 @@ msgstr "" msgid "Publishers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:128 msgid " (not on any book)" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:197 +#: /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:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:198 +msgid "That name is already used, perhaps with different case." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:211 msgid "" "The current tag category will be permanently deleted. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 msgid "User Categories Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159 -msgid "A&vailable items" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 -msgid "Apply tags to current tag category" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 -msgid "A&pplied items" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 -msgid "Unapply (remove) tag from current tag category" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 msgid "Category name: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 msgid "Select a category to edit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169 msgid "Delete this selected tag category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:169 -msgid "Enter a new category name. Select the kind before adding it." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:170 -msgid "Add the new category" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:171 +msgid "Enter a category name, then use the add button or the rename button" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:172 +msgid "Add a new category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:174 +msgid "Rename the current category to the what is in the box" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:176 msgid "Category filter: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:177 msgid "Select the content kind of the new category" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:178 +msgid "A&vailable items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:179 +msgid "Apply tags to current tag category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:181 +msgid "A&pplied items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:182 +msgid "Unapply (remove) tag from current tag category" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:105 msgid "Are your sure?" @@ -8535,12 +8781,12 @@ msgid "%s (was %s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:827 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:883 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:828 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:884 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8609,7 +8855,7 @@ msgid "Send test mail from %s to:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:123 msgid "&Test" msgstr "" @@ -8841,7 +9087,7 @@ msgid "Attached, you will find the e-book" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:247 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:186 msgid "by" msgstr "" @@ -8874,7 +9120,7 @@ msgstr "" msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 msgid "" "\n" @@ -8898,64 +9144,64 @@ msgid "" "metadata entries are documented in tooltips.