mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge from source
This commit is contained in:
commit
02cf6bb1b3
131
Changelog.yaml
131
Changelog.yaml
@ -4,6 +4,137 @@
|
||||
# for important features/bug fixes.
|
||||
# Also, each release can have new and improved recipes.
|
||||
|
||||
- version: 0.7.25
|
||||
date: 2010-10-29
|
||||
|
||||
new features:
|
||||
- title: "Add support for the SONY periodical format."
|
||||
description: "This means that news downloaded by calibre and sent to a newer SONY device (350/650/900) should appear in the Periodicals section and have the special periodicals navigation user interface"
|
||||
type: major
|
||||
|
||||
- title: "Content server: Make the new browsing interface the default. The old interface can be accessed at /old"
|
||||
|
||||
- title: "Content server: Allow running of content server as a WSGI application within another server. Add tutorial for this to the User Manual."
|
||||
|
||||
- title: "Support for the Pico Life reader, Kobo Wifi and HTC Aria"
|
||||
|
||||
- title: "Content server: Add a new --url-prefix command line option to ease the use of the server with a reverse proxy"
|
||||
|
||||
- title: "New social metadata plugin for Amazon that does not rely on AWS. Since Amazon broke AWS, it is recommended you upgrade to this version if you use metadata from Amazon"
|
||||
|
||||
- title: "Add a tweak to specify the fonts used when geenrating the default cover"
|
||||
|
||||
- title: "Add an output profile for generic Tablet devices"
|
||||
tickets: [7289]
|
||||
|
||||
- title: "SONY driver: Allow sorting of collections by arbitrary field via a new tweak."
|
||||
|
||||
- title: "Content server: Make /mobile a little prettier"
|
||||
|
||||
- title: "Add button to 'Library Check' to automatically delete spurious files and folders"
|
||||
|
||||
bug fixes:
|
||||
- title: "FB2 Input: Lots of love. Handle stylesheets and style attributes. Make parsinf malformed FB2 files more robust."
|
||||
tickets: [7219, 7230]
|
||||
|
||||
- title: "Fix auto send of news to device with multiple calibre libraries. The fix means that if you have any pending news to be sent, it will be ignored after the update. Future news downloads will once again be automatically sent to the device."
|
||||
|
||||
- title: "MOBI Output: Conversion of super/sub scripts now handles nested tags."
|
||||
tickets: [7264]
|
||||
|
||||
- title: "Conversion pipeline: Fix parsing of XML encoding declarations."
|
||||
tickets: [7328]
|
||||
|
||||
- title: "Pandigital (Kobo): Upload thumbnails to correct location"
|
||||
tickets: [7165]
|
||||
|
||||
- title: "Fix auto emailed news with non asci characters in title not being deliverd to Kindle"
|
||||
tickets: [7322]
|
||||
|
||||
- title: "Read metadata only after on import plugins have run when adding books to GUI"
|
||||
tickets: [7245]
|
||||
|
||||
- title: "Various fixes for bugs caused by non ascii temporary paths on windows with non UTF-8 filesystem encodings"
|
||||
tickets: [7288]
|
||||
|
||||
- title: "Various fixes/enhancements to SNB Output"
|
||||
|
||||
- title: "Allow Tag editor in edit metadata dialog to be used even if tags have been changed"
|
||||
tickets: [7298]
|
||||
|
||||
- title: "Fix crash on some OS X machines when Preferences->Conversion->Output is clicked"
|
||||
|
||||
- title: "MOBI indexing: Fix last entry missing sometimes"
|
||||
tickets: [6595]
|
||||
|
||||
- title: "Fix regression causing books to be deselected after sending to device"
|
||||
tickets: [7271]
|
||||
|
||||
- title: "Conversion pipeline: Fix rescaling of GIF images not working"
|
||||
tickets: [7306]
|
||||
|
||||
- title: "Update PDF metadata/conversion libraries in windows build"
|
||||
|
||||
- title: "Fix timezone bug when searching on date fields"
|
||||
tickets: [7300]
|
||||
|
||||
- title: "Fix regression that caused the viewr to crash if the main application is closed"
|
||||
tickets: [7276]
|
||||
|
||||
- title: "Fix bug causing a spurious metadata.opf file to be written at the root of the calibre library when adding books"
|
||||
|
||||
- title: "Use the same title casing algorithm in all places"
|
||||
|
||||
- title: "Fix bulk edit of dual state boolean custom columns"
|
||||
|
||||
- title: "Increase image size for comics in Kindle DX profile for better conversion of comics to PDF"
|
||||
|
||||
- title: "Fix restore db to not dies when conflicting custom columns are encountered and report conflicting columns errors. Fix exceptions when referencing invalid _index fields."
|
||||
|
||||
- title: "Fix auto merge books not respecting article sort tweak"
|
||||
tickets: [7147]
|
||||
|
||||
- title: "Linux device drivers: Fix udisks based ejecting for devices with multiple nodes"
|
||||
|
||||
- title: "Linux device mounting: Mount the drive with the lowest kernel name as main memory"
|
||||
|
||||
- title: "Fix use of numeric fields in templates"
|
||||
|
||||
- title: "EPUB Input: Handle EPUB files with multiple OPF files."
|
||||
tickets: [7229]
|
||||
|
||||
- title: "Setting EPUB metadata: Fix date format. Fix language being overwritten by und when unspecified. Fix empty ISBN identifier being created"
|
||||
|
||||
- title: "Fix cannot delete a Series listing from List view also dismiss fetch metadata dialog when no metadata found automatically"
|
||||
tickets: [7221, 7220]
|
||||
|
||||
- title: "Content server: Handle switch library in GUI gracefully"
|
||||
|
||||
- title: "calibre-server: Use cherrypy implementation of --pidfile and --daemonize"
|
||||
|
||||
new recipes:
|
||||
- title: "Ming Pao"
|
||||
author: "Eddie Lau"
|
||||
|
||||
- title: "lenta.ru"
|
||||
author: "Nikolai Kotchetkov"
|
||||
|
||||
- title: "frazpc.pl"
|
||||
author: "Tomasz Dlugosz"
|
||||
|
||||
- title: "Perfil and The Economic Collapse Blog"
|
||||
author: "Darko Miletic"
|
||||
|
||||
- title: "STNN"
|
||||
author: "Larry Chan"
|
||||
|
||||
improved recipes:
|
||||
- CubaDebate
|
||||
- El Pais
|
||||
- Fox News
|
||||
- New Scientist
|
||||
- The Economic Times of India
|
||||
|
||||
- version: 0.7.24
|
||||
date: 2010-10-17
|
||||
|
||||
|
3385
resources/content_server/monocle.js
Normal file
3385
resources/content_server/monocle.js
Normal file
File diff suppressed because it is too large
Load Diff
24
resources/recipes/taggeschau_de.recipe
Normal file
24
resources/recipes/taggeschau_de.recipe
Normal file
@ -0,0 +1,24 @@
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Tagesschau(BasicNewsRecipe):
|
||||
title = 'Tagesschau'
|
||||
description = 'Nachrichten der ARD'
|
||||
publisher = 'ARD'
|
||||
language = 'de_DE'
|
||||
|
||||
__author__ = 'Florian Andreas Pfaff'
|
||||
oldest_article = 7
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
|
||||
feeds = [('Tagesschau', 'http://www.tagesschau.de/xml/rss2')]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['linksZumThema schmal','teaserBox','boxMoreLinks','directLinks','teaserBox boxtext','fPlayer','zitatBox breit flashaudio']}),
|
||||
dict(name='div',
|
||||
attrs={'id':['socialBookmarks','seitenanfang']}),
|
||||
dict(name='ul',
|
||||
attrs={'class':['directLinks','directLinks weltatlas']}),
|
||||
dict(name='strong', attrs={'class':['boxTitle inv','inv']})
|
||||
]
|
||||
keep_only_tags = [dict(name='div', attrs={'id':'centerCol'})]
|
@ -20,40 +20,40 @@
|
||||
<title>
|
||||
<xsl:value-of select="fb:description/fb:title-info/fb:book-title" />
|
||||
</title>
|
||||
<style type="text/x-oeb1-css">
|
||||
A { color : #0002CC }
|
||||
A:HOVER { color : #BF0000 }
|
||||
BODY { background-color : #FEFEFE; color : #000000; font-family :
|
||||
Verdana, Geneva, Arial, Helvetica, sans-serif; text-align : justify
|
||||
}
|
||||
H1{ font-size : 160%; font-style : normal; font-weight : bold;
|
||||
text-align : left; border : 1px solid Black; background-color :
|
||||
#E7E7E7; margin-left : 0px; page-break-before : always; }
|
||||
H2{
|
||||
font-size : 130%; font-style : normal; font-weight : bold;
|
||||
text-align : left; background-color : #EEEEEE; border : 1px solid
|
||||
Gray; page-break-before : always; }
|
||||
H3{ font-size : 110%; font-style
|
||||
: normal; font-weight : bold; text-align : left; background-color :
|
||||
#F1F1F1; border : 1px solid Silver;}
|
||||
H4{ font-size : 100%;
|
||||
font-style : normal; font-weight : bold; text-align : left; border
|
||||
: 1px solid Gray; background-color : #F4F4F4;}
|
||||
H5{ font-size : 100%;
|
||||
font-style : italic; font-weight : bold; text-align : left; border
|
||||
: 1px solid Gray; background-color : #F4F4F4;}
|
||||
H6{ font-size : 100%;
|
||||
font-style : italic; font-weight : normal; text-align : left;
|
||||
border : 1px solid Gray; background-color : #F4F4F4;}
|
||||
SMALL{
|
||||
font-size : 80% }
|
||||
BLOCKQUOTE{ margin-left :4em; margin-top:1em;
|
||||
margin-right:0.2em;}
|
||||
HR{ color : Black }
|
||||
DIV{font-family : "Times New Roman", Times, serif; text-align : justify}
|
||||
UL{margin-left: 0}
|
||||
.epigraph{width:50%; margin-left : 35%;}
|
||||
<style type="text/css">
|
||||
a { color : #0002CC }
|
||||
|
||||
a:hover { color : #BF0000 }
|
||||
|
||||
body { background-color : #FEFEFE; color : #000000; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; text-align : justify }
|
||||
|
||||
h1{ font-size : 160%; font-style : normal; font-weight : bold; text-align : left; border : 1px solid Black; background-color : #E7E7E7; margin-left : 0px; page-break-before : always; }
|
||||
|
||||
h2{ font-size : 130%; font-style : normal; font-weight : bold; text-align : left; background-color : #EEEEEE; border : 1px solid Gray; page-break-before : always; }
|
||||
|
||||
h3{ font-size : 110%; font-style : normal; font-weight : bold; text-align : left; background-color : #F1F1F1; border : 1px solid Silver;}
|
||||
|
||||
h4{ font-size : 100%; font-style : normal; font-weight : bold; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
|
||||
|
||||
h5{ font-size : 100%; font-style : italic; font-weight : bold; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
|
||||
|
||||
h6{ font-size : 100%; font-style : italic; font-weight : normal; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
|
||||
|
||||
small { font-size : 80% }
|
||||
|
||||
blockquote { margin-left :4em; margin-top:1em; margin-right:0.2em;}
|
||||
|
||||
hr { color : Black }
|
||||
|
||||
div {font-family : "Times New Roman", Times, serif; text-align : justify}
|
||||
|
||||
ul {margin-left: 0}
|
||||
|
||||
.epigraph{width:50%; margin-left : 35%;}
|
||||
|
||||
div.paragraph { text-align: justify; text-indent: 2em; }
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="inline-styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<xsl:for-each select="fb:description/fb:title-info/fb:annotation">
|
||||
@ -143,12 +143,13 @@
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:if test="$section_has_title = 'None'">
|
||||
<a name="TOC_{generate-id()}" />
|
||||
<xsl:if test="@id">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
<div id="TOC_{generate-id()}">
|
||||
<xsl:if test="@id">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
</div>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="section_toc_id" select="$section_has_title" />
|
||||
@ -167,13 +168,13 @@
|
||||
</xsl:if>
|
||||
<xsl:if test="$section_toc_id != 'None'">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="name">TOC_<xsl:value-of select="$section_toc_id"/></xsl:attribute>
|
||||
<xsl:attribute name="id">TOC_<xsl:value-of select="$section_toc_id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
<a name="TOC_{generate-id()}"></a>
|
||||
<xsl:if test="@id">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates/>
|
||||
@ -183,7 +184,7 @@
|
||||
<xsl:element name="h6">
|
||||
<xsl:if test="@id">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates/>
|
||||
@ -214,11 +215,18 @@
|
||||
</xsl:template>
|
||||
<!-- p -->
|
||||
<xsl:template match="fb:p">
|
||||
<div align="justify"><xsl:if test="@id">
|
||||
<xsl:element name="div">
|
||||
<xsl:attribute name="class">paragraph</xsl:attribute>
|
||||
<xsl:if test="@id">
|
||||
<xsl:element name="a">
|
||||
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:if>    <xsl:apply-templates/></div>
|
||||
</xsl:if>
|
||||
<xsl:if test="@style">
|
||||
<xsl:attribute name="style"><xsl:value-of select="@style"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:element>
|
||||
</xsl:template>
|
||||
<!-- strong -->
|
||||
<xsl:template match="fb:strong">
|
||||
|
@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en'
|
||||
|
||||
__all__ = [
|
||||
'pot', 'translations', 'get_translations', 'iso639',
|
||||
'build', 'build_pdf2xml',
|
||||
'build', 'build_pdf2xml', 'server',
|
||||
'gui',
|
||||
'develop', 'install',
|
||||
'resources',
|
||||
@ -35,6 +35,9 @@ from setup.extensions import Build, BuildPDF2XML
|
||||
build = Build()
|
||||
build_pdf2xml = BuildPDF2XML()
|
||||
|
||||
from setup.server import Server
|
||||
server = Server()
|
||||
|
||||
from setup.install import Develop, Install, Sdist
|
||||
develop = Develop()
|
||||
install = Install()
|
||||
|
48
setup/server.py
Normal file
48
setup/server.py
Normal file
@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python
|
||||
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import subprocess, tempfile, os, time
|
||||
|
||||
from setup import Command
|
||||
|
||||
class Server(Command):
|
||||
|
||||
description = 'Run the calibre server in development mode conveniently'
|
||||
|
||||
MONOCLE_PATH = '../monocle'
|
||||
|
||||
def rebuild_monocole(self):
|
||||
subprocess.check_call(['sprocketize', '-C', self.MONOCLE_PATH,
|
||||
'-I', 'src', 'src/monocle.js'],
|
||||
stdout=open('resources/content_server/monocle.js', 'wb'))
|
||||
|
||||
def launch_server(self, log):
|
||||
self.rebuild_monocole()
|
||||
p = subprocess.Popen(['calibre-server', '--develop'],
|
||||
stderr=subprocess.STDOUT, stdout=log)
|
||||
return p
|
||||
|
||||
def run(self, opts):
|
||||
tdir = tempfile.gettempdir()
|
||||
logf = os.path.join(tdir, 'calibre-server.log')
|
||||
log = open(logf, 'ab')
|
||||
print 'Server log available at:', logf
|
||||
|
||||
while True:
|
||||
print 'Starting server...'
|
||||
p = self.launch_server(log)
|
||||
try:
|
||||
raw_input('Press Enter to kill/restart server. Ctrl+C to quit: ')
|
||||
except:
|
||||
break
|
||||
else:
|
||||
while p.returncode is None:
|
||||
p.terminate()
|
||||
time.sleep(0.1)
|
||||
p.kill()
|
||||
print
|
||||
|
@ -2,7 +2,7 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
__appname__ = 'calibre'
|
||||
__version__ = '0.7.24'
|
||||
__version__ = '0.7.25'
|
||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||
|
||||
import re
|
||||
|
@ -30,9 +30,9 @@ def detect(aBuf):
|
||||
|
||||
# Added by Kovid
|
||||
ENCODING_PATS = [
|
||||
re.compile(r'<\?[^<>]+encoding=[\'"](.*?)[\'"][^<>]*>',
|
||||
re.compile(r'<\?[^<>]+encoding\s*=\s*[\'"](.*?)[\'"][^<>]*>',
|
||||
re.IGNORECASE),
|
||||
re.compile(r'''<meta\s+?[^<>]+?content=['"][^'"]*?charset=([-a-z0-9]+)[^'"]*?['"][^<>]*>''',
|
||||
re.compile(r'''<meta\s+?[^<>]+?content\s*=\s*['"][^'"]*?charset=([-a-z0-9]+)[^'"]*?['"][^<>]*>''',
|
||||
re.IGNORECASE)
|
||||
]
|
||||
ENTITY_PATTERN = re.compile(r'&(\S+?);')
|
||||
|
@ -40,14 +40,35 @@ class FB2Input(InputFormatPlugin):
|
||||
accelerators):
|
||||
from calibre.ebooks.metadata.opf2 import OPFCreator
|
||||
from calibre.ebooks.metadata.meta import get_metadata
|
||||
from calibre.ebooks.oeb.base import XLINK_NS
|
||||
from calibre.ebooks.oeb.base import XLINK_NS, XHTML_NS, RECOVER_PARSER
|
||||
NAMESPACES = {'f':FB2NS, 'l':XLINK_NS}
|
||||
log.debug('Parsing XML...')
|
||||
raw = stream.read()
|
||||
raw = stream.read().replace('\0', '')
|
||||
try:
|
||||
doc = etree.fromstring(raw.replace('\0', ''))
|
||||
doc = etree.fromstring(raw)
|
||||
except etree.XMLSyntaxError:
|
||||
doc = etree.fromstring(raw.replace('& ', '&'))
|
||||
try:
|
||||
doc = etree.fromstring(raw, parser=RECOVER_PARSER)
|
||||
except:
|
||||
doc = etree.fromstring(raw.replace('& ', '&'),
|
||||
parser=RECOVER_PARSER)
|
||||
stylesheets = doc.xpath('//*[local-name() = "stylesheet" and @type="text/css"]')
|
||||
css = ''
|
||||
for s in stylesheets:
|
||||
css += etree.tostring(s, encoding=unicode, method='text',
|
||||
with_tail=False) + '\n\n'
|
||||
if css:
|
||||
import cssutils, logging
|
||||
parser = cssutils.CSSParser(fetcher=None,
|
||||
log=logging.getLogger('calibre.css'))
|
||||
|
||||
XHTML_CSS_NAMESPACE = '@namespace "%s";\n' % XHTML_NS
|
||||
text = XHTML_CSS_NAMESPACE + css
|
||||
log.debug('Parsing stylesheet...')
|
||||
stylesheet = parser.parseString(text)
|
||||
stylesheet.namespaces['h'] = XHTML_NS
|
||||
css = unicode(stylesheet.cssText).replace('h|style', 'h|span')
|
||||
css = re.sub(r'name\s*=\s*', 'class=', css)
|
||||
self.extract_embedded_content(doc)
|
||||
log.debug('Converting XML to HTML...')
|
||||
ss = open(P('templates/fb2.xsl'), 'rb').read()
|
||||
@ -63,7 +84,9 @@ class FB2Input(InputFormatPlugin):
|
||||
for img in result.xpath('//img[@src]'):
|
||||
src = img.get('src')
|
||||
img.set('src', self.binary_map.get(src, src))
|
||||
open('index.xhtml', 'wb').write(transform.tostring(result))
|
||||
index = transform.tostring(result)
|
||||
open('index.xhtml', 'wb').write(index)
|
||||
open('inline-styles.css', 'wb').write(css)
|
||||
stream.seek(0)
|
||||
mi = get_metadata(stream, 'fb2')
|
||||
if not mi.title:
|
||||
|
@ -22,7 +22,8 @@ def get_metadata(stream):
|
||||
'xlink':XLINK_NS})
|
||||
tostring = lambda x : etree.tostring(x, method='text',
|
||||
encoding=unicode).strip()
|
||||
root = etree.fromstring(stream.read())
|
||||
parser = etree.XMLParser(recover=True, no_network=True)
|
||||
root = etree.fromstring(stream.read(), parser=parser)
|
||||
authors, author_sort = [], None
|
||||
for au in XPath('//fb2:author')(root):
|
||||
fname = lname = author = None
|
||||
|
@ -27,6 +27,8 @@ TABLE_TAGS = set(['table', 'tr', 'td', 'th', 'caption'])
|
||||
SPECIAL_TAGS = set(['hr', 'br'])
|
||||
CONTENT_TAGS = set(['img', 'hr', 'br'])
|
||||
|
||||
NOT_VTAGS = HEADER_TAGS | NESTABLE_TAGS | TABLE_TAGS | SPECIAL_TAGS | \
|
||||
CONTENT_TAGS
|
||||
PAGE_BREAKS = set(['always', 'left', 'right'])
|
||||
|
||||
COLLAPSE = re.compile(r'[ \t\r\n\v]+')
|
||||
@ -57,8 +59,6 @@ class FormatState(object):
|
||||
self.indent = 0.
|
||||
self.fsize = 3
|
||||
self.ids = set()
|
||||
self.valign = 'baseline'
|
||||
self.nest = False
|
||||
self.italic = False
|
||||
self.bold = False
|
||||
self.strikethrough = False
|
||||
@ -76,7 +76,6 @@ class FormatState(object):
|
||||
and self.italic == other.italic \
|
||||
and self.bold == other.bold \
|
||||
and self.href == other.href \
|
||||
and self.valign == other.valign \
|
||||
and self.preserve == other.preserve \
|
||||
and self.family == other.family \
|
||||
and self.bgcolor == other.bgcolor \
|
||||
@ -224,7 +223,6 @@ class MobiMLizer(object):
|
||||
return
|
||||
if not pstate or istate != pstate:
|
||||
inline = para
|
||||
valign = istate.valign
|
||||
fsize = istate.fsize
|
||||
href = istate.href
|
||||
if not href:
|
||||
@ -234,19 +232,8 @@ class MobiMLizer(object):
|
||||
else:
|
||||
inline = etree.SubElement(inline, XHTML('a'), href=href)
|
||||
bstate.anchor = inline
|
||||
if valign == 'super':
|
||||
parent = inline
|
||||
if istate.nest and bstate.inline is not None:
|
||||
parent = bstate.inline
|
||||
istate.nest = False
|
||||
inline = etree.SubElement(parent, XHTML('sup'))
|
||||
elif valign == 'sub':
|
||||
parent = inline
|
||||
if istate.nest and bstate.inline is not None:
|
||||
parent = bstate.inline
|
||||
istate.nest = False
|
||||
inline = etree.SubElement(parent, XHTML('sub'))
|
||||
elif fsize != 3:
|
||||
|
||||
if fsize != 3:
|
||||
inline = etree.SubElement(inline, XHTML('font'),
|
||||
size=str(fsize))
|
||||
if istate.family == 'monospace':
|
||||
@ -279,7 +266,8 @@ class MobiMLizer(object):
|
||||
else:
|
||||
inline.append(item)
|
||||
|
||||
def mobimlize_elem(self, elem, stylizer, bstate, istates):
|
||||
def mobimlize_elem(self, elem, stylizer, bstate, istates,
|
||||
ignore_valign=False):
|
||||
if not isinstance(elem.tag, basestring) \
|
||||
or namespace(elem.tag) != XHTML_NS:
|
||||
return
|
||||
@ -351,15 +339,6 @@ class MobiMLizer(object):
|
||||
istate.family = 'sans-serif'
|
||||
else:
|
||||
istate.family = 'serif'
|
||||
valign = style['vertical-align']
|
||||
if valign in ('super', 'text-top') or asfloat(valign) > 0:
|
||||
istate.nest = istate.valign in ('sub', 'super')
|
||||
istate.valign = 'super'
|
||||
elif valign == 'sub' or asfloat(valign) < 0:
|
||||
istate.nest = istate.valign in ('sub', 'super')
|
||||
istate.valign = 'sub'
|
||||
else:
|
||||
istate.valign = 'baseline'
|
||||
if 'id' in elem.attrib:
|
||||
istate.ids.add(elem.attrib['id'])
|
||||
if 'name' in elem.attrib:
|
||||
@ -407,6 +386,30 @@ class MobiMLizer(object):
|
||||
text = None
|
||||
else:
|
||||
text = COLLAPSE.sub(' ', elem.text)
|
||||
valign = style['vertical-align']
|
||||
not_baseline = valign in ('super', 'sub', 'text-top',
|
||||
'text-bottom')
|
||||
vtag = 'sup' if valign in ('super', 'text-top') else 'sub'
|
||||
if not_baseline and not ignore_valign and tag not in NOT_VTAGS and not isblock:
|
||||
nroot = etree.Element(XHTML('html'), nsmap=MOBI_NSMAP)
|
||||
vbstate = BlockState(etree.SubElement(nroot, XHTML('body')))
|
||||
vbstate.para = etree.SubElement(vbstate.body, XHTML('p'))
|
||||
self.mobimlize_elem(elem, stylizer, vbstate, istates,
|
||||
ignore_valign=True)
|
||||
if len(istates) > 0:
|
||||
istates.pop()
|
||||
if len(istates) == 0:
|
||||
istates.append(FormatState())
|
||||
at_start = bstate.para is None
|
||||
if at_start:
|
||||
self.mobimlize_content('span', '', bstate, istates)
|
||||
parent = bstate.para if bstate.inline is None else bstate.inline
|
||||
if parent is not None:
|
||||
vtag = etree.SubElement(parent, XHTML(vtag))
|
||||
for child in vbstate.para:
|
||||
vtag.append(child)
|
||||
return
|
||||
|
||||
if text or tag in CONTENT_TAGS or tag in NESTABLE_TAGS:
|
||||
self.mobimlize_content(tag, text, bstate, istates)
|
||||
for child in elem:
|
||||
@ -421,6 +424,8 @@ class MobiMLizer(object):
|
||||
tail = COLLAPSE.sub(' ', child.tail)
|
||||
if tail:
|
||||
self.mobimlize_content(tag, tail, bstate, istates)
|
||||
|
||||
|
||||
if bstate.content and style['page-break-after'] in PAGE_BREAKS:
|
||||
bstate.pbreak = True
|
||||
if isblock:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,9 +4,9 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre 0.7.24\n"
|
||||
"POT-Creation-Date: 2010-10-27 18:05+MDT\n"
|
||||
"PO-Revision-Date: 2010-10-27 18:05+MDT\n"
|
||||
"Project-Id-Version: calibre 0.7.25\n"
|
||||
"POT-Creation-Date: 2010-10-29 12:53+MDT\n"
|
||||
"PO-Revision-Date: 2010-10-29 12:53+MDT\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: LANGUAGE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -36,8 +36,8 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894
|
||||
@ -52,7 +52,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64
|
||||
@ -143,7 +143,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:224
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78
|
||||
@ -249,163 +249,163 @@ msgstr ""
|
||||
msgid "Set metadata from %s files"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:706
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
msgid "Look and Feel"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744
|
||||
msgid "Interface"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714
|
||||
msgid "Adjust the look and feel of the calibre interface to suit your tastes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
msgid "Behavior"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726
|
||||
msgid "Change the way calibre behaves"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202
|
||||
msgid "Add your own columns"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737
|
||||
msgid "Add/remove your own columns to the calibre book list"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
msgid "Customize the toolbar"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748
|
||||
msgid "Customize the toolbars and context menus, changing which actions are available in each"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
msgid "Input Options"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778
|
||||
msgid "Conversion"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760
|
||||
msgid "Set conversion options specific to each input format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
msgid "Common Options"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771
|
||||
msgid "Set conversion options common to all formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
msgid "Output Options"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782
|
||||
msgid "Set conversion options specific to each output format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
msgid "Adding books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825
|
||||
msgid "Import/Export"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793
|
||||
msgid "Control how calibre reads metadata from files when adding books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
msgid "Saving books to disk"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805
|
||||
msgid "Control how calibre exports files from its database to disk when using Save to disk"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
msgid "Sending books to devices"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817
|
||||
msgid "Control how calibre transfers files to your ebook reader"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
msgid "Metadata plugboards"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829
|
||||
msgid "Change metadata fields before saving/sending"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
msgid "Sharing books by email"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848
|
||||
msgid "Sharing"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840
|
||||
msgid "Setup sharing of books via email. Can be used for automatic sending of downloaded news to your devices"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
msgid "Sharing over the net"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852
|
||||
msgid "Setup the calibre Content Server which will give you access to your calibre library from anywhere, on any device, over the internet"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
msgid "Plugins"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865
|
||||
msgid "Add/remove/customize various bits of calibre functionality"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
msgid "Tweaks"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877
|
||||
msgid "Fine tune how calibre behaves in various contexts"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
msgid "Miscellaneous"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888
|
||||
msgid "Miscellaneous advanced configuration"
|
||||
msgstr ""
|
||||
|
||||
@ -538,7 +538,7 @@ msgstr ""
|
||||
msgid "This profile is intended for the Amazon Kindle DX."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664
|
||||
msgid "This profile is intended for the Sanda Bambook."
|
||||
msgstr ""
|
||||
|
||||
@ -913,11 +913,11 @@ msgstr ""
|
||||
msgid "Communicate with the Pandigital Novel"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130
|
||||
msgid "Communicate with the VelocityMicro"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148
|
||||
msgid "Communicate with the GM2000"
|
||||
msgstr ""
|
||||
|
||||
@ -974,11 +974,15 @@ msgstr ""
|
||||
msgid "Communicate with the Newsmy reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47
|
||||
msgid "Communicate with the Pico reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57
|
||||
msgid "Communicate with the iPapyrus reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68
|
||||
msgid "Communicate with the Sovos reader."
|
||||
msgstr ""
|
||||
|
||||
@ -1542,7 +1546,7 @@ msgid "When using an SVG cover, this option will cause the cover to scale to cov
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:205
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
@ -1865,7 +1869,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
@ -1909,7 +1913,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:608
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
@ -2272,7 +2276,7 @@ msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616
|
||||
msgid "Rating"
|
||||
msgstr ""
|
||||
|
||||
@ -2538,27 +2542,39 @@ msgid ""
|
||||
"%s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:32
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23
|
||||
msgid "Specify the character encoding of the output document. The default is utf-8."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38
|
||||
msgid "The maximum number of characters per line. This splits on the first space before the specified value. If no space is found the line will be broken at the space after and will exceed the specified value. Also, there is a minimum of 25 characters. Use 0 to disable line splitting."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36
|
||||
msgid "Specify whether or not to insert an empty line between two paragraphs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40
|
||||
msgid "Specify whether or not to insert two space characters to indent the first line of each paragraph."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44
|
||||
msgid "Specify whether or not to hide the chapter title for each chapter. Useful for image-only output (eg. comics)."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122
|
||||
msgid "Start Page"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:136
|
||||
msgid "Cover Pages"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:149
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150
|
||||
msgid " (Preface)"
|
||||
msgstr ""
|
||||
|
||||
@ -2699,7 +2715,7 @@ msgid "Disable UI animations"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:487
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494
|
||||
msgid "Copied"
|
||||
msgstr ""
|
||||
|
||||
@ -2711,7 +2727,7 @@ msgstr ""
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467
|
||||
msgid "Choose Files"
|
||||
msgstr ""
|
||||
|
||||
@ -3531,7 +3547,7 @@ msgid "Click the show details button to see which ones."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:613
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623
|
||||
msgid "Show book details"
|
||||
msgstr ""
|
||||
|
||||
@ -3948,7 +3964,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51
|
||||
@ -4777,6 +4793,18 @@ msgstr ""
|
||||
msgid "SNB Output"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40
|
||||
msgid "Hide chapter name"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41
|
||||
msgid "Insert space before the first line for each paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
||||
msgid "Insert empty line between paragraphs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
|
||||
msgid ""
|
||||
"Structure\n"
|
||||
@ -5154,7 +5182,7 @@ msgid "Send and delete from library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492
|
||||
msgid "Send specific format"
|
||||
msgid "Send specific format to"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528
|
||||
@ -5465,7 +5493,7 @@ msgid "No location selected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:628
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635
|
||||
msgid "Bad location"
|
||||
msgstr ""
|
||||
|
||||
@ -5545,7 +5573,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
@ -6091,71 +6119,71 @@ msgid "This ISBN number is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
|
||||
msgid "Cannot use tag editor"
|
||||
msgid "Tags changed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
|
||||
msgid "The tags editor cannot be used if you have modified the tags"
|
||||
msgid "You have changed the tags. In order to use the tags editor, you must either discard or apply these changes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:632
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639
|
||||
msgid "Downloading cover..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:649
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:655
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667
|
||||
msgid "Cannot fetch cover"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668
|
||||
msgid "<b>Could not fetch cover.</b><br/>"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653
|
||||
msgid "The download timed out."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657
|
||||
msgid "Could not find cover for this book. Try specifying the ISBN first."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
msgid "For the error message from each cover source, click Show details below."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
|
||||
msgid "Bad cover"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:670
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677
|
||||
msgid "The cover is not a valid picture"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710
|
||||
msgid "There were errors"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:704
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711
|
||||
msgid "There were errors downloading social metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742
|
||||
msgid "Cannot fetch metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:736
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743
|
||||
msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833
|
||||
msgid "Permission denied"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834
|
||||
msgid "Could not open %s. Is it being used by another program?"
|
||||
msgstr ""
|
||||
|
||||
@ -7385,7 +7413,7 @@ msgid "Do not check for updates"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643
|
||||
msgid "Calibre Library"
|
||||
msgstr ""
|
||||
|
||||
@ -7535,7 +7563,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:612
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
@ -9301,48 +9329,48 @@ msgstr ""
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:378
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385
|
||||
msgid "If you use the WordPlayer e-book app on your Android phone, you can access your calibre book collection directly on the device. To do this you have to turn on the content server."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:382
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389
|
||||
msgid "Remember to leave calibre running as the server only runs as long as calibre is running."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:384
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391
|
||||
msgid "You have to add the URL http://myhostname:8080 as your calibre library in WordPlayer. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:461
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468
|
||||
msgid "Moving library..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:477
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:478
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485
|
||||
msgid "Failed to move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539
|
||||
msgid "Invalid database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540
|
||||
msgid "<p>An invalid library already exists at %s, delete it before trying to move the existing library.<br>Error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551
|
||||
msgid "Could not move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622
|
||||
msgid "Select location for books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:629
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
msgid "You must choose an empty folder for the calibre library. %s is not empty."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710
|
||||
msgid "welcome wizard"
|
||||
msgstr ""
|
||||
|
||||
@ -10402,12 +10430,16 @@ msgstr ""
|
||||
msgid "Group items in categories such as author/tags by first letter when there are more than this number of items. Default: %default. Set to a large number to disable grouping."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:131
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48
|
||||
msgid "Prefix to prepend to all URLs. Useful for reverseproxying to this server from Apache/nginx/etc."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149
|
||||
msgid "Password to access your calibre library. Username is "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:399
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401
|
||||
msgid "Loading, please wait"
|
||||
msgstr ""
|
||||
|
||||
@ -10452,74 +10484,74 @@ msgstr ""
|
||||
msgid "Sort by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:307
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:505
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Newest"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513
|
||||
msgid "All books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:340
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
||||
msgid "Browse books by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:345
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346
|
||||
msgid "Choose a category to browse by:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:418
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421
|
||||
msgid "Browsing by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:419
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:535
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543
|
||||
msgid "in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546
|
||||
msgid "Books in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:588
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597
|
||||
msgid "Other formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:595
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604
|
||||
msgid "Read %s in the %s format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:600
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609
|
||||
msgid "Get"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624
|
||||
msgid "Permalink"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
||||
msgid "A permanent link to this book"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636
|
||||
msgid "This book has been deleted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:707
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720
|
||||
msgid "in search"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:709
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722
|
||||
msgid "Matching books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:39
|
||||
msgid ""
|
||||
"[options]\n"
|
||||
"\n"
|
||||
@ -10532,15 +10564,15 @@ msgid ""
|
||||
"The OPDS interface is advertised via BonJour automatically.\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:41
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:52
|
||||
msgid "Path to the library folder to serve with the content server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:54
|
||||
msgid "Write process PID to the specified file"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:58
|
||||
msgid "Specifies a restriction to be used for this invocation. This option overrides any per-library settings specified in the GUI"
|
||||
msgstr ""
|
||||
|
||||
@ -10862,91 +10894,91 @@ msgstr ""
|
||||
msgid "Unknown News Source"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614
|
||||
msgid "The \"%s\" recipe needs a username and password."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713
|
||||
msgid "Download finished"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715
|
||||
msgid "Failed to download the following articles:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721
|
||||
msgid "Failed to download parts of the following articles:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723
|
||||
msgid " from "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:726
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725
|
||||
msgid "\tFailed links:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814
|
||||
msgid "Could not fetch article. Run with -vv to see the reason"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835
|
||||
msgid "Fetching feeds..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840
|
||||
msgid "Got feeds from index page"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849
|
||||
msgid "Trying to download cover..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851
|
||||
msgid "Generating masthead..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:933
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932
|
||||
msgid "Starting download [%d thread(s)]..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:949
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948
|
||||
msgid "Feeds downloaded to %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:958
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957
|
||||
msgid "Could not download cover: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:965
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964
|
||||
msgid "Downloading cover from %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009
|
||||
msgid "Masthead image downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1178
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177
|
||||
msgid "Untitled Article"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248
|
||||
msgid "Article downloaded: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259
|
||||
msgid "Article download failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1277
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276
|
||||
msgid "Fetching feed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1424
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423
|
||||
msgid "Failed to log in, check your username and password for the calibre Periodicals service."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438
|
||||
msgid "You do not have permission to download this issue. Either your subscription has expired or you have exceeded the maximum allowed downloads for today."
|
||||
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
Loading…
x
Reference in New Issue
Block a user