Merge from trunk

This commit is contained in:
Charles Haley 2011-10-28 10:53:53 +02:00
commit 62ec662cf7
83 changed files with 17894 additions and 16469 deletions

View File

@ -19,6 +19,55 @@
# new recipes: # new recipes:
# - title: # - title:
- version: 0.8.24
date: 2011-10-27
new features:
- title: "Kobo: Add support for fetching annotations from the kobo reader."
description: "Right click the send to device button in calibre with your kobo connected and choose fetch annotations. The annotations are placed into the comments of the corresponding books in the calibre library. This feature is still experimental."
type: major
- title: "Preserve the set of selected books in the library view when a device is connected, fixing a long standing annoyance"
bug fixes:
- title: "Prevent changing of device metadata management option while a device is connected."
tickets: [874118]
- title: "Book details panel: Show tooltip only when hovering over cover, not the rest of the book information, as it makes it hard to read."
tickets: [876454]
- title: "MOBI Output: Fix use of list elements as link anchors caused links to always point to start of list."
tickets: [879391]
- title: "RB Output: Fix calibre generated rb files not being opened by the RocketBook."
tickets: [880930]
- title: "FB2 Input: Dont choke on FB2 files that have empty embedded content tags."
tickets: [880904]
- title: "ODT Input: CSS rationalization should not fail with non ascii class names"
- title: "Fix creating new library using the copy structure option incorrectly setting all text type columns to be like the tags column"
- title: "E-book viewer: Don't choke on windows installs with a non UTF-8 filesystem encoding."
tickets: [879740]
improved recipes:
- Novaya Gazeta
- El Universal (Venezuela)
- The Australian (subscription enabled)
- Metro NL
- The Scotsman
- Japan Times
new recipes:
- title: Silicon Republic
author: Neil Grogan
- title: Calibre Blog
author: Krittika Goyal
- version: 0.8.23 - version: 0.8.23
date: 2011-10-21 date: 2011-10-21

View File

@ -56,6 +56,7 @@ class ElUniversal(BasicNewsRecipe):
] ]
def print_version(self, url): def print_version(self, url):
rp,sep,rest = url.rpartition('/') return url + '-imp'
return rp + sep + 'imp_' + rest
def get_article_url(self, article):
return article.get('guid', None)

View File

@ -1,14 +1,13 @@
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
import re import re
from calibre.ebooks.BeautifulSoup import BeautifulSoup from calibre.utils.magick import Image
from calibre.utils.magick import Image, PixelWand, create_canvas
''' Version 1.2, updated cover image to match the changed website. ''' Version 1.2, updated cover image to match the changed website.
added info date on title added info date on title
version 1.4 Updated tags, delay and added autoclean 22-09-2011 version 1.4 Updated tags, delay and added autoclean 22-09-2011
version 1.5 Changes due to changes in site version 1.5 Changes due to changes in site
version 1.6 Added css, removed auto cleanup, added buitenland section, added use_embedded_content, added remove_attributes version 1.6 Added css, removed auto cleanup, added buitenland section, added use_embedded_content, added remove_attributes
Added som processing on pictures Added som processing on pictures
Removed links in html Removed links in html
Removed extre white characters Removed extre white characters
@ -48,12 +47,12 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe):
div.article-image-caption {width: 246px;margin-bottom: 5px;margin-left: 10px;}\ div.article-image-caption {width: 246px;margin-bottom: 5px;margin-left: 10px;}\
div.article-image-caption-2column {margin-bottom: 10px;width: 373px;} div.article-image-caption-3column {}\ div.article-image-caption-2column {margin-bottom: 10px;width: 373px;} div.article-image-caption-3column {}\
img {border:0px;} .img-mask {position:absolute;top:0px;left:0px;}' img {border:0px;} .img-mask {position:absolute;top:0px;left:0px;}'
keep_only_tags = [dict(name='div', attrs={'class':[ 'article-image-caption-2column', 'article-image-caption-3column', 'article-body', 'article-box-fact']}), keep_only_tags = [dict(name='div', attrs={'class':[ 'article-image-caption-2column', 'article-image-caption-3column', 'article-body', 'article-box-fact']}),
dict(name='div', attrs={'id':['date']}), dict(name='div', attrs={'id':['date']}),
dict(name='h1', attrs={'class':['title']}), dict(name='h1', attrs={'class':['title']}),
dict(name='h2', attrs={'class':['subtitle']})] dict(name='h2', attrs={'class':['subtitle']})]
remove_tags = [dict(name='div', attrs={'class':[ 'metroCommentFormWrap', remove_tags = [dict(name='div', attrs={'class':[ 'metroCommentFormWrap',
'commentForm', 'metroCommentInnerWrap', 'article-slideshow-counter-container', 'article-slideshow-control', 'ad', 'header-links', 'commentForm', 'metroCommentInnerWrap', 'article-slideshow-counter-container', 'article-slideshow-control', 'ad', 'header-links',
'art-rgt','pluck-app pluck-comm', 'share-and-byline', 'article-tools-below-title', 'col-179 ', 'related-links', 'clear padding-top-15', 'share-tools', 'article-page-auto-pushes', 'footer-edit']}), 'art-rgt','pluck-app pluck-comm', 'share-and-byline', 'article-tools-below-title', 'col-179 ', 'related-links', 'clear padding-top-15', 'share-tools', 'article-page-auto-pushes', 'footer-edit']}),
@ -72,28 +71,27 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe):
img = Image() img = Image()
img.open(iurl) img.open(iurl)
#width, height = img.size #width, height = img.size
#print '***img is: ', iurl, '\n****width is: ', width, 'height is: ', height #print '***img is: ', iurl, '\n****width is: ', width, 'height is: ', height
pw = PixelWand()
img.trim(0) img.trim(0)
img.save(iurl) img.save(iurl)
''' '''
#width, height = img.size #width, height = img.size
#print '***TRIMMED img width is: ', width, 'height is: ', height #print '***TRIMMED img width is: ', width, 'height is: ', height
left=0 left=0
top=0 top=0
border_color='#ffffff' border_color='#ffffff'
width, height = img.size width, height = img.size
#print '***retrieved img width is: ', width, 'height is: ', height #print '***retrieved img width is: ', width, 'height is: ', height
height_correction = 1.17 height_correction = 1.17
canvas = create_canvas(width, height*height_correction,border_color) canvas = create_canvas(width, height*height_correction,border_color)
canvas.compose(img, left, top) canvas.compose(img, left, top)
#img = canvas #img = canvas
canvas.save(iurl) canvas.save(iurl)
#width, height = canvas.size #width, height = canvas.size
#print '***NEW img width is: ', width, 'height is: ', height #print '***NEW img width is: ', width, 'height is: ', height
''' '''
return soup return soup
feeds = [ feeds = [
(u'Binnenland', u'http://www.metronieuws.nl/rss.xml?c=1277377288-3'), (u'Binnenland', u'http://www.metronieuws.nl/rss.xml?c=1277377288-3'),
(u'Economie', u'http://www.metronieuws.nl/rss.xml?c=1278070988-0'), (u'Economie', u'http://www.metronieuws.nl/rss.xml?c=1278070988-0'),

View File

@ -10,9 +10,8 @@ class AdvancedUserRecipe1286819935(BasicNewsRecipe):
remove_attributes = ['style'] remove_attributes = ['style']
language = 'ru' language = 'ru'
feeds = [(u'Articles', u'http://www.novayagazeta.ru/rss_number.xml')] feeds = [(u'Articles', u'http://www.novayagazeta.ru/rss/all.xml')]
def print_version(self, url): def print_version(self, url):
return url + '?print=true' return '%s%s' % (url, '?print=1')

View File

@ -0,0 +1,19 @@
from calibre.web.feeds.news import BasicNewsRecipe
class Real_world_economics_review(BasicNewsRecipe):
title = u'Real-world economis review blog'
oldest_article = 7
max_articles_per_feed = 100
use_embedded_content = False
__author__ = 'Julio Map'
language = 'en'
no_stylesheets = True
keep_only_tags = dict(name='div', attrs={'id':'main'})
remove_tags = [dict(name='div', attrs={'id':'postpath'}),
dict(name='div', attrs={'class':'robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing'}),
dict(name='div', attrs={'class':'sharedaddy sd-sharing-enabled'})
]
feeds = [(u'Real-World Economics Review Blog', u'http://rwer.wordpress.com/feed/')]

View File

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-02 16:21+0000\n" "POT-Creation-Date: 2011-09-27 14:31+0000\n"
"PO-Revision-Date: 2011-09-21 13:48+0000\n" "PO-Revision-Date: 2011-10-22 22:04+0000\n"
"Last-Translator: Jellby <Unknown>\n" "Last-Translator: Fitoschido <fitoschido@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n" "Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-22 04:47+0000\n" "X-Launchpad-Export-Date: 2011-10-23 05:13+0000\n"
"X-Generator: Launchpad (build 13996)\n" "X-Generator: Launchpad (build 14170)\n"
#. name for aaa #. name for aaa
msgid "Ghotuo" msgid "Ghotuo"
@ -5911,7 +5911,7 @@ msgstr "Gwahatike"
#. name for dai #. name for dai
msgid "Day" msgid "Day"
msgstr "Day" msgstr "Día"
#. name for daj #. name for daj
msgid "Daju; Dar Fur" msgid "Daju; Dar Fur"
@ -18231,7 +18231,7 @@ msgstr ""
#. name for nhi #. name for nhi
msgid "Nahuatl; Zacatlán-Ahuacatlán-Tepetzintla" msgid "Nahuatl; Zacatlán-Ahuacatlán-Tepetzintla"
msgstr "Náhuatl de Zacatlán; Ahuacatlán y Tepetzintla" msgstr "Náhuatl de Zacatlán-Ahuacatlán-Tepetzintla"
#. name for nhk #. name for nhk
msgid "Nahuatl; Isthmus-Cosoleacaque" msgid "Nahuatl; Isthmus-Cosoleacaque"

View File

@ -10,14 +10,14 @@ msgstr ""
"Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-" "Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-"
"devel@lists.alioth.debian.org>\n" "devel@lists.alioth.debian.org>\n"
"POT-Creation-Date: 2011-09-27 14:31+0000\n" "POT-Creation-Date: 2011-09-27 14:31+0000\n"
"PO-Revision-Date: 2011-09-27 18:36+0000\n" "PO-Revision-Date: 2011-10-25 19:06+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: zeugma <Unknown>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n" "Language-Team: Turkish <gnome-turk@gnome.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-28 05:12+0000\n" "X-Launchpad-Export-Date: 2011-10-26 05:13+0000\n"
"X-Generator: Launchpad (build 14049)\n" "X-Generator: Launchpad (build 14189)\n"
"Language: tr\n" "Language: tr\n"
#. name for aaa #. name for aaa
@ -54,7 +54,7 @@ msgstr ""
#. name for aai #. name for aai
msgid "Arifama-Miniafia" msgid "Arifama-Miniafia"
msgstr "" msgstr "Arifama-Miniafia"
#. name for aak #. name for aak
msgid "Ankave" msgid "Ankave"
@ -122,7 +122,7 @@ msgstr "Bankon"
#. name for abc #. name for abc
msgid "Ayta; Ambala" msgid "Ayta; Ambala"
msgstr "" msgstr "Ayta; Ambala"
#. name for abd #. name for abd
msgid "Manide" msgid "Manide"
@ -130,11 +130,11 @@ msgstr "Manide"
#. name for abe #. name for abe
msgid "Abnaki; Western" msgid "Abnaki; Western"
msgstr "" msgstr "Abnaki; Western"
#. name for abf #. name for abf
msgid "Abai Sungai" msgid "Abai Sungai"
msgstr "" msgstr "Abai Sungai"
#. name for abg #. name for abg
msgid "Abaga" msgid "Abaga"
@ -146,7 +146,7 @@ msgstr "Arapça; Tacikçe"
#. name for abi #. name for abi
msgid "Abidji" msgid "Abidji"
msgstr "" msgstr "Abidji"
#. name for abj #. name for abj
msgid "Aka-Bea" msgid "Aka-Bea"
@ -158,7 +158,7 @@ msgstr "Abhazca"
#. name for abl #. name for abl
msgid "Lampung Nyo" msgid "Lampung Nyo"
msgstr "" msgstr "Lampung Nyo"
#. name for abm #. name for abm
msgid "Abanyom" msgid "Abanyom"
@ -282,7 +282,7 @@ msgstr "Achterhoeks"
#. name for acu #. name for acu
msgid "Achuar-Shiwiar" msgid "Achuar-Shiwiar"
msgstr "" msgstr "Achuar-Shiwiar"
#. name for acv #. name for acv
msgid "Achumawi" msgid "Achumawi"

View File

@ -4,7 +4,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
__appname__ = u'calibre' __appname__ = u'calibre'
numeric_version = (0, 8, 23) numeric_version = (0, 8, 24)
__version__ = u'.'.join(map(unicode, numeric_version)) __version__ = u'.'.join(map(unicode, numeric_version))
__author__ = u"Kovid Goyal <kovid@kovidgoyal.net>" __author__ = u"Kovid Goyal <kovid@kovidgoyal.net>"

View File

@ -19,6 +19,8 @@ from calibre.ebooks.textile.unsmarten import unsmarten
class TextileMLizer(OEB2HTML): class TextileMLizer(OEB2HTML):
MAX_EM = 10
def extract_content(self, oeb_book, opts): def extract_content(self, oeb_book, opts):
self.log.info('Converting XHTML to Textile formatted TXT...') self.log.info('Converting XHTML to Textile formatted TXT...')
self.opts = opts self.opts = opts
@ -176,7 +178,7 @@ class TextileMLizer(OEB2HTML):
if 'margin-left' in style.cssdict() and style['margin-left'] != 'auto': if 'margin-left' in style.cssdict() and style['margin-left'] != 'auto':
left_margin_pts = unit_convert(style['margin-left'], style.width, style.fontSize, stylizer.profile.dpi) left_margin_pts = unit_convert(style['margin-left'], style.width, style.fontSize, stylizer.profile.dpi)
left = left_margin_pts + left_padding_pts left = left_margin_pts + left_padding_pts
emleft = int(round(left / stylizer.profile.fbase)) emleft = min(int(round(left / stylizer.profile.fbase)), self.MAX_EM)
if emleft >= 1: if emleft >= 1:
txt += '(' * emleft txt += '(' * emleft
right_padding_pts = 0 right_padding_pts = 0
@ -186,7 +188,7 @@ class TextileMLizer(OEB2HTML):
if 'margin-right' in style.cssdict() and style['margin-right'] != 'auto': if 'margin-right' in style.cssdict() and style['margin-right'] != 'auto':
right_margin_pts = unit_convert(style['margin-right'], style.width, style.fontSize, stylizer.profile.dpi) right_margin_pts = unit_convert(style['margin-right'], style.width, style.fontSize, stylizer.profile.dpi)
right = right_margin_pts + right_padding_pts right = right_margin_pts + right_padding_pts
emright = int(round(right / stylizer.profile.fbase)) emright = min(int(round(right / stylizer.profile.fbase)), self.MAX_EM)
if emright >= 1: if emright >= 1:
txt += ')' * emright txt += ')' * emright
@ -243,7 +245,7 @@ class TextileMLizer(OEB2HTML):
# Soft scene breaks. # Soft scene breaks.
if 'margin-top' in style.cssdict() and style['margin-top'] != 'auto': if 'margin-top' in style.cssdict() and style['margin-top'] != 'auto':
ems = int(round(float(style.marginTop) / style.fontSize) - 1) ems = min(int(round(float(style.marginTop) / style.fontSize) - 1), self.MAX_EM)
if ems >= 1: if ems >= 1:
text.append(u'\n\n\xa0' * ems) text.append(u'\n\n\xa0' * ems)
@ -476,7 +478,7 @@ class TextileMLizer(OEB2HTML):
# Soft scene breaks. # Soft scene breaks.
if 'margin-bottom' in style.cssdict() and style['margin-bottom'] != 'auto': if 'margin-bottom' in style.cssdict() and style['margin-bottom'] != 'auto':
ems = int(round((float(style.marginBottom) / style.fontSize) - 1)) ems = min(int(round((float(style.marginBottom) / style.fontSize) - 1)), self.MAX_EM)
if ems >= 1: if ems >= 1:
text.append(u'\n\n\xa0' * ems) text.append(u'\n\n\xa0' * ems)

View File

@ -1319,8 +1319,7 @@ class DeviceMixin(object): # {{{
# If it does not, then do it here. # If it does not, then do it here.
if not self.set_books_in_library(self.booklists(), reset=True, add_as_step_to_job=job): if not self.set_books_in_library(self.booklists(), reset=True, add_as_step_to_job=job):
self.upload_booklists(job) self.upload_booklists(job)
with self.library_view.preserve_state(): self.refresh_ondevice()
self.refresh_ondevice()
view = self.card_a_view if on_card == 'carda' else \ view = self.card_a_view if on_card == 'carda' else \
self.card_b_view if on_card == 'cardb' else self.memory_view self.card_b_view if on_card == 'cardb' else self.memory_view

View File

@ -14,7 +14,7 @@ from calibre.constants import iswindows
import cherrypy import cherrypy
def start_threaded_server(db, opts): def start_threaded_server(db, opts):
server = LibraryServer(db, opts, embedded=True) server = LibraryServer(db, opts, embedded=True, show_tracebacks=False)
server.thread = Thread(target=server.start) server.thread = Thread(target=server.start)
server.thread.setDaemon(True) server.thread.setDaemon(True)
server.thread.start() server.thread.start()
@ -112,7 +112,7 @@ def main(args=sys.argv):
if opts.with_library is None: if opts.with_library is None:
opts.with_library = prefs['library_path'] opts.with_library = prefs['library_path']
db = LibraryDatabase2(opts.with_library) db = LibraryDatabase2(opts.with_library)
server = LibraryServer(db, opts) server = LibraryServer(db, opts, show_tracebacks=opts.develop)
server.start() server.start()
return 0 return 0

View File

@ -243,7 +243,7 @@ Replace ``192.168.1.2`` with the local IP address of the computer running |app|.
If you get timeout errors while browsing the calibre catalog in Stanza, try increasing the connection timeout value in the stanza settings. Go to Info->Settings and increase the value of Download Timeout. If you get timeout errors while browsing the calibre catalog in Stanza, try increasing the connection timeout value in the stanza settings. Go to Info->Settings and increase the value of Download Timeout.
.. note:: .. note::
As of iOS version 5 Stanza no longer works on Apple devices. Alternatives to Stanza are discussed `here <http://www.mobileread.com/forums/showthread.php?t=152789>`_. As of iOS version 5 Stanza no longer works on Apple devices. Alternatives to Stanza are discussed `in this forum <http://www.mobileread.com/forums/showthread.php?t=152789>`_.
Using iBooks Using iBooks

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre 0.8.23\n" "Project-Id-Version: calibre 0.8.24\n"
"POT-Creation-Date: 2011-10-20 22:00+IST\n" "POT-Creation-Date: 2011-10-27 14:45+IST\n"
"PO-Revision-Date: 2011-10-20 22:00+IST\n" "PO-Revision-Date: 2011-10-27 14:45+IST\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n" "Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -31,13 +31,13 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:79 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:79
#: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24 #: /home/kovid/work/calibre/src/calibre/devices/kobo/books.py:24
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:581 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:579
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /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/prs505/sony_cache.py:660
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:308
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:309 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:309
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:310
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:485 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:485
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:106 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:106
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:109
@ -80,7 +80,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:301 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:302
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:80 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:80
@ -101,8 +101,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:1006 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:1006
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:299 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:299
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:496
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:138 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:141
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:140 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:143
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1002 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1002
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1007 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1007
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1079 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1079
@ -142,7 +142,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:380
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:161 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:161
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:168
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:576 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:579
#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151
@ -175,14 +175,14 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:200 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:200
#: /home/kovid/work/calibre/src/calibre/library/cli.py:220 #: /home/kovid/work/calibre/src/calibre/library/cli.py:220
#: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database.py:914
#: /home/kovid/work/calibre/src/calibre/library/database2.py:543 #: /home/kovid/work/calibre/src/calibre/library/database2.py:544
#: /home/kovid/work/calibre/src/calibre/library/database2.py:551 #: /home/kovid/work/calibre/src/calibre/library/database2.py:552
#: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:563
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2039 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2040
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2191 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2192
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3246 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3247
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3248 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3249
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3381 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3382
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:227 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:227
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:228 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:228
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:243 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:243
@ -449,7 +449,7 @@ msgid "Change the way calibre behaves"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:919 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:919
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:233 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:252
msgid "Add your own columns" msgid "Add your own columns"
msgstr "" msgstr ""
@ -852,26 +852,26 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:647 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:647
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:66 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:66
#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:563 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:563
#: /home/kovid/work/calibre/src/calibre/library/database2.py:989 #: /home/kovid/work/calibre/src/calibre/library/database2.py:990
#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:820 #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:820
#: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:832 #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:832
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/db/fields.py:163 #: /home/kovid/work/calibre/src/calibre/db/fields.py:163
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1103 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1104
msgid "Main" msgid "Main"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/db/fields.py:165 #: /home/kovid/work/calibre/src/calibre/db/fields.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:72
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1105 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1106
msgid "Card A" msgid "Card A"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/db/fields.py:167 #: /home/kovid/work/calibre/src/calibre/db/fields.py:167
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:74
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1107 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1108
msgid "Card B" msgid "Card B"
msgstr "" msgstr ""
@ -987,8 +987,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:526 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:527
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:545 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:546
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1084 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1084
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1090 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1090
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1125 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1125
@ -996,9 +996,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:453 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:453
#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1148 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1148
#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1150 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1150
#: /home/kovid/work/calibre/src/calibre/library/database2.py:336 #: /home/kovid/work/calibre/src/calibre/library/database2.py:337
#: /home/kovid/work/calibre/src/calibre/library/database2.py:349 #: /home/kovid/work/calibre/src/calibre/library/database2.py:350
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3107 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3108
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187
msgid "News" msgid "News"
msgstr "" msgstr ""
@ -1006,8 +1006,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2685 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2685
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:662 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:662
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3066 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3067
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3084 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3085
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
@ -1047,11 +1047,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:218 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:218
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:234 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:234
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:88
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:91 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:91
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:94 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:97 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:303
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:305 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:151
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:150
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:140 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:140
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:143
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:146 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:146
@ -1071,8 +1071,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:330 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:330
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:439 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:437
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:472
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:297 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:297
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:328 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:328
msgid "Adding books to device metadata listing..." msgid "Adding books to device metadata listing..."
@ -1082,8 +1082,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:354 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:354
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:125 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:125
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:391 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:389
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:423 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:421
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:334 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:334
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:352 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:352
msgid "Removing books from device..." msgid "Removing books from device..."
@ -1091,8 +1091,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:369 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:369
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:427 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:425
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:434 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:432
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:364 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:364
msgid "Removing books from device metadata listing..." msgid "Removing books from device metadata listing..."
@ -1328,39 +1328,61 @@ msgstr ""
msgid "Communicate with the Kindle DX eBook reader." msgid "Communicate with the Kindle DX eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:25 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:26
msgid "Communicate with the Kobo Reader" msgid "Communicate with the Kobo Reader"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:54 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56
msgid "The Kobo supports several collections including " msgid "The Kobo supports several collections including "
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:56 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:58
msgid "Create tags for automatic management" msgid "Create tags for automatic management"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:57 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:59
msgid "Upload covers for books (newer readers)" msgid "Upload covers for books (newer readers)"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:58 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:60
msgid "Normally, the KOBO readers get the cover image from the ebook file itself. With this option, calibre will send a separate cover image to the reader, useful if you have modified the cover." msgid "Normally, the KOBO readers get the cover image from the ebook file itself. With this option, calibre will send a separate cover image to the reader, useful if you have modified the cover."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:62 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:64
msgid "Upload Black and White Covers" msgid "Upload Black and White Covers"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:561 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:559
#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:390 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:390
msgid "Not Implemented" msgid "Not Implemented"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:562 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:560
msgid "\".kobo\" files do not exist on the device as books instead, they are rows in the sqlite database. Currently they cannot be exported or viewed." msgid "\".kobo\" files do not exist on the device as books instead, they are rows in the sqlite database. Currently they cannot be exported or viewed."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:989
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:995
#, python-format
msgid "<hr /><b>Book Last Read:</b> %(time)s<br /><b>Percentage Read:</b> %(pr)d%%<hr />"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1013
#, python-format
msgid "<b>Chapter %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br /><b>Chapter Progress:</b> %(chapter_progress)s%%<br />%(annotation)s<br /><hr />"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1022
#, python-format
msgid "<b>Chapter %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br /><b>Chapter Progress:</b> %(chapter_progress)s%%<br /><b>Highlight:</b> %(text)s<br /><hr />"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1031
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1041
#, python-format
msgid "<b>Chapter %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br /><b>Chapter Progress:</b> %(chapter_progress)s%%<br /><b>Highlight:</b> %(text)s<br /><b>Notes:</b> %(annotation)s<br /><hr />"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:19 #: /home/kovid/work/calibre/src/calibre/devices/misc.py:19
msgid "Communicate with the Palm Pre" msgid "Communicate with the Palm Pre"
msgstr "" msgstr ""
@ -1471,7 +1493,7 @@ msgid "All by author"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:70
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:67 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:68
msgid "Comma separated list of metadata fields to turn into collections on the device. Possibilities include: " msgid "Comma separated list of metadata fields to turn into collections on the device. Possibilities include: "
msgstr "" msgstr ""
@ -1493,17 +1515,17 @@ msgid "Refresh separate covers when using automatic management (newer readers)"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:86 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:86
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:77 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:78
msgid "Set this option to have separate book covers uploaded every time you connect your device. Unset this option if you have so many books on the reader that performance is unacceptable." msgid "Set this option to have separate book covers uploaded every time you connect your device. Unset this option if you have so many books on the reader that performance is unacceptable."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:90 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:90
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:81 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:82
msgid "Preserve cover aspect ratio when building thumbnails" msgid "Preserve cover aspect ratio when building thumbnails"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:92 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:92
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:83 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:84
msgid "Set this option if you want the cover thumbnails to have the same aspect ratio (width to height) as the cover. Unset it if you want the thumbnail to be the maximum size, ignoring aspect ratio." msgid "Set this option if you want the cover thumbnails to have the same aspect ratio (width to height) as the cover. Unset it if you want the thumbnail to be the maximum size, ignoring aspect ratio."
msgstr "" msgstr ""
@ -1524,23 +1546,23 @@ msgstr ""
msgid "Communicate with the PRST1 and newer SONY eBook readers" msgid "Communicate with the PRST1 and newer SONY eBook readers"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:71
msgid "Upload separate cover thumbnails for books" msgid "Upload separate cover thumbnails for books"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:72
msgid "Normally, the SONY readers get the cover image from the ebook file itself. With this option, calibre will send a separate cover image to the reader, useful if you are sending DRMed books in which you cannot change the cover." msgid "Normally, the SONY readers get the cover image from the ebook file itself. With this option, calibre will send a separate cover image to the reader, useful if you are sending DRMed books in which you cannot change the cover."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:75 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:76
msgid "Refresh separate covers when using automatic management" msgid "Refresh separate covers when using automatic management"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:87 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:88
msgid "Use SONY Author Format (First Author Only)" msgid "Use SONY Author Format (First Author Only)"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:89 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:90
msgid "Set this option if you want the author on the Sony to appear the same way the T1 sets it. This means it will only show the first author for books with multiple authors. Leave this disabled if you use Metadata Plugboards." msgid "Set this option if you want the author on the Sony to appear the same way the T1 sets it. This means it will only show the first author for books with multiple authors. Leave this disabled if you use Metadata Plugboards."
msgstr "" msgstr ""
@ -3100,7 +3122,7 @@ msgstr ""
msgid "Main Text" msgid "Main Text"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:41 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:42
#, python-format #, python-format
msgid "%s format books are not supported" msgid "%s format books are not supported"
msgstr "" msgstr ""
@ -4097,7 +4119,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:471 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:212
#: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:898 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:934
msgid "Not allowed" msgid "Not allowed"
msgstr "" msgstr ""
@ -5166,17 +5188,17 @@ msgstr ""
msgid "Remove Cover" msgid "Remove Cover"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:569 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:335
msgid "Double-click to open Book Details window" msgid "Double-click to open Book Details window"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:570 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:336
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295
msgid "Path" msgid "Path"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:571 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:337
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109
#, python-format #, python-format
msgid "Cover size: %(width)d x %(height)d" msgid "Cover size: %(width)d x %(height)d"
@ -5275,7 +5297,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:56
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:21
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:109
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:68 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:21
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:21
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:21
@ -10064,54 +10086,54 @@ msgstr ""
msgid "Double click to <b>edit</b> me<br><br>" msgid "Double click to <b>edit</b> me<br><br>"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187
#, python-format #, python-format
msgid "Hide column %s" msgid "Hide column %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:192
#, python-format #, python-format
msgid "Sort on %s" msgid "Sort on %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:174 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:193
msgid "Ascending" msgid "Ascending"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:196
msgid "Descending" msgid "Descending"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208
#, python-format #, python-format
msgid "Change text alignment for %s" msgid "Change text alignment for %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:210
msgid "Left" msgid "Left"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:210
msgid "Right" msgid "Right"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:211
msgid "Center" msgid "Center"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:230
msgid "Show column" msgid "Show column"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:242
msgid "Shrink column if it is too wide to fit" msgid "Shrink column if it is too wide to fit"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:226 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:245
msgid "Restore default layout" msgid "Restore default layout"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:899 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:935
msgid "Dropping onto a device is not supported. First add the book to the calibre library." msgid "Dropping onto a device is not supported. First add the book to the calibre library."
msgstr "" msgstr ""
@ -12292,7 +12314,7 @@ msgid "Change paths to &lowercase"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:46
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:57
msgid "Format &dates as:" msgid "Format &dates as:"
msgstr "" msgstr ""
@ -12421,32 +12443,36 @@ msgid ""
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:41
msgid "Manual management" msgid "Manual management"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:29
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:43
msgid "Only on send" msgid "Only on send"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:30 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:30
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:45
msgid "Automatic management" msgid "Automatic management"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:36
msgid "Cannot change metadata management while a device is connected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:30
msgid "Metadata &management:" msgid "Metadata &management:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:50
msgid "" msgid ""
"<li><b>Manual management</b>: Calibre updates the metadata and adds collections only when a book is sent. With this option, calibre will never remove a collection.</li>\n" "<li><b>Manual management</b>: Calibre updates the metadata and adds collections only when a book is sent. With this option, calibre will never remove a collection.</li>\n"
"<li><b>Only on send</b>: Calibre updates metadata and adds/removes collections for a book only when it is sent to the device. </li>\n" "<li><b>Only on send</b>: Calibre updates metadata and adds/removes collections for a book only when it is sent to the device. </li>\n"
"<li><b>Automatic management</b>: Calibre automatically keeps metadata on the device in sync with the calibre library, on every connect</li></ul>" "<li><b>Automatic management</b>: Calibre automatically keeps metadata on the device in sync with the calibre library, on every connect</li></ul>"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:64
msgid "Here you can control how calibre will save your books when you click the Send to Device button. This setting can be overriden for individual devices by customizing the device interface plugins in Preferences->Advanced->Plugins" msgid "Here you can control how calibre will save your books when you click the Send to Device button. This setting can be overriden for individual devices by customizing the device interface plugins in Preferences->Advanced->Plugins"
msgstr "" msgstr ""
@ -13283,7 +13309,7 @@ msgid "Changing the metadata for that many books can take a while. Are you sure?
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:823 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:823
#: /home/kovid/work/calibre/src/calibre/library/database2.py:457 #: /home/kovid/work/calibre/src/calibre/library/database2.py:458
msgid "Searches" msgid "Searches"
msgstr "" msgstr ""
@ -15365,17 +15391,17 @@ msgstr ""
msgid "%(tt)sAverage rating is %(rating)3.1f" msgid "%(tt)sAverage rating is %(rating)3.1f"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3407 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3408
#, python-format #, python-format
msgid "<p>Migrating old database to ebook library in %s<br><center>" msgid "<p>Migrating old database to ebook library in %s<br><center>"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3436 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3437
#, python-format #, python-format
msgid "Copying <b>%s</b>" msgid "Copying <b>%s</b>"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3453 #: /home/kovid/work/calibre/src/calibre/library/database2.py:3454
msgid "Compacting database" msgid "Compacting database"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff