Sync to trunk.

This commit is contained in:
John Schember 2009-10-30 19:21:54 -04:00
commit b79be74761
52 changed files with 4464 additions and 2925 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

View File

@ -12,7 +12,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
class DailyTelegraph(BasicNewsRecipe):
title = u'Daily Telegraph'
__author__ = u'AprilHare'
language = 'en'
language = 'en_AU'
description = u'News from down under'
oldest_article = 2
@ -45,4 +45,4 @@ class DailyTelegraph(BasicNewsRecipe):
(u'NRL', u'http://feeds.news.com.au/public/rss/2.0/dtele_sports_nrl_345.xml'),
(u'Rugby Union', u'http://feeds.news.com.au/public/rss/2.0/dtele_sports_rugby_union_342.xml'),
(u'Soccer', u'http://feeds.news.com.au/public/rss/2.0/dtele_sports_soccer_344.xml')
]
]

View File

@ -87,4 +87,6 @@ class Economist(BasicNewsRecipe):
feeds[key].append(article)
ans = [(key, feeds[key]) for key in ans if feeds.has_key(key)]
if not ans:
raise Exception('Could not find any articles. Has your subscription expired?')
return ans

View File

@ -10,57 +10,116 @@ from calibre.web.feeds.news import BasicNewsRecipe
class ElUniversal(BasicNewsRecipe):
title = 'El Universal'
__author__ = 'Darko Miletic'
__author__ = 'Darko Miletic and Sujata Raman'
description = 'News from Mexico'
oldest_article = 1
max_articles_per_feed = 100
publisher = 'El Universal'
category = 'news, politics, Mexico'
category = 'news, politics, Mexico'
no_stylesheets = True
use_embedded_content = False
encoding = 'cp1252'
remove_javascript = True
language = 'es'
html2lrf_options = [
'--comment', description
, '--category', category
, '--publisher', publisher
, '--ignore-tables'
]
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True'
extra_css = '''
body{font-family:Arial,Helvetica,sans-serif; font-size:x-small;}
.geoGris30{font-family:Georgia,"Times New Roman",Times,serif; font-size:large; color:#003366; font-weight:bold;}
.arnegro16{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:small;}
.tbazull2{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; color:#336699; font-size:xx-small;}
.tbgrisf11{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; color: #666666; font-size:xx-small;}
.verrojo13{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; color: #CC0033; font-size:xx-small;}
.trnegro13{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; font-size:xx-small;}
.txt-fotogaleria{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; font-size:xx-small;}
'''
keep_only_tags = [ dict(name='table', attrs={'width':"633"}),dict(name='table', attrs={'width':"629"}),]
remove_tags = [dict(name='link')]
feeds = [
remove_tags = [
dict(name='table', attrs={'bgcolor':"#f5f5f5"}),
dict(name='td', attrs={'bgcolor':"#f7f8f9"}),
dict(name='td', attrs={'bgcolor':"#f5f5f5"}),
dict(name='table', attrs={'width':"302"}),
dict(name='table', attrs={'width':"214"}),
dict(name='table', attrs={'width':"112"}),
dict(name='table', attrs={'width':"980"}),
dict(name='td', attrs={'height':"1"}),
dict(name='td', attrs={'height':"4"}),
dict(name='td', attrs={'height':"20"}),
dict(name='td', attrs={'height':"10"}),
dict(name='td', attrs={'class':["trrojo11","trbris11","trrojo12","arrojo12s","tbazul13"]}),
dict(name='div', attrs={'id':["mapg","ver_off_todosloscom","todosloscom"]}),
dict(name='span', attrs={'class':["trazul18b","trrojo11","trnaranja11","trbris11","georojo18b","geogris18"]}),
dict(name='span', attrs={'class':["detalles-opinion"]}),
dict(name='a', attrs={'class':["arnaranja12b","trbris11","arazul12rel","trrojo10"]}),
dict(name='img', src = "/img/icono_imprimir.gif"),
dict(name='img', src = "/img/icono_enviar_mail.gif"),
dict(name='img', src = "/img/icono_fuente_g.gif"),
dict(name='img', src = "/img/icono_fuente_m.gif"),
dict(name='img', src = "/img/icono_fuente_c.gif"),
dict(name='img', src = "/img/icono_compartir.gif"),
dict(name='img', src = "/img/icono_enviar_coment.gif"),
dict(name='img', src = "http://www.eluniversal.com.mx/n_img/bot-notasrel.gif"),
dict(name='img', src = "http://www.eluniversal.com.mx/n_img/fr.gif"),
dict(name='img', src = "/img/espiral2.gif"),
dict(name='img', src = "http://www.eluniversal.com.mx/n_img/b"),
dict(name='img', src = "/img/icono_enviar_coment.gifot-notasrel.gif"),
dict(name='img', src = "/n_img/icono_tipo3.gif"),
dict(name='img', src = "/n_img/icono_tipo2.gif"),
dict(name='img', src = "/n_img/icono_print.gif"),
dict(name='img', src = "/n_img/icono_mail2.gif"),
dict(name='img', src = "/n_img/im-comentarios-2a.gif"),
dict(name='img', src = "/n_img/im-comentarios-1a.gif"),
dict(name='img', src = "/img/icono_coment.gif"),
dict(name='img', src = "http://www.eluniversal.com.mx/n_img/bot-sitiosrel.gif"),
dict(name='img', src = "/n_img/icono_tipomenos.gif"),
dict(name='img', src = "/img/futbol/19.jpg"),
dict(name='img', alt = "Facebook"),
dict(name='img', alt = "Twitter"),
dict(name='img', alt = "Google"),
dict(name='img', alt = "LinkedIn"),
dict(name='img', alt = "Viadeo"),
dict(name='img', alt = "Digg"),
dict(name='img', alt = "Delicious"),
dict(name='img', alt = "Meneame"),
dict(name='img', alt = "Yahoo"),
dict(name='img', alt = "Technorati"),
dict(name='a',text =["Compartir","Facebook","Twitter","Google","LinkedIn","Viadeo","Digg","Delicious","Meneame","Yahoo","Technorati"]),
dict(name='select'),
dict(name='a', attrs={'class':"tbgriscompartir"}),
]
feeds = [
(u'Minuto por Minuto', u'http://www.eluniversal.com.mx/rss/universalmxm.xml' )
,(u'Mundo' , u'http://www.eluniversal.com.mx/rss/mundo.xml' )
,(u'Mexico' , u'http://www.eluniversal.com.mx/rss/mexico.xml' )
,(u'Estados' , u'http://www.eluniversal.com.mx/rss/estados.xml' )
,(u'Finanzas' , u'http://www.eluniversal.com.mx/rss/finanzas.xml' )
,(u'Deportes' , u'http://www.eluniversal.com.mx/rss/deportes.xml' )
(u'Deportes' , u'http://www.eluniversal.com.mx/rss/deportes.xml' )
,(u'Espectaculos' , u'http://www.eluniversal.com.mx/rss/espectaculos.xml' )
,(u'Cultura' , u'http://www.eluniversal.com.mx/rss/cultura.xml' )
,(u'Ciencia' , u'http://www.eluniversal.com.mx/rss/ciencia.xml' )
,(u'Computacion' , u'http://www.eluniversal.com.mx/rss/computo.xml' )
,(u'Sociedad' , u'http://www.eluniversal.com.mx/rss/sociedad.xml' )
]
def print_version(self, url):
return url.replace('/notas/','/notas/vi_')
# def print_version(self, url):
# return url.replace('/notas/','/notas/vi_')
def preprocess_html(self, soup):
mtag = '<meta http-equiv="Content-Language" content="es-MX"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
soup.head.insert(0,mtag)
for item in soup.findAll(style=True):
del item['style']
for item in soup.findAll(font=True):
del item['font']
for item in soup.findAll(face=True):
del item['face']
for item in soup.findAll(helvetica=True):
del item['helvetica']
return soup
mtag = '<meta http-equiv="Content-Language" content="es-MX"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
soup.head.insert(0,mtag)
for tag in soup.findAll(name='td',attrs={'class': 'arazul50'}):
tag.insert(0,"<h1>")
tag.insert(2,"</h1>")
return soup
def postprocess_html(self, soup,first):
for tag in soup.findAll(name=['table', 'span','i']):
tag.name = 'div'
for item in soup.findAll(align = "right"):
del item['align']
return soup

View File

@ -14,7 +14,6 @@ class OutlookIndia(BasicNewsRecipe):
encoding = 'utf-8'
language = 'en_IN'
recursions = 1
extra_css = '''
body{font-family:Arial,Helvetica,sans-serif; font-size:xx-small;}
.fspheading{color:#AF0E25 ; font-family:"Times New Roman",Times,serif; font-weight:bold ; font-size:large; }

View File

@ -34,7 +34,8 @@ class USAToday(BasicNewsRecipe):
.vaTextBold{font-family:Arial,Helvetica,sans-serif; font-size:x-small;font-weight:bold; color:#666666;}
'''
remove_tags = [
{'class':['tagListLabel','piped-taglist-string',]}
{'class':['tagListLabel','piped-taglist-string','socialcontainer','social-wrapper',]},
{'id':['topSocialButtons']},
]
conversion_options = { 'linearize_tables' : True }

View File

@ -0,0 +1,46 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '2009, Darko Miletic <darko.miletic at gmail.com>'
'''
www.variety.com
'''
from calibre.web.feeds.recipes import BasicNewsRecipe
class Variety(BasicNewsRecipe):
title = 'Variety'
__author__ = 'Darko Miletic'
description = 'Breaking entertainment movie news, movie reviews, entertainment industry events, news and reviews from Cannes, Oscars, and Hollywood awards. Featuring box office charts, archives and more.'
oldest_article = 2
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
encoding = 'cp1252'
publisher = 'Red Business Information'
category = 'Entertainment Industry News, Daily Variety, Movie Reviews, TV, Awards, Oscars, Cannes, Box Office, Hollywood'
language = 'en'
conversion_options = {
'comments' : description
,'tags' : category
,'language' : language
,'publisher' : publisher
}
remove_tags = [dict(name=['object','link','map'])]
keep_only_tags = [dict(name='div', attrs={'id':'article'})]
feeds = [(u'News & Articles', u'http://feeds.feedburner.com/variety/headlines' )]
def print_version(self, url):
rpt = url.rpartition('?')[0]
artid = rpt.rpartition('/')[2]
catidr = url.rpartition('categoryid=')[2]
catid = catidr.partition('&')[0]
return 'http://www.variety.com/index.asp?layout=print_story&articleid=' + artid + '&categoryid=' + catid
def get_article_url(self, article):
return article.get('feedburner_origlink', None)

View File

@ -6,10 +6,9 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
import os
from setup.installer import VMInstaller
from setup import Command, installer_name
from setup import Command
class Linux32(VMInstaller):
@ -21,17 +20,12 @@ class Linux32(VMInstaller):
FREEZE_COMMAND = 'linux_freeze'
class Linux64(Command):
class Linux64(Linux32):
description = 'Build 64bit linux binary installer'
sub_commands = ['linux_freeze']
def run(self, opts):
installer = installer_name('tar.bz2', True)
if not os.path.exists(installer):
raise Exception('Failed to build installer '+installer)
return os.path.basename(installer)
VM_NAME = 'gentoo64_build'
VM = '/vmware/bin/gentoo64_build'
IS_64_BIT = True
class Linux(Command):

View File

@ -2,7 +2,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en'
__appname__ = 'calibre'
__version__ = '0.6.19'
__version__ = '0.6.20'
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
import re

View File

@ -371,6 +371,7 @@ from calibre.devices.prs505.driver import PRS505
from calibre.devices.prs700.driver import PRS700
from calibre.devices.android.driver import ANDROID
from calibre.devices.eslick.driver import ESLICK
from calibre.devices.nuut2.driver import NUUT2
plugins = [HTML2ZIP]
plugins += [
@ -425,7 +426,8 @@ plugins += [
CYBOOK_OPUS,
COOL_ER,
SHINEBOOK,
ESLICK
ESLICK,
NUUT2
]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
x.__name__.endswith('MetadataReader')]

View File

@ -157,6 +157,16 @@ def add_simple_plugin(path_to_plugin):
def main(args=sys.argv):
from calibre.constants import debug
debug()
if len(args) > 2 and args[1] in ('-e', '--exec-file'):
sys.argv = [args[2]] + args[3:]
ef = os.path.abspath(args[2])
base = os.path.dirname(ef)
sys.path.insert(0, base)
g = globals()
g['__name__'] = '__main__'
execfile(ef, g)
return
opts, args = option_parser().parse_args(args)
if opts.gui:
from calibre.gui2.main import main
@ -164,13 +174,6 @@ def main(args=sys.argv):
elif opts.command:
sys.argv = args[:1]
exec opts.command
elif opts.exec_file:
sys.argv = args
base = os.path.dirname(os.path.abspath(opts.exec_file))
sys.path.insert(0, base)
g = globals()
g['__name__'] = '__main__'
execfile(opts.exec_file, g)
elif opts.debug_device_driver:
debug_device_driver()
elif opts.migrate:

View File

@ -0,0 +1,2 @@
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'

View File

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
__license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
'''
Device driver for the Nuut2
'''
from calibre.devices.usbms.driver import USBMS
class NUUT2(USBMS):
name = 'Nuut2 Device Interface'
gui_name = 'NeoLux Nuut2'
description = _('Communicate with the Nuut2 eBook reader.')
author = _('Kovid Goyal')
supported_platforms = ['windows', 'osx', 'linux']
# Ordered list of supported formats
FORMATS = ['epub', 'pdft', 'txt']
DRM_FORMATS = ['epub']
VENDOR_ID = [0x140e]
PRODUCT_ID = [0xb055]
BCD = [0x318]
VENDOR_NAME = 'NEOLUX'
WINDOWS_MAIN_MEM = 'NUUT2'
OSX_MAIN_MEM = 'NEXTPPRS MASS STORAGE Media'
MAIN_MEMORY_VOLUME_LABEL = 'NUUT2 Main Memory'
STORAGE_CARD_VOLUME_LABEL = 'NUUT2 Storage Card'
EBOOK_DIR_MAIN = 'books'
SUPPORTS_SUB_DIRS = True

View File

@ -102,7 +102,6 @@ def render_html(path_to_html, width=590, height=750):
page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
loop = QEventLoop()
renderer = HTMLRenderer(page, loop)
page.connect(page, SIGNAL('loadFinished(bool)'), renderer,
Qt.QueuedConnection)
page.mainFrame().load(QUrl.fromLocalFile(path_to_html))

View File

@ -23,6 +23,7 @@ from calibre.customize.conversion import OptionRecommendation
from calibre.constants import islinux
from calibre import unicode_path
from calibre.utils.localization import get_lang
from calibre.utils.filenames import ascii_filename
class Link(object):
'''
@ -320,8 +321,8 @@ class HTMLInput(InputFormatPlugin):
oeb.logger.warn('Title not specified')
metadata.add('title', self.oeb.translate(__('Unknown')))
bookid = "urn:uuid:%s" % str(uuid.uuid4())
metadata.add('identifier', bookid, id='calibre-uuid')
bookid = str(uuid.uuid4())
metadata.add('identifier', bookid, id='uuid_id', scheme='uuid')
for ident in metadata.identifier:
if 'id' in ident.attrib:
self.oeb.uid = metadata.identifier[0]
@ -333,9 +334,11 @@ class HTMLInput(InputFormatPlugin):
htmlfile_map = {}
for f in filelist:
path = f.path
print 111, path, repr(path), repr(os.path.dirname(path))
oeb.container = DirContainer(os.path.dirname(path), log)
bname = os.path.basename(path)
id, href = oeb.manifest.generate(id='html', href=bname)
id, href = oeb.manifest.generate(id='html',
href=ascii_filename(bname))
htmlfile_map[path] = href
item = oeb.manifest.add(id, href, 'text/html')
item.html_input_href = bname
@ -409,6 +412,9 @@ class HTMLInput(InputFormatPlugin):
link = os.path.abspath(link)
if not os.access(link, os.R_OK):
return link_
if os.path.isdir(link):
self.log.warn(link_, 'is a link to a directory. Ignoring.')
return link_
if not islinux:
link = link.lower()
if link not in self.added_resources:

View File

@ -11,16 +11,15 @@ from PyQt4.Qt import QUrl, QApplication, QSize, QEventLoop, \
SIGNAL, QPainter, QImage, QObject, Qt
from PyQt4.QtWebKit import QWebPage
class HTMLTableRenderer(QObject):
def __init__(self, html, base_dir, width, height, dpi, factor):
'''
`width, height`: page width and height in pixels
`base_dir`: The directory in which the HTML file that contains the table resides
`base_dir`: The directory in which the HTML file that contains the table resides
'''
QObject.__init__(self)
self.app = None
self.width, self.height, self.dpi = width, height, dpi
self.base_dir = base_dir
@ -30,10 +29,10 @@ class HTMLTableRenderer(QObject):
self.page = QWebPage()
self.connect(self.page, SIGNAL('loadFinished(bool)'), self.render_html)
self.page.mainFrame().setTextSizeMultiplier(factor)
self.page.mainFrame().setHtml(html,
self.page.mainFrame().setHtml(html,
QUrl('file:'+os.path.abspath(self.base_dir)))
def render_html(self, ok):
try:
if not ok:
@ -61,7 +60,7 @@ class HTMLTableRenderer(QObject):
self.images.append((f, img.width(), img.height()))
finally:
QApplication.quit()
def render_table(soup, table, css, base_dir, width, height, dpi, factor=1.0):
head = ''
for e in soup.findAll(['link', 'style']):
@ -85,10 +84,11 @@ def render_table(soup, table, css, base_dir, width, height, dpi, factor=1.0):
images, tdir = do_render(html, base_dir, width, height, dpi, factor)
atexit.register(shutil.rmtree, tdir)
return images
def do_render(html, base_dir, width, height, dpi, factor):
if QApplication.instance() is None:
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
tr = HTMLTableRenderer(html, base_dir, width, height, dpi, factor)
tr.loop.exec_()
return tr.images, tr.tdir
return tr.images, tr.tdir

View File

@ -218,7 +218,7 @@ class MetaInformation(object):
'isbn', 'tags', 'cover_data', 'application_id', 'guide',
'manifest', 'spine', 'toc', 'cover', 'language',
'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc',
'pubdate', 'rights', 'publication_type'):
'pubdate', 'rights', 'publication_type', 'uuid'):
if hasattr(mi, attr):
setattr(ans, attr, getattr(mi, attr))
@ -244,7 +244,7 @@ class MetaInformation(object):
'series', 'series_index', 'rating', 'isbn', 'language',
'application_id', 'manifest', 'toc', 'spine', 'guide', 'cover',
'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate',
'rights', 'publication_type',
'rights', 'publication_type', 'uuid',
):
setattr(self, x, getattr(mi, x, None))
@ -264,7 +264,7 @@ class MetaInformation(object):
'isbn', 'application_id', 'manifest', 'spine', 'toc',
'cover', 'language', 'guide', 'book_producer',
'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate', 'rights',
'publication_type'):
'publication_type', 'uuid',):
if hasattr(mi, attr):
val = getattr(mi, attr)
if val is not None:

View File

@ -432,6 +432,9 @@ class OPF(object):
identifier_path = XPath('descendant::*[re:match(name(), "identifier", "i")]')
application_id_path = XPath('descendant::*[re:match(name(), "identifier", "i") and '+
'(re:match(@opf:scheme, "calibre|libprs500", "i") or re:match(@scheme, "calibre|libprs500", "i"))]')
uuid_id_path = XPath('descendant::*[re:match(name(), "identifier", "i") and '+
'(re:match(@opf:scheme, "uuid", "i") or re:match(@scheme, "uuid", "i"))]')
manifest_path = XPath('descendant::*[re:match(name(), "manifest", "i")]/*[re:match(name(), "item", "i")]')
manifest_ppath = XPath('descendant::*[re:match(name(), "manifest", "i")]')
spine_path = XPath('descendant::*[re:match(name(), "spine", "i")]/*[re:match(name(), "itemref", "i")]')
@ -747,6 +750,25 @@ class OPF(object):
return property(fget=fget, fset=fset)
@dynamic_property
def uuid(self):
def fget(self):
for match in self.uuid_id_path(self.metadata):
return self.get_text(match) or None
def fset(self, val):
matches = self.uuid_id_path(self.metadata)
if not matches:
attrib = {'{%s}scheme'%self.NAMESPACES['opf']: 'uuid'}
matches = [self.create_metadata_element('identifier',
attrib=attrib)]
self.set_text(matches[0], unicode(val))
return property(fget=fget, fset=fset)
@dynamic_property
def book_producer(self):
@ -977,6 +999,9 @@ def metadata_to_opf(mi, as_string=True):
if not mi.application_id:
mi.application_id = str(uuid.uuid4())
if not mi.uuid:
mi.uuid = str(uuid.uuid4())
if not mi.book_producer:
mi.book_producer = __appname__ + ' (%s) '%__version__ + \
'[http://calibre-ebook.com]'
@ -986,13 +1011,14 @@ def metadata_to_opf(mi, as_string=True):
root = etree.fromstring(textwrap.dedent(
'''
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="%(a)s_id">
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="uuid_id">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:identifier opf:scheme="%(a)s" id="%(a)s_id">%(id)s</dc:identifier>
<dc:identifier opf:scheme="uuid" id="uuid_id">%(uuid)s</dc:identifier>
</metadata>
<guide/>
</package>
'''%dict(a=__appname__, id=mi.application_id)))
'''%dict(a=__appname__, id=mi.application_id, uuid=mi.uuid)))
metadata = root[0]
guide = root[1]
metadata[0].tail = '\n'+(' '*8)

View File

@ -114,6 +114,8 @@ class OEBReader(object):
except etree.XMLSyntaxError:
data = re.sub(r'(?is)<tours>.+</tours>', '', data)
self.logger.warn('OPF contains invalid tours section')
data = data.replace('<dc-metadata>',
'<dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core">')
opf = etree.fromstring(data)
ns = namespace(opf.tag)
@ -139,10 +141,9 @@ class OEBReader(object):
mi.book_producer = '%(a)s (%(v)s) [http://%(a)s.kovidgoyal.net]'%\
dict(a=__appname__, v=__version__)
meta_info_to_oeb_metadata(mi, self.oeb.metadata, self.logger)
bookid = "urn:uuid:%s" % str(uuid.uuid4()) if mi.application_id is None \
else mi.application_id
self.oeb.metadata.add('identifier', bookid, id='calibre-uuid')
self.oeb.uid = self.oeb.metadata.identifier[0]
self.oeb.metadata.add('identifier', str(uuid.uuid4()), id='uuid_id',
scheme='uuid')
self.oeb.uid = self.oeb.metadata.identifier[-1]
def _manifest_prune_invalid(self):
'''

View File

@ -6,14 +6,14 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
from calibre.ebooks.oeb.base import OEB_DOCS, XPath
from calibre.ebooks.oeb.base import OEB_DOCS, XPath, XHTML
class LinearizeTables(object):
def linearize(self, root):
for x in XPath('//h:table|//h:td|//h:tr|//h:th|//h:caption|'
'//h:tbody|//h:tfoot|//h:thead|//h:colgroup|//h:col')(root):
x.tag = 'div'
x.tag = XHTML('div')
for attr in ('style', 'font', 'valign',
'colspan', 'width', 'height',
'rowspan', 'summary', 'align',

View File

@ -80,12 +80,19 @@ class MergeMetadata(object):
def __call__(self, oeb, mi, opts):
self.oeb, self.log = oeb, oeb.log
m = self.oeb.metadata
meta_info_to_oeb_metadata(mi, m, oeb.log)
self.log('Merging user specified metadata...')
meta_info_to_oeb_metadata(mi, m, oeb.log)
cover_id = self.set_cover(mi, opts.prefer_metadata_cover)
m.clear('cover')
if cover_id is not None:
m.add('cover', cover_id)
if mi.uuid is not None:
m.filter('identifier', lambda x:x.id=='uuid_id')
self.oeb.metadata.add('identifier', mi.uuid, id='uuid_id',
scheme='uuid')
self.oeb.uid = self.oeb.metadata.identifier[-1]
def set_cover(self, mi, prefer_metadata_cover):

View File

@ -18,7 +18,6 @@ from PyQt4.QtGui import QColor
from PyQt4.QtGui import QImage
from PyQt4.QtGui import QPainter
from PyQt4.QtSvg import QSvgRenderer
from PyQt4.QtGui import QApplication
from calibre.ebooks.oeb.base import XHTML, XLINK
from calibre.ebooks.oeb.base import SVG_MIME, PNG_MIME
from calibre.ebooks.oeb.base import xml2str, xpath
@ -30,8 +29,9 @@ KEEP_ATTRS = set(['class', 'style', 'width', 'height', 'align'])
class SVGRasterizer(object):
def __init__(self):
if QApplication.instance() is None:
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
@classmethod
def config(cls, cfg):

View File

@ -18,7 +18,7 @@ from calibre.ebooks.metadata import authors_to_string
from PyQt4 import QtCore
from PyQt4.Qt import QUrl, QEventLoop, SIGNAL, QObject, \
QApplication, QPrinter, QMetaObject, QSizeF, Qt
QPrinter, QMetaObject, QSizeF, Qt
from PyQt4.QtWebKit import QWebView
from pyPdf import PdfFileWriter, PdfFileReader
@ -37,8 +37,9 @@ class PDFMetadata(object):
class PDFWriter(QObject):
def __init__(self, opts, log):
if QApplication.instance() is None:
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
QObject.__init__(self)
self.logger = log

View File

@ -130,7 +130,7 @@ class CopyButton(QPushButton):
return
except:
pass
return QPushButton.event(self, ev)
QPushButton.keyPressEvent(self, ev)
def keyReleaseEvent(self, ev):
@ -139,7 +139,7 @@ class CopyButton(QPushButton):
return
except:
pass
return QPushButton.event(self, ev)
QPushButton.keyReleaseEvent(self, ev)
def mouseReleaseEvent(self, ev):
ev.accept()
@ -528,12 +528,14 @@ class Application(QApplication):
if set_qt_translator(self._translator):
self.installTranslator(self._translator)
_store_app = None
def is_ok_to_use_qt():
global gui_thread
global gui_thread, _store_app
if islinux and ':' not in os.environ.get('DISPLAY', ''):
return False
if QApplication.instance() is None:
QApplication([])
if _store_app is None and QApplication.instance() is None:
_store_app = QApplication([])
if gui_thread is None:
gui_thread = QThread.currentThread()
return gui_thread is QThread.currentThread()

View File

@ -98,7 +98,7 @@ class FontKeyChooser(QDialog, Ui_Dialog):
if __name__ == '__main__':
from PyQt4.Qt import QApplication
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
is_ok_to_use_qt()
d = FontKeyChooser()
d.exec_()

View File

@ -20,9 +20,9 @@ if pictureflow is not None:
class EmptyImageList(pictureflow.FlowImages):
def __init__(self):
pictureflow.FlowImages.__init__(self)
class FileSystemImages(pictureflow.FlowImages):
def __init__(self, dirpath):
pictureflow.FlowImages.__init__(self)
self.images = []
@ -33,58 +33,58 @@ if pictureflow is not None:
if not img.isNull():
self.images.append(img)
self.captions.append(os.path.basename(f))
def count(self):
return len(self.images)
def image(self, index):
return self.images[index]
def caption(self, index):
return self.captions[index]
def currentChanged(self, index):
print 'current changed:', index
class DatabaseImages(pictureflow.FlowImages):
def __init__(self, model, buffer=20):
pictureflow.FlowImages.__init__(self)
self.model = model
QObject.connect(self.model, SIGNAL('modelReset()'), self.reset)
def count(self):
return self.model.count()
def caption(self, index):
return self.model.title(index)
def reset(self):
self.emit(SIGNAL('dataChanged()'))
def image(self, index):
return self.model.cover(index)
class CoverFlow(pictureflow.PictureFlow):
def __init__(self, height=300, parent=None, text_height=25):
pictureflow.PictureFlow.__init__(self, parent,
pictureflow.PictureFlow.__init__(self, parent,
config['cover_flow_queue_length']+1)
self.setSlideSize(QSize(int(2/3. * height), height))
self.setMinimumSize(QSize(int(2.35*0.67*height), (5/3.)*height+text_height))
self.setFocusPolicy(Qt.WheelFocus)
self.setSizePolicy(QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum))
def wheelEvent(self, ev):
ev.accept()
if ev.delta() < 0:
self.showNext()
elif ev.delta() > 0:
self.showPrevious()
else:
CoverFlow = None
DatabaseImages = None
@ -105,7 +105,7 @@ if __name__ == '__main__':
cf.setImages(model)
cf.connect(cf, SIGNAL('currentChanged(int)'), model.currentChanged)
w.setCentralWidget(cf)
w.show()
cf.setFocus(Qt.OtherFocusReason)
sys.exit(app.exec_())

View File

@ -325,13 +325,15 @@ class EmailAccounts(QAbstractTableModel):
class ConfigDialog(ResizableDialog, Ui_Dialog):
def category_current_changed(self, n, p):
self.stackedWidget.setCurrentIndex(n.row())
def __init__(self, window, db, server=None):
ResizableDialog.__init__(self, window)
self.ICON_SIZES = {0:QSize(48, 48), 1:QSize(32,32), 2:QSize(24,24)}
self._category_model = CategoryModel()
self.category_view.currentChanged = \
lambda n, p: self.stackedWidget.setCurrentIndex(n.row())
self.category_view.currentChanged = self.category_current_changed
self.category_view.setModel(self._category_model)
self.db = db
self.server = server
@ -814,6 +816,6 @@ if __name__ == '__main__':
from PyQt4.Qt import QApplication
app = QApplication([])
d=ConfigDialog(None, LibraryDatabase2('/tmp'))
d.category_view.setCurrentIndex(d.category_view.model().index(2))
d.category_view.setCurrentIndex(d.category_view.model().index(0))
d.show()
app.exec_()

View File

@ -9,7 +9,7 @@ Scheduler for automated recipe downloads
from datetime import datetime, timedelta
from PyQt4.Qt import QDialog, QApplication, SIGNAL, Qt, QTime, QObject, QMenu, \
from PyQt4.Qt import QDialog, SIGNAL, Qt, QTime, QObject, QMenu, \
QAction, QIcon, QMutex, QTimer
from calibre.gui2.dialogs.scheduler_ui import Ui_Dialog
@ -306,7 +306,8 @@ class Scheduler(QObject):
self.download(urn)
if __name__ == '__main__':
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
is_ok_to_use_qt()
from calibre.library.database2 import LibraryDatabase2
d = SchedulerDialog(RecipeModel(LibraryDatabase2('/home/kovid/documents/library')))
d.exec_()

View File

@ -251,7 +251,7 @@ class %(classname)s(%(base_class)s):
def add_builtin_recipe(self):
from calibre.web.feeds.recipes.collection import \
get_builtin_recipe_by_title, get_builtin_recipe_titles
items = get_builtin_recipe_titles()
items = sorted(get_builtin_recipe_titles())
title, ok = QInputDialog.getItem(self, _('Pick recipe'), _('Pick the recipe to customize'),
@ -259,15 +259,15 @@ class %(classname)s(%(base_class)s):
if ok:
title = unicode(title)
profile = get_builtin_recipe_by_title(title)
if self._model.has_title(title):
if question_dialog(self, _('Replace recipe?'),
_('A custom recipe named %s already exists. Do you want to '
'replace it?')%title):
self._model.replace_by_title(title, profile)
if self._model.has_title(title):
if question_dialog(self, _('Replace recipe?'),
_('A custom recipe named %s already exists. Do you want to '
'replace it?')%title):
self._model.replace_by_title(title, profile)
else:
return
else:
return
else:
self.model.add(title, profile)
self.model.add(title, profile)
self.clear()
@ -314,8 +314,8 @@ class %(classname)s(%(base_class)s):
self.source_code.setText('')
if __name__ == '__main__':
from PyQt4.Qt import QApplication
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
is_ok_to_use_qt()
from calibre.library.database2 import LibraryDatabase2
from calibre.web.feeds.recipes.model import RecipeModel
d=UserProfiles(None, RecipeModel(LibraryDatabase2('/home/kovid/documents/library')))

View File

@ -11,7 +11,7 @@ from Queue import Empty, Queue
from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \
QTimer, SIGNAL, QIcon, QDialog, QAbstractItemDelegate, QApplication, \
QSize, QStyleOptionProgressBarV2, QString, QStyle
QSize, QStyleOptionProgressBarV2, QString, QStyle, QToolTip
from calibre.utils.ipc.server import Server
from calibre.utils.ipc.job import ParallelJob
@ -57,6 +57,28 @@ class JobManager(QAbstractTableModel):
else:
return QVariant(section+1)
def show_tooltip(self, arg):
widget, pos = arg
QToolTip.showText(pos, self.get_tooltip())
def get_tooltip(self):
running_jobs = [j for j in self.jobs if j.run_state == j.RUNNING]
waiting_jobs = [j for j in self.jobs if j.run_state == j.WAITING]
lines = [_('There are %d running jobs:')%len(running_jobs)]
for job in running_jobs:
desc = job.description
if not desc:
desc = _('Unknown job')
p = 100. if job.is_finished else job.percent
lines.append('%s: %.0f%% done'%(desc, p))
lines.extend(['', _('There are %d waiting jobs:')%len(waiting_jobs)])
for job in waiting_jobs:
desc = job.description
if not desc:
desc = _('Unknown job')
lines.append(desc)
return '\n'.join(['calibre', '']+ lines)
def data(self, index, role):
try:
if role not in (Qt.DisplayRole, Qt.DecorationRole):

View File

@ -11,7 +11,7 @@ from PyQt4.Qt import Qt, SIGNAL, QObject, QCoreApplication, QUrl, QTimer, \
QModelIndex, QPixmap, QColor, QPainter, QMenu, QIcon, \
QToolButton, QDialog, QDesktopServices, QFileDialog, \
QSystemTrayIcon, QApplication, QKeySequence, QAction, \
QMessageBox, QStackedLayout
QMessageBox, QStackedLayout, QHelpEvent
from PyQt4.QtSvg import QSvgRenderer
from calibre import prints, patheq
@ -89,6 +89,18 @@ class Listener(Thread):
except:
pass
class SystemTrayIcon(QSystemTrayIcon):
def __init__(self, icon, parent):
QSystemTrayIcon.__init__(self, icon, parent)
def event(self, ev):
if ev.type() == ev.ToolTip:
evh = QHelpEvent(ev)
self.emit(SIGNAL('tooltip_requested(PyQt_PyObject)'),
(self, evh.globalPos()))
return True
return QSystemTrayIcon.event(self, ev)
class Main(MainWindow, Ui_MainWindow, DeviceGUI):
'The main GUI'
@ -144,8 +156,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
self.device_connected = False
self.viewers = collections.deque()
self.content_server = None
self.system_tray_icon = QSystemTrayIcon(QIcon(I('library.png')), self)
self.system_tray_icon = SystemTrayIcon(QIcon(I('library.png')), self)
self.system_tray_icon.setToolTip('calibre')
self.connect(self.system_tray_icon,
SIGNAL('tooltip_requested(PyQt_PyObject)'),
self.job_manager.show_tooltip)
if not config['systray_icon']:
self.system_tray_icon.hide()
else:

View File

@ -282,9 +282,10 @@ class StatusBar(QStatusBar):
if __name__ == '__main__':
# Used to create the animated status icon
from PyQt4.Qt import QApplication, QPainter, QSvgRenderer, QColor
from PyQt4.Qt import QPainter, QSvgRenderer, QColor
from subprocess import check_call
app = QApplication([])
from calibre.gui2 import is_ok_to_use_qt
is_ok_to_use_qt()
def create_pixmaps(path, size=16, delta=20):
r = QSvgRenderer(path)

View File

@ -10,7 +10,7 @@ from BeautifulSoup import BeautifulSoup, Tag
from PyQt4 import QtCore
from PyQt4.Qt import QUrl, QEventLoop, SIGNAL, QObject, QApplication, Qt, \
from PyQt4.Qt import QUrl, QEventLoop, SIGNAL, QObject, Qt, \
QPrinter, QPrintPreviewDialog, QPrintDialog, QDialog, QMetaObject, Q_ARG
from PyQt4.QtWebKit import QWebView
@ -18,8 +18,9 @@ PRINTCSS = 'body{width:100%;margin:0;padding:0;font-family:Arial;color:#000;back
class Printing(QObject):
def __init__(self, spine, preview):
if QApplication.instance() is None:
QApplication([])
from calibre.gui2 import is_ok_to_use_qt
if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
QObject.__init__(self)
self.loop = QEventLoop()

View File

@ -18,7 +18,9 @@ from calibre.library.database2 import LibraryDatabase2
from calibre.ebooks.metadata.opf2 import OPFCreator, OPF
from calibre.utils.genshi.template import MarkupTemplate
FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'formats', 'isbn', 'cover'])
FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating',
'timestamp', 'size', 'tags', 'comments', 'series', 'series_index',
'formats', 'isbn', 'uuid', 'cover'])
XML_TEMPLATE = '''\
<?xml version="1.0" encoding="UTF-8"?>
@ -26,6 +28,7 @@ XML_TEMPLATE = '''\
<py:for each="record in data">
<record>
<id>${record['id']}</id>
<uuid>${record['uuid']}</uuid>
<title>${record['title']}</title>
<authors sort="${record['author_sort']}">
<py:for each="author in record['authors']">
@ -71,7 +74,7 @@ STANZA_TEMPLATE='''\
<py:for each="record in data">
<entry>
<title>${record['title']}</title>
<id>urn:calibre:${record['id']}</id>
<id>urn:calibre:${record['uuid']}</id>
<author><name>${record['author_sort']}</name></author>
<updated>${record['timestamp'].strftime('%Y-%m-%dT%H:%M:%SZ')}</updated>
<link type="application/epub+zip" href="${quote(record['fmt_epub'].replace(sep, '/')).replace('http%3A', 'http:')}" />
@ -227,7 +230,7 @@ def command_list(args, dbpath):
if not set(fields).issubset(FIELDS):
parser.print_help()
print
print >>sys.stderr, _('Invalid fields. Available fields:'), ','.join(FIELDS)
print >>sys.stderr, _('Invalid fields. Available fields:'), ','.join(sorted(FIELDS))
return 1
db = get_db(dbpath, opts)

View File

@ -59,7 +59,7 @@ copyfile = os.link if hasattr(os, 'link') else shutil.copyfile
FIELD_MAP = {'id':0, 'title':1, 'authors':2, 'publisher':3, 'rating':4, 'timestamp':5,
'size':6, 'tags':7, 'comments':8, 'series':9, 'series_index':10,
'sort':11, 'author_sort':12, 'formats':13, 'isbn':14, 'path':15,
'lccn':16, 'pubdate':17, 'flags':18, 'cover':19}
'lccn':16, 'pubdate':17, 'flags':18, 'uuid':19, 'cover':20}
INDEX_MAP = dict(zip(FIELD_MAP.values(), FIELD_MAP.keys()))
@ -439,6 +439,8 @@ class LibraryDatabase2(LibraryDatabase):
self.count = self.data.count
self.refresh()
self.last_update_check = self.last_modified()
def get_property(idx, index_is_id=False, loc=-1):
row = self.data._data[idx] if index_is_id else self.data[idx]
@ -447,7 +449,7 @@ class LibraryDatabase2(LibraryDatabase):
for prop in ('author_sort', 'authors', 'comment', 'comments', 'isbn',
'publisher', 'rating', 'series', 'series_index', 'tags',
'title', 'timestamp'):
'title', 'timestamp', 'uuid'):
setattr(self, prop, functools.partial(get_property,
loc=FIELD_MAP['comments' if prop == 'comment' else prop]))
@ -622,12 +624,61 @@ class LibraryDatabase2(LibraryDatabase):
END TRANSACTION;
''')
def upgrade_version_7(self):
'Add uuid column'
self.conn.executescript('''
BEGIN TRANSACTION;
ALTER TABLE books ADD COLUMN uuid TEXT;
DROP TRIGGER IF EXISTS books_insert_trg;
DROP TRIGGER IF EXISTS books_update_trg;
UPDATE books SET uuid=uuid4();
CREATE TRIGGER books_insert_trg AFTER INSERT ON books
BEGIN
UPDATE books SET sort=title_sort(NEW.title),uuid=uuid4() WHERE id=NEW.id;
END;
CREATE TRIGGER books_update_trg AFTER UPDATE ON books
BEGIN
UPDATE books SET sort=title_sort(NEW.title) WHERE id=NEW.id;
END;
DROP VIEW meta;
CREATE VIEW meta AS
SELECT id, title,
(SELECT sortconcat(bal.id, name) FROM books_authors_link AS bal JOIN authors ON(author = authors.id) WHERE book = books.id) authors,
(SELECT name FROM publishers WHERE publishers.id IN (SELECT publisher from books_publishers_link WHERE book=books.id)) publisher,
(SELECT rating FROM ratings WHERE ratings.id IN (SELECT rating from books_ratings_link WHERE book=books.id)) rating,
timestamp,
(SELECT MAX(uncompressed_size) FROM data WHERE book=books.id) size,
(SELECT concat(name) FROM tags WHERE tags.id IN (SELECT tag from books_tags_link WHERE book=books.id)) tags,
(SELECT text FROM comments WHERE book=books.id) comments,
(SELECT name FROM series WHERE series.id IN (SELECT series FROM books_series_link WHERE book=books.id)) series,
series_index,
sort,
author_sort,
(SELECT concat(format) FROM data WHERE data.book=books.id) formats,
isbn,
path,
lccn,
pubdate,
flags,
uuid
FROM books;
END TRANSACTION;
''')
def last_modified(self):
''' Return last modified time as a UTC datetime object'''
return datetime.utcfromtimestamp(os.stat(self.dbpath).st_mtime)
def check_if_modified(self):
if self.last_modified() > self.last_update_check:
self.refresh()
self.last_update_check = datetime.utcnow()
def path(self, index, index_is_id=False):
'Return the relative path to the directory containing this books files as a unicode string.'
row = self.data._data[index] if index_is_id else self.data[index]
@ -785,6 +836,7 @@ class LibraryDatabase2(LibraryDatabase):
mi.publisher = self.publisher(idx, index_is_id=index_is_id)
mi.timestamp = self.timestamp(idx, index_is_id=index_is_id)
mi.pubdate = self.pubdate(idx, index_is_id=index_is_id)
mi.uuid = self.uuid(idx, index_is_id=index_is_id)
tags = self.tags(idx, index_is_id=index_is_id)
if tags:
mi.tags = [i.strip() for i in tags.split(',')]
@ -1530,7 +1582,9 @@ class LibraryDatabase2(LibraryDatabase):
'''
if prefix is None:
prefix = self.library_path
FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'isbn'])
FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating',
'timestamp', 'size', 'tags', 'comments', 'series', 'series_index',
'isbn', 'uuid'])
data = []
for record in self.data:
if record is None: continue

View File

@ -24,7 +24,7 @@ except ImportError:
from calibre.constants import __version__, __appname__
from calibre.utils.genshi.template import MarkupTemplate
from calibre import fit_image, guess_type, prepare_string_for_xml, \
strftime as _strftime
strftime as _strftime, prints
from calibre.library import server_config as config
from calibre.library.database2 import LibraryDatabase2, FIELD_MAP
from calibre.utils.config import config_dir
@ -45,6 +45,8 @@ def expose(func):
def do(self, *args, **kwargs):
dict.update(cherrypy.response.headers, {'Server':self.server_name})
if not self.embedded:
self.db.check_if_modified()
return func(self, *args, **kwargs)
return cherrypy.expose(do)
@ -77,6 +79,159 @@ class LibraryServer(object):
</book>
''')
MOBILE_UA = re.compile('(?i)(?:iPhone|Opera Mini|NetFront|webOS|Mobile|Android|imode|DoCoMo|Minimo|Blackberry|MIDP|Symbian)')
MOBILE_BOOK = textwrap.dedent('''\
<tr xmlns:py="http://genshi.edgewall.org/">
<td class="thumbnail">
<img type="image/jpeg" src="/get/thumb/${r[0]}" border="0"/>
</td>
<td>
<py:for each="format in r[13].split(',')">
<span class="button"><a href="/get/${format}/${authors}-${r[1]}_${r[0]}.${format}">${format.lower()}</a></span>&nbsp;
</py:for>
${r[1]} by ${authors} - ${r[6]/1024}k - ${r[3] if r[3] else ''} ${pubdate} ${'['+r[7]+']' if r[7] else ''}
</td>
</tr>
''')
MOBILE = MarkupTemplate(textwrap.dedent('''\
<html xmlns:py="http://genshi.edgewall.org/">
<head>
<style>
.navigation table.buttons {
width: 100%;
}
.navigation .button {
width: 50%;
}
.button a, .button:visited a {
padding: 0.5em;
font-size: 1.25em;
border: 1px solid black;
text-color: black;
background-color: #ddd;
border-top: 1px solid ThreeDLightShadow;
border-right: 1px solid ButtonShadow;
border-bottom: 1px solid ButtonShadow;
border-left: 1 px solid ThreeDLightShadow;
-moz-border-radius: 0.25em;
-webkit-border-radius: 0.25em;
}
.button:hover a {
border-top: 1px solid #666;
border-right: 1px solid #CCC;
border-bottom: 1 px solid #CCC;
border-left: 1 px solid #666;
}
div.navigation {
padding-bottom: 1em;
clear: both;
}
#search_box {
border: 1px solid #393;
-moz-border-radius: 0.5em;
-webkit-border-radius: 0.5em;
padding: 1em;
margin-bottom: 0.5em;
float: right;
}
#listing {
width: 100%;
border-collapse: collapse;
}
#listing td {
padding: 0.25em;
}
#listing td.thumbnail {
height: 60px;
width: 60px;
}
#listing tr:nth-child(even) {
background: #eee;
}
#listing .button a{
display: inline-block;
width: 2.5em;
padding-left: 0em;
padding-right: 0em;
overflow: hidden;
text-align: center;
}
#logo {
float: left;
}
#spacer {
clear: both;
}
</style>
<link rel="icon" href="http://calibre.kovidgoyal.net/chrome/site/favicon.ico" type="image/x-icon" />
</head>
<body>
<div id="logo">
<img src="/static/calibre.png" alt="Calibre" />
</div>
<div id="search_box">
<form method="get" action="/mobile">
Show <select name="num">
<py:for each="option in [5,10,25,100]">
<option py:if="option == num" value="${option}" SELECTED="SELECTED">${option}</option>
<option py:if="option != num" value="${option}">${option}</option>
</py:for>
</select>
books matching <input name="search" id="s" value="${search}" /> sorted by
<select name="sort">
<py:for each="option in ['date','author','title','rating','size','tags','series']">
<option py:if="option == sort" value="${option}" SELECTED="SELECTED">${option}</option>
<option py:if="option != sort" value="${option}">${option}</option>
</py:for>
</select>
<select name="order">
<py:for each="option in ['ascending','descending']">
<option py:if="option == order" value="${option}" SELECTED="SELECTED">${option}</option>
<option py:if="option != order" value="${option}">${option}</option>
</py:for>
</select>
<input id="go" type="submit" value="Search"/>
</form>
</div>
<div class="navigation">
<span style="display: block; text-align: center;">Books ${start} to ${ min((start+num-1) , total) } of ${total}</span>
<table class="buttons">
<tr>
<td class="button" style="text-align:left;">
<a py:if="start > 1" href="${url_base};start=1">First</a>
<a py:if="start > 1" href="${url_base};start=${max(start-(num+1),1)}">Previous</a>
</td>
<td class="button" style="text-align: right;">
<a py:if=" total > (start + num) " href="${url_base};start=${start+num}">Next</a>
<a py:if=" total > (start + num) " href="${url_base};start=${total-num+1}">Last</a>
</td>
</tr>
</table>
</div>
<hr class="spacer" />
<table id="listing">
<py:for each="book in books">
${Markup(book)}
</py:for>
</table>
</body>
</html>
'''))
LIBRARY = MarkupTemplate(textwrap.dedent('''\
<?xml version="1.0" encoding="utf-8"?>
<library xmlns:py="http://genshi.edgewall.org/" start="$start" num="${len(books)}" total="$total" updated="${updated.strftime('%Y-%m-%dT%H:%M:%S+00:00')}">
@ -89,7 +244,7 @@ class LibraryServer(object):
STANZA_ENTRY=MarkupTemplate(textwrap.dedent('''\
<entry xmlns:py="http://genshi.edgewall.org/">
<title>${record[FM['title']]}</title>
<id>urn:calibre:${record[FM['id']]}</id>
<id>urn:calibre:${urn}</id>
<author><name>${authors}</name></author>
<updated>${timestamp}</updated>
<link type="${mimetype}" href="/get/${fmt}/${record[FM['id']]}" />
@ -191,6 +346,7 @@ class LibraryServer(object):
item
break
self.opts = opts
self.embedded = embedded
self.max_cover_width, self.max_cover_height = \
map(int, self.opts.max_cover.split('x'))
self.max_stanza_items = opts.max_opds_items
@ -525,6 +681,7 @@ class LibraryServer(object):
extra='\n'.join(extra),
mimetype=mimetype,
fmt=fmt,
urn=record[FIELD_MAP['uuid']],
timestamp=strftime('%Y-%m-%dT%H:%M:%S+00:00', record[5])
)
books.append(self.STANZA_ENTRY.generate(**data)\
@ -534,6 +691,52 @@ class LibraryServer(object):
next_link=next_link, updated=updated, id='urn:calibre:main').render('xml')
@expose
def mobile(self, start='1', num='25', sort='date', search='',
_=None, order='descending'):
'''
Serves metadata from the calibre database as XML.
:param sort: Sort results by ``sort``. Can be one of `title,author,rating`.
:param search: Filter results by ``search`` query. See :class:`SearchQueryParser` for query syntax
:param start,num: Return the slice `[start:start+num]` of the sorted and filtered results
:param _: Firefox seems to sometimes send this when using XMLHttpRequest with no caching
'''
try:
start = int(start)
except ValueError:
raise cherrypy.HTTPError(400, 'start: %s is not an integer'%start)
try:
num = int(num)
except ValueError:
raise cherrypy.HTTPError(400, 'num: %s is not an integer'%num)
ids = self.db.data.parse(search) if search and search.strip() else self.db.data.universal_set()
ids = sorted(ids)
items = [r for r in iter(self.db) if r[0] in ids]
if sort is not None:
self.sort(items, sort, (order.lower().strip() == 'ascending'))
book, books = MarkupTemplate(self.MOBILE_BOOK), []
for record in items[(start-1):(start-1)+num]:
aus = record[2] if record[2] else __builtin__._('Unknown')
authors = '|'.join([i.replace('|', ',') for i in aus.split(',')])
record[10] = fmt_sidx(float(record[10]))
ts, pd = strftime('%Y/%m/%d %H:%M:%S', record[5]), \
strftime('%Y/%m/%d %H:%M:%S', record[FIELD_MAP['pubdate']])
books.append(book.generate(r=record, authors=authors, timestamp=ts,
pubdate=pd).render('xml').decode('utf-8'))
updated = self.db.last_modified()
cherrypy.response.headers['Content-Type'] = 'text/html; charset=utf-8'
cherrypy.response.headers['Last-Modified'] = self.last_modified(updated)
url_base = "/mobile?search=" + search+";order="+order+";sort="+sort+";num="+str(num)
return self.MOBILE.generate(books=books, start=start, updated=updated, search=search, sort=sort, order=order, num=num,
total=len(ids), url_base=url_base).render('html')
@expose
def library(self, start='0', num='50', sort=None, search=None,
_=None, order='ascending'):
@ -584,10 +787,22 @@ class LibraryServer(object):
cherrypy.request.headers.get('Stanza-Device-Name', 919) != 919 or \
cherrypy.request.headers.get('Want-OPDS-Catalog', 919) != 919 or \
ua.startswith('Stanza')
return self.stanza(search=kwargs.get('search', None), sortby=kwargs.get('sortby',None), authorid=kwargs.get('authorid',None),
# A better search would be great
want_mobile = self.MOBILE_UA.search(ua) is not None
if self.opts.develop and not want_mobile:
prints('User agent:', ua)
if want_opds:
return self.stanza(search=kwargs.get('search', None), sortby=kwargs.get('sortby',None), authorid=kwargs.get('authorid',None),
tagid=kwargs.get('tagid',None),
seriesid=kwargs.get('seriesid',None),
offset=kwargs.get('offset', 0)) if want_opds else self.static('index.html')
offset=kwargs.get('offset', 0))
if want_mobile:
return self.mobile()
return self.static('index.html')
@expose

View File

@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en'
Wrapper for multi-threaded access to a single sqlite database connection. Serializes
all calls.
'''
import sqlite3 as sqlite, traceback, time
import sqlite3 as sqlite, traceback, time, uuid
from sqlite3 import IntegrityError
from threading import Thread
from Queue import Queue
@ -121,6 +121,7 @@ class DBThread(Thread):
self.conn.create_aggregate('concat', 1, Concatenate)
self.conn.create_aggregate('sortconcat', 2, SortedConcatenate)
self.conn.create_function('title_sort', 1, title_sort)
self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4()))
def run(self):
try:

View File

@ -301,15 +301,16 @@ Removing headers and footers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
These options are useful primarily for conversion of PDF documents. Often, the conversion leaves
behing page headers and footers in the text. These options use regular expressions to try and detect
behind page headers and footers in the text. These options use regular expressions to try and detect
the headers and footers and remove them. Remember that they operate on the intermediate XHTML produced
by the conversion pipeline. There is also a wizard to help you customize the regular expressions for
your document.
The header and footer regular expressions are used in conjunction with the remove header and footer options.
If the remove option is not enabled the regular expression will not be applied to remove the matched text.
As stated the removal works by using a python regular expression. All matched text is simply removed from
the document. You can learn more about regular expressions and the syntax at http://docs.python.org/library/re.html
The removal works by using a python regular expression. All matched text is simply removed from
the document. You can learn more about regular expressions and their syntax at
http://docs.python.org/library/re.html.
Miscellaneous
~~~~~~~~~~~~~~
@ -408,27 +409,28 @@ This will result in an automatically generated two level Table of Contents that
Format specific tips
----------------------
Here you will find tips specific to the conversion of particular formats.
Here you will find tips specific to the conversion of particular formats. Options specific to particular
format, whether input or output are available in the conversion dialog under their own section, for example
`TXT Input` or `EPUB Output`.
Convert Microsoft Word documents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|app| does not directly convert .doc files from Microsoft Word. However, in Word, you can save the document
as HTML and then convert the resulting HTML file with |app|. When saving as HTML, be sure to use the
"Save as filtered HTML" option as this will produce clean HTML that will convert well.
"Save as Web Page, Filtered" option as this will produce clean HTML that will convert well.
There is a Word macro package that can automate the conversion of Word documents using |app|. It also makes
generating the Table of Contents much simpler. It is called BookCreator and is available for free
`here <http://www.mobileread.com/forums/showthread.php?t=36098>`_.
`here <http://www.mobileread.com/forums/showthread.php?t=28313>`_.
Convert TXT documents
~~~~~~~~~~~~~~~~~~~~~~
TXT documents can contain any imaginable layout. Since TXT documents provide no way to explicitly mark parts of
the text, by default |app| only groups parts of the document into paragraphs. The default is to assume one or
more blank lines are a paragraph boundary.
.. code-block:: txt
TXT documents have no well defined way to specify formatting like bold, italics, etc, or document structure like paragraphs, headings, sections and so on.
Since TXT documents provide no way to explicitly mark parts of
the text, by default |app| only groups lines in the input document into paragraphs. The default is to assume one or
more blank lines are a paragraph boundary::
This is the first.
@ -437,41 +439,38 @@ more blank lines are a paragraph boundary.
TXT input supports a number of options to differentiate how paragraphs are detected.
:guilabel:`Treat each line as a paragraph`
Assumes that every line is a paragraph.
.. code-block:: txt
This is the first.
This is the second.
This is the third.
:guilabel:`Assume print formatting`
Assumes that every paragraph starts with an indent (either a tab or 2+ spaces). Paragraphs end when
the next line that starts with an indent is reached.
.. code-block:: txt
This is the
first.
This is the second.
This is the
third.
:guilabel:`Treat each line as a paragraph`
Assumes that every line is a paragraph::
This is the first.
This is the second.
This is the third.
:guilabel:`Assume print formatting`
Assumes that every paragraph starts with an indent (either a tab or 2+ spaces). Paragraphs end when
the next line that starts with an indent is reached::
This is the
first.
This is the second.
This is the
third.
:guilabel:`Process using markdown`
|app| also supports running TXT input though a transformation preprocessor known as markdown. Markdown
allows for basic formatting to be added to TXT documents, such as bold, italics, section headings, tables,
loists, a Table of Contents, etc. Marking chapter headings with a leading # and setting the chapter XPath detection
expression to "//h:h1" is the easiest way to have a proper table of contents generated from a TXT document.
You can learn more about the markdown syntax at http://daringfireball.net/projects/markdown/syntax.
:guilabel:`Process using markdown`
|app| also supports running TXT input though a transformation preprocessor known as markdown. Markdown
allows for basic formatting to be added to the document and is an easy way to differentiate non-paragraph
elements such as chapter headings. Marking chapter headings with # and settings the chapter XPath detection
expression to "//h:h1" is the easiest way to have a proper table of contents generated from a TXT document.
You can learn more about the markdown syntax at http://daringfireball.net/projects/markdown/syntax
Convert PDF documents
~~~~~~~~~~~~~~~~~~~~~~
PDF documents are one of the worst formats to convert from. They are a fixed page size and text placement format.
Meaning, it is very difficult to determine where one paragraph ends and another begins. |app| will try to unwrap
paragraphs using a configurable, :guilabel:`Line Un-Wrapping Factor`. This is a scale used to determine the length at which a line should be unwrapped. Valid values are a decimal
paragraphs using a configurable, :guilabel:`Line Un-Wrapping Factor`. This is a scale used to determine the length
at which a line should be unwrapped. Valid values are a decimal
between 0 and 1. The default is 0.5, this is the median line length. Lower this value to include more
text in the unwrapping. Increase to include less.
@ -480,5 +479,5 @@ Use the options to remove headers and footers to mitigate this issue. If the hea
removed from the text it can throw off the paragraph unwrapping.
Some limitations of PDF input is complex, multi-column, and image based documents are not supported.
Extraction of SVG images from within the document is also not supported.
Extraction of vector images and tables from within the document is also not supported.

View File

@ -64,26 +64,27 @@ this, make your changes, then run::
bzr commit -m "Comment describing your changes"
bzr send -o my-changes
This will create a my-changes file in the current directory, simply attach that to a ticket on the |app| `bug tracker <http://calibre.kovidgoyal.net>`_.
This will create a :file:`my-changes` file in the current directory,
simply attach that to a ticket on the |app| `bug tracker <http://calibre.kovidgoyal.net/newticket>`_.
If you plan to do a lot of development on |app|, then the best method is to create a
`Launchpad <http://launchpad.net>`_ account. Once you have the account, you can create your own
branch in which you do |app| development. To do that go to `Launchpad code <https://code.launchpad.net>`_ and click
"Register a branch" (choose a branch type of "Hosted"). Once the branch is setup you can associate it
with the code you checked out in the previous step running the following command in any directory
in the |app| code you checked out::
`Launchpad <http://launchpad.net>`_ account. Once you have the account, you can use it to register
your bzr branch created by the `bzr branch` command above with the |app| project. First run the
following command to tell bzr about your launchpad account::
bzr push <URL of your launchpad branch>
bzr launchpad-login your_launchpad_username
This will host your branch on launchpad. Now go to `calibre@Launchapd <http://code.launchpad.net/calibre>`_ and register
your branch with the |app| project. Now whenever you commit changes to your branch with the command::
Now, you have to setup SSH access to Launchpad. First create an SSH public/private keypair. Then upload
the public key to Launchpad by going to your Launchpad account page. Instructions for setting up the
private key in bzr are at http://bazaar-vcs.org/Bzr_and_SSH. Now you can upload your branch to the |app|
project in Launchapd by following the instructions at https://help.launchpad.net/Code/UploadingABranch.
Now whenever you commit changes to your branch with the command::
bzr commit -m "Comment describing your change"
I can merge it directly from you branch into the main |app| source tree. You should also subscribe to the |app|
developers mailing list `calibre-devs <https://launchpad.net/~calibre-devs>`_. Before making major changes, you should
discuss them on the mailing list to ensure that the changes will be accepted once you're done.
discuss them on the mailing list or the #calibre IRC channel on Freenode to ensure that the changes will be accepted once you're done.
Windows development environment
---------------------------------

View File

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n"
"PO-Revision-Date: 2009-10-20 01:13+0000\n"
"POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-29 20:45+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:08+0000\n"
"X-Launchpad-Export-Date: 2009-10-30 08:26+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -52,7 +52,7 @@ msgstr "لا يفعل شيءً"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
@ -106,13 +106,13 @@ msgstr "لا يفعل شيءً"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876
@ -314,31 +314,31 @@ msgstr ""
msgid "This profile is intended for the Amazon Kindle DX."
msgstr "هذا الطور يستخدم مع Amazon Kindle DX"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:29
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
msgid "Installed plugins"
msgstr "ملحقات مثبتة"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
msgid "Mapping for filetype plugins"
msgstr "تعيين لملحقات أنواع الملفات"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
msgid "Local plugin customization"
msgstr "تخصيص الملحقات المحلية"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins"
msgstr "ملحقات معطلة"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:74
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75
msgid "No valid plugin found in "
msgstr "لا يجد ملحق صالح "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:232
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233
msgid "Initialization of plugin %s failed with traceback:"
msgstr "فشل استهلال الملحق %s مع اقتفاء الأثر:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid ""
" %prog options\n"
"\n"
@ -346,29 +346,29 @@ msgid ""
" "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:368
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:369
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "إضافة ملحق يتخصيص مسار إلى ملف zip الذي يحتويه."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:370
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:371
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "حذف الملحق المخصص عن طريق اسمه. لا يؤثر على الملحقات المضمنة"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid ""
"Customize plugin. Specify name of plugin and customization string separated "
"by a comma."
msgstr "تخصيص الملحق حدد اسم الملحق وسلسلة التخصيص وفرقهما بفاصلة."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:374
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375
msgid "List all installed plugins"
msgstr "قائمة كل الملحقات المثبتة"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:376
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377
msgid "Enable the named plugin"
msgstr "تمكين الملحق المسمى"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:378
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379
msgid "Disable the named plugin"
msgstr "تعطيل الملحق المسمى"
@ -547,7 +547,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "لا توجد مساحة كافية في بطاقة التخزين"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1120,7 +1120,7 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:111
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:"
@ -1658,7 +1658,7 @@ msgid ""
"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover"
msgstr "الغلاف"
@ -1781,7 +1781,7 @@ msgstr ""
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:38
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39
msgid "%s format books are not supported"
msgstr "الكتب بتهيئة %s ليست مدعومة"
@ -2079,7 +2079,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid ""
"Speciy the compression level to use. Scale 1 - 10. 1 being the lowest "
"Specify the compression level to use. Scale 1 - 10. 1 being the lowest "
"compression but the fastest and 10 being the highest compression but the "
"slowest."
msgstr ""
@ -2340,7 +2340,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44
@ -2453,16 +2453,17 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:474
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:487
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2541,20 +2542,46 @@ msgstr ""
msgid "&Inline TOC"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15
msgid "Look & Feel"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Font rescaling wizard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17
msgid "Control the look and feel of the output"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid ""
"<p>This wizard will help you choose an appropriate font size key for your "
"needs. Just enter the base font size of the input document and then enter an "
"input font size. The wizard will display what font size it will be mapped "
"to, by the font rescaling algorithm. You can adjust the algorithm by "
"adjusting the output base font size and font key below. When you find values "
"suitable for you, click OK.</p>\n"
"<p>By default, if the output base font size is zero and/or no font size key "
"is specified, calibre will use the values from the current Output Profile. "
"</p>\n"
"<p>See the <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">User Manual</a> for a discussion of how font size rescaling "
"works.</p>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:89
msgid "Base &font size:"
msgstr "حجم الخط& الأساسي:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "&Output document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109
msgid "&Base font size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108
msgid "Font size &key:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2565,43 +2592,75 @@ msgstr "حجم الخط& الأساسي:"
msgid " pt"
msgstr " pt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:91
msgid "Line &height:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107
msgid "Use &default values"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:93
msgid "Remove &spacing between paragraphs"
msgstr "حذف الفراغات& بين الفقرات"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:94
msgid "No text &justification"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108
msgid "&Input document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:95
msgid "&Linearize tables"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
msgid "&Font size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:96
msgid "&Transliterate unicode characters to ASCII."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113
msgid " will map to size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97
msgid "Font size &key:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114
msgid "0.0 pt"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98
msgid "Input character &encoding"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16
msgid "Look & Feel"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
msgid "&Disable font size rescaling"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18
msgid "Control the look and feel of the output"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
msgid "Base &font size:"
msgstr "حجم الخط& الأساسي:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102
msgid "Line &height:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104
msgid "Remove &spacing between paragraphs"
msgstr "حذف الفراغات& بين الفقرات"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105
msgid "No text &justification"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106
msgid "&Linearize tables"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107
msgid "&Transliterate unicode characters to ASCII."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Input character &encoding:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "&Disable font size rescaling"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111
msgid "Insert &blank line"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112
msgid "Wizard to help you choose an appropriate font size key"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114
msgid "Extra &CSS"
msgstr ""
@ -3314,9 +3373,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:696
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats"
msgstr ""
@ -3353,30 +3412,30 @@ msgstr ""
msgid "Sent news to"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730
msgid "Sending news to device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:780
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782
msgid "Sending books to device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found. Convert the book(s) to a format supported by your device first."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:866
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868
msgid "No space on device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid ""
"<p>Cannot upload books to device there is no more free space available "
msgstr ""
@ -3509,127 +3568,127 @@ msgstr ""
msgid "new email address"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:795
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr "خطأ"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
msgid "Failed to install command line tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
msgid "Command line tools installed"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
msgid "Command line tools installed in"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
msgid ""
"If you move calibre.app, you have to re-install the command line tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522
msgid "No valid plugin path"
msgstr "مسار الملحق غير صالح"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
msgid "%s is not a valid plugin path"
msgstr "%s ليس مسار لملحق صالح"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
msgid "Choose plugin"
msgstr "إختيار الملحق"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538
msgid "Plugin cannot be disabled"
msgstr "لا يمكن تعطيل الملحق"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
msgid "The plugin: %s cannot be disabled"
msgstr "الملحق: %s لا يمكن تعطيله"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548
msgid "Plugin not customizable"
msgstr "لا يمكن تخصيص الملحق"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
msgid "Plugin: %s does not need customization"
msgstr "الملحق: %s لا يحتاج التخصيص"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573
msgid "Customize %s"
msgstr "تخصيص %s"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583
msgid "Cannot remove builtin plugin"
msgstr "لم يمكن حذف الملحق المضمن"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:586
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr " لا يمكن حذفه. هذا ملحق مضمن في البرنامج. حاول تعطيله بدلاً من حذفه."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617
msgid "Error log:"
msgstr "سجل الأخطاء:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624
msgid "Access log:"
msgstr "سجل النفاذ:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server"
msgstr "فشل في تشغيل خادم المحتوى"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:686
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:684
msgid "Invalid size"
msgstr "حجم غير صالح"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:687
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:685
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:739
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737
msgid "Invalid database location "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
msgid "<br>Must be a directory."
msgstr "<br>يجب أن يكون دليل."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742
msgid "Invalid database location.<br>Cannot write to "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:776
msgid "Checking database integrity"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:796
msgid "Failed to check database integrity"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:803
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:801
msgid "Some inconsistencies found"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802
msgid ""
"The following books had formats listed in the database that are not actually "
"available. The entries for the formats have been removed. You should check "
@ -3727,240 +3786,240 @@ msgstr ""
msgid "&Saving books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences"
msgstr "التفضيلات"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
msgid "Browse for the new database location"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:475
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
msgid "Show notification when &new version is available"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:476
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
msgid "Default network &timeout:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:477
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
msgid " seconds"
msgstr " ثانية"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:479
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
msgid "Choose &language (requires restart):"
msgstr "إختر ال&لغة (يحتاج إعادة تشغيل):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:480
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
msgid "Normal"
msgstr "عادي"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:481
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
msgid "High"
msgstr "مرتفع"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:482
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
msgid "Low"
msgstr "منخفض"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:483
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
msgid "Job &priority:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:484
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
msgid "Preferred &output format:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:485
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
msgid "Preferred &input format order:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
msgid "Use &Roman numerals for series number"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
msgid "Enable system &tray icon (needs restart)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
msgid "Show &notifications in system tray"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
msgid "Show cover &browser in a separate window (needs restart)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
msgid "Search as you type"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
msgid "Automatically send downloaded &news to ebook reader"
msgstr "إرسال الأخبار& التي تم تنزيلها آلياً إلى قارئ الكتب الإلكترونية"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
msgid "&Delete news from library when it is automatically sent to reader"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
msgid "Toolbar"
msgstr "شريط الأدوات"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
msgid "Large"
msgstr "كبير"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
msgid "Medium"
msgstr "متوسط"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
msgid "Small"
msgstr "صغير"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
msgid "&Button size in toolbar"
msgstr "&حجم الأزرار على شريط الأدوات"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
msgid "Show &text in toolbar buttons"
msgstr "إظهار النص& على أزرار شريط الأدوات"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
msgid "Select visible &columns in library view"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
msgid "Use internal &viewer for:"
msgstr "استخدم المستعرض& الداخلي في:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
msgid "Add an email address to which to send books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
msgid "&Add email"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
msgid "Make &default"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
msgid "&Remove email"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
msgid "calibre can send your books to you (or your reader) by email"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
msgid "&Check database integrity"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
msgid "&Install command line tools"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
msgid "Open calibre &configuration directory"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
msgid ""
"calibre contains a network server that allows you to access your book "
"collection using a browser from anywhere in the world. Any changes to the "
"settings will only take effect after a server restart."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
msgid "Server &port:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr "&اسم المستخدم:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr "&كلمة السرّ"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
msgid ""
"If you leave the password blank, anyone will be able to access your book "
"collection using the web interface."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
msgid "Max. &cover size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password"
msgstr "إظهار& كلمة السرّ"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
msgid "Max. &OPDS items per query:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
msgid "&Start Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
msgid "St&op Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
msgid "&Test Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
msgid "Run server &automatically on startup"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
msgid "View &server logs"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"<p>Remember to leave calibre running as the server only runs as long as "
@ -3971,33 +4030,33 @@ msgid ""
"the IP address of the computer calibre is running on."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins "
"it uses."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
msgid "Enable/&Disable plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
msgid "&Customize plugin"
msgstr "ت&خصيص الملحق"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
msgid "&Remove plugin"
msgstr "&حذف الملحق"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
msgid "Add new plugin"
msgstr "إضافة ملحق جديد"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
msgid "Plugin &file:"
msgstr "&ملف الملحق:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
msgid "&Add"
msgstr "&إضافة"
@ -4338,28 +4397,36 @@ msgstr ""
msgid "Aborting..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:155
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117
msgid "Need username and password"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
msgid "You must provide a username and/or password to use this news source."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "Created by: "
msgstr "أنشأه: "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:162
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176
msgid "Last downloaded: never"
msgstr "آخر تنزيل: لم ينزّل من قبل"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "Last downloaded"
msgstr "آخر تنزيل"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr "جدولة تنزيل الأخبار"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:202
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
msgid "Add a custom news source"
msgstr ""
@ -5647,7 +5714,7 @@ msgstr ""
msgid "No matches found for this book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71
msgid "Search"
msgstr "بحث"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n"
"PO-Revision-Date: 2009-10-20 01:10+0000\n"
"POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-29 20:46+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n"
"X-Launchpad-Export-Date: 2009-10-30 08:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@ -53,7 +53,7 @@ msgstr "Mach absolut garnichts"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
@ -107,13 +107,13 @@ msgstr "Mach absolut garnichts"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876
@ -332,31 +332,31 @@ msgstr ""
msgid "This profile is intended for the Amazon Kindle DX."
msgstr "Dieses Profil ist für den Amazon Kindle DX bestimmt."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:29
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
msgid "Installed plugins"
msgstr "Installierte Plugins"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
msgid "Mapping for filetype plugins"
msgstr "Mapping für Dateityp Plugins"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
msgid "Local plugin customization"
msgstr "Lokale Plugin Anpassung"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins"
msgstr "Ausgeschaltene Plugins"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:74
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75
msgid "No valid plugin found in "
msgstr "Kein gültiges Plugin gefunden in "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:232
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233
msgid "Initialization of plugin %s failed with traceback:"
msgstr "Staren des Plugins %s schlug fehl. Traceback:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid ""
" %prog options\n"
"\n"
@ -368,19 +368,19 @@ msgstr ""
" Calibre anpassen durch das Laden externer Plugins.\n"
" "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:368
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:369
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr ""
"Plugin hinzufügen durch die Angabe des Pfads zur ZIP Datei, die das Plugin "
"enthält."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:370
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:371
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr ""
"Anpassbares Plugin entfernen. Dies hat keinen Einfluss auf festinstallierte "
"Plugins"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid ""
"Customize plugin. Specify name of plugin and customization string separated "
"by a comma."
@ -388,15 +388,15 @@ msgstr ""
"Plugin anpassen. Geben Sie den Namen des Pugins und die Anpassung durch ein "
"Komma getrennt an."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:374
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375
msgid "List all installed plugins"
msgstr "Installierte Plugins auflisten"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:376
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377
msgid "Enable the named plugin"
msgstr "Gewähltes Plugin einschalten"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:378
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379
msgid "Disable the named plugin"
msgstr "Gewähltes Plugin ausschalten"
@ -577,7 +577,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "Nicht genügend freier Speicherplatz auf der Speicherkarte"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1320,7 +1320,7 @@ msgstr ""
"aus."
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:111
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:"
@ -1937,7 +1937,7 @@ msgstr ""
"Umschlagbild des Buches mit der angegebenen ISBN von LibraryThing.com "
"abrufen\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover"
msgstr "Umschlagbild"
@ -2063,7 +2063,7 @@ msgstr "Hilfreich bei der Fehlersuche."
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "Benutzung: ebook-convert INFILE OUTFILE [OPTIONS..]"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:38
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39
msgid "%s format books are not supported"
msgstr "Bücher im %s Format werden nicht unterstützt"
@ -2441,13 +2441,18 @@ msgstr ""
msgid ""
"Specify the character encoding of the output document. The default is utf-8."
msgstr ""
"Geben Sie die Zeichenkodierung für das Ausgabe Dokument an. Die "
"Voreinstellung ist utf-8."
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid ""
"Speciy the compression level to use. Scale 1 - 10. 1 being the lowest "
"Specify the compression level to use. Scale 1 - 10. 1 being the lowest "
"compression but the fastest and 10 being the highest compression but the "
"slowest."
msgstr ""
"Geben Sie die Kompressionsstärke auf einer Skala von 1 - 10 an. 1 bedeutet "
"wenig komprimiert, dafür aber schneller, und 10 bedeutet höchstkomprimiert, "
"dafür aber langsamer."
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32
msgid ""
@ -2735,7 +2740,7 @@ msgstr "Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44
@ -2853,16 +2858,17 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:474
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:487
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2945,20 +2951,60 @@ msgstr "FB2 Ausgabe"
msgid "&Inline TOC"
msgstr "M&itwachsendes Inhaltsverzeichnis"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15
msgid "Look & Feel"
msgstr "Layout"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Font rescaling wizard"
msgstr "Schriftskalierungs-Assistent"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17
msgid "Control the look and feel of the output"
msgstr "Kontrolle des Layouts der Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid ""
"<p>This wizard will help you choose an appropriate font size key for your "
"needs. Just enter the base font size of the input document and then enter an "
"input font size. The wizard will display what font size it will be mapped "
"to, by the font rescaling algorithm. You can adjust the algorithm by "
"adjusting the output base font size and font key below. When you find values "
"suitable for you, click OK.</p>\n"
"<p>By default, if the output base font size is zero and/or no font size key "
"is specified, calibre will use the values from the current Output Profile. "
"</p>\n"
"<p>See the <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">User Manual</a> for a discussion of how font size rescaling "
"works.</p>"
msgstr ""
"<p>Dieser Assistent hilft, die richtige Schriftgröße für Ihre Bedürfnisse zu "
"wählen. Geben Sie die Basis-Schriftgröße des Eingabe Dokuments an und geben "
"eine Eingabe Schriftgröße an. Der Assistent zeigt durch den "
"Schriftskalierungs-Algorithmus an, auf welche Schriftgröße sie abgebildet "
"wird. Sie können den Algorithmus anpassen, indem Sie die Ausgabe Basis-"
"Schriftgröße und den Schriftschlüssel unten verändern. Wenn die Werte für "
"Sie passend sind, klicken Sie auf OK.</p>\n"
"<p>Voreingestellt wird Calibre, falls die Ausgabe Basis-Schriftgröße gleich "
"null ist und/oder keine Schriftgrößenschlüssel angegeben wird, die Werte des "
"aktuellen Ausgabe Profils verwenden. </p>\n"
"<p>Sehen Sie sich das englischsprachige <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">Benutzerhandbuch</a> für eine Diskussion, wie die Schriftgrößen-"
"Skalierung funktioniert, an.</p>"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:89
msgid "Base &font size:"
msgstr "Ausgangsschrift&größe:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "&Output document"
msgstr "Ausgabe D&okument"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109
msgid "&Base font size:"
msgstr "&Basis-Schriftgröße:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108
msgid "Font size &key:"
msgstr "Schrift&größenschlüssel:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2969,43 +3015,77 @@ msgstr "Ausgangsschrift&größe:"
msgid " pt"
msgstr " Punkt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107
msgid "Use &default values"
msgstr "Voreingestellte Werte verwen&den"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108
msgid "&Input document"
msgstr "E&ingabe Dokument"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
msgid "&Font size: "
msgstr "Schri&ftgröße: "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113
msgid " will map to size: "
msgstr " wird abgebildet auf Größe: "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114
msgid "0.0 pt"
msgstr "0.0 pt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16
msgid "Look & Feel"
msgstr "Layout"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18
msgid "Control the look and feel of the output"
msgstr "Kontrolle des Layouts der Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
msgid "Base &font size:"
msgstr "Ausgangsschrift&größe:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102
msgid "Line &height:"
msgstr "Zeilen&höhe:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104
msgid "Remove &spacing between paragraphs"
msgstr "&Abstand zwischen Paragrafen entfernen"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105
msgid "No text &justification"
msgstr "Kein &Blocksatz"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106
msgid "&Linearize tables"
msgstr "Tabellen &linearisieren"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107
msgid "&Transliterate unicode characters to ASCII."
msgstr "Unicode Zeichen in ASCII umse&tzen."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97
msgid "Font size &key:"
msgstr "Schrift&größenschlüssel:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Input character &encoding:"
msgstr "Eingabe Z&eichenkodierung:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98
msgid "Input character &encoding"
msgstr "Zeichenkodi&erung der Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "&Disable font size rescaling"
msgstr "Schriftgrößen&skalierung ausschalten"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111
msgid "Insert &blank line"
msgstr "&Leerzeile einfügen"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112
msgid "Wizard to help you choose an appropriate font size key"
msgstr ""
"Assistent, der Sie bei der Auswahl des richtigen Schriftgrößen-Schlüssels "
"unterstützt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114
msgid "Extra &CSS"
msgstr "Extra &CSS"
@ -3745,9 +3825,9 @@ msgstr "Sende eMail an"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:696
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats"
msgstr "Keine geeigneten Formate"
@ -3786,21 +3866,21 @@ msgstr "Im Anhang ist"
msgid "Sent news to"
msgstr "Nachrichten senden an"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
"Die folgenden Bücher vor dem Laden auf das Gerät automatisch konvertieren?"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730
msgid "Sending news to device."
msgstr "Sende Nachrichten an das Gerät."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:780
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782
msgid "Sending books to device."
msgstr "Sende Bücher an das Gerät."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found. Convert the book(s) to a format supported by your device first."
@ -3809,11 +3889,11 @@ msgstr ""
"fehlen. Konvertieren Sie die Bücher zuerst in ein von Ihrem Gerät "
"unterstütztes Format."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:866
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868
msgid "No space on device"
msgstr "Gerätespeicher voll"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid ""
"<p>Cannot upload books to device there is no more free space available "
msgstr ""
@ -3954,132 +4034,132 @@ msgstr ""
msgid "new email address"
msgstr "Neue eMail Adresse"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:795
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr "Fehler"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
msgid "Failed to install command line tools."
msgstr "Die Installation der Befehlszeilen-Tools schlug fehl."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
msgid "Command line tools installed"
msgstr "Kommandozeilen-Tools installiert"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
msgid "Command line tools installed in"
msgstr "Kommandozeilen-Tools installiert in"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
msgid ""
"If you move calibre.app, you have to re-install the command line tools."
msgstr ""
"Wenn Sie Calibre.app verschieben, müssen Sie die Befehlszeilen-Tools neu "
"installieren."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522
msgid "No valid plugin path"
msgstr "Kein gültiger Plugin Pfad"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
msgid "%s is not a valid plugin path"
msgstr "%s ist kein gültiger Plugin Pfad"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
msgid "Choose plugin"
msgstr "Plugin wählen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538
msgid "Plugin cannot be disabled"
msgstr "Plugin kann nicht ausgeschaltet werden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
msgid "The plugin: %s cannot be disabled"
msgstr "Das Plugin: %s kann nicht ausgeschaltet werden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548
msgid "Plugin not customizable"
msgstr "Plugin nicht anpassbar"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
msgid "Plugin: %s does not need customization"
msgstr "Plugin: %s bedarf keines Anpassens"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573
msgid "Customize %s"
msgstr "Anpassen von %s"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583
msgid "Cannot remove builtin plugin"
msgstr "Kann festinstalliertes Plugin nicht entfernen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:586
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr ""
" kann nicht entfernt werden, da es ein festinstalliertes Plugin ist. "
"Versuchen Sie, es auszuschalten."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617
msgid "Error log:"
msgstr "Fehler Log:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624
msgid "Access log:"
msgstr "Zugriffs-Protokolldatei:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server"
msgstr "Content Server konnte nicht gestartet werden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books"
msgstr "Speicherort für Bücher wählen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:686
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:684
msgid "Invalid size"
msgstr "Ungültige Größe"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:687
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:685
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr ""
"Die Größe %s ist ungültig. Sie muss der Form BreitexHöhe entsprechen."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location"
msgstr "Ortsangabe der Datenbank ungültig"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:739
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737
msgid "Invalid database location "
msgstr "Ortsangabe der Datenbank ungültig "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
msgid "<br>Must be a directory."
msgstr "<br>Muss ein Verzeichnis sein."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742
msgid "Invalid database location.<br>Cannot write to "
msgstr "Ortsangabe der Datenbank ungültig.<br>Speichern nicht möglich "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:776
msgid "Checking database integrity"
msgstr "Überprüfe Vollständigkeit der Datenbank"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:796
msgid "Failed to check database integrity"
msgstr "Überprüfung der Vollständigkeit der Datenbank schlug fehl"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:803
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:801
msgid "Some inconsistencies found"
msgstr "Einige Inkonsistenzen gefunden."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802
msgid ""
"The following books had formats listed in the database that are not actually "
"available. The entries for the formats have been removed. You should check "
@ -4192,13 +4272,13 @@ msgstr "Pfade in K&leinschreibung umwandeln"
msgid "&Saving books"
msgstr "Bücher &speichern"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences"
msgstr "Einstellungen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)"
@ -4207,19 +4287,19 @@ msgstr ""
"sortiert gespeichert und die Metadaten werden in der Datei metadata.db "
"gespeichert)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
msgid "Browse for the new database location"
msgstr "Zu einem neuen Ort der Datenbank wechseln"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:475
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
msgid "Show notification when &new version is available"
msgstr "Benachrichtigung anzeigen, wenn &neue Version verfügbar ist"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:476
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
msgid "Default network &timeout:"
msgstr "Voreinstellung für Zei&tüberschreitung bei Netzwerkverbindungen:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:477
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)"
@ -4227,147 +4307,147 @@ msgstr ""
"Voreinstellung der Zeitüberschreitung für Netzwerkabrufe festsetzen (Gilt "
"immer dann, wenn aus dem Internet Informationen abgerufen werden sollen)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
msgid " seconds"
msgstr " Sekunden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:479
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
msgid "Choose &language (requires restart):"
msgstr "Sprache wäh&len (erfordert Neustart):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:480
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
msgid "Normal"
msgstr "Normal"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:481
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
msgid "High"
msgstr "Hoch"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:482
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
msgid "Low"
msgstr "Niedrig"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:483
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
msgid "Job &priority:"
msgstr "Auftrags&priorität:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:484
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
msgid "Preferred &output format:"
msgstr "Bev&orzugtes Ausgabeformat:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:485
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
msgid "Preferred &input format order:"
msgstr "Bevorzugte Reihenfolge des E&ingabe Formats:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
msgid "Use &Roman numerals for series number"
msgstr "&Römische Ziffern für Reihen Nummerierung verwenden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
msgid "Enable system &tray icon (needs restart)"
msgstr ""
"Symbol im Sys&tembereich der Kontrollleiste aktivieren (erfordert Neustart)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
msgid "Show &notifications in system tray"
msgstr "Be&nachrichtigungen im Systembereich der Kontrollleiste anzeigen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
msgid "Show cover &browser in a separate window (needs restart)"
msgstr "Zeige Cover-Ansicht in einem eigenen Fenster (erfordert Neustart)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
msgid "Search as you type"
msgstr "Suchen während der Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
msgid "Automatically send downloaded &news to ebook reader"
msgstr "Geladene &Nachrichten automatisch an das Gerät senden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
msgid "&Delete news from library when it is automatically sent to reader"
msgstr ""
"Nachrichten nach der automatischen Übertragung auf das Gerät aus der "
"Bibliothek &löschen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr ""
"A&nzahl der anzuzeigenden Umschlagbilder in der Cover-Ansicht (erfordert "
"Neustart):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
msgid "Toolbar"
msgstr "Symbolleiste"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
msgid "Large"
msgstr "Groß"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
msgid "Medium"
msgstr "Mittel"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
msgid "Small"
msgstr "Klein"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
msgid "&Button size in toolbar"
msgstr "&Größe der Schaltflächen in der Symbolleiste"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
msgid "Show &text in toolbar buttons"
msgstr "Zeige &Text in Schaltflächen der Symbolleiste"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
msgid "Select visible &columns in library view"
msgstr "Si&chtbare Spalten in Bibliothek-Ansicht wählen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
msgid "Use internal &viewer for:"
msgstr "Internen &Viewer verwenden für:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
msgid "Add an email address to which to send books"
msgstr "Eine eMail Adresse hinzufügen, an die die Bücher gesendet werden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
msgid "&Add email"
msgstr "eM&ail hinzufügen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
msgid "Make &default"
msgstr "Als Voreinstellung verwenden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
msgid "&Remove email"
msgstr "eMail entfe&rnen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
msgid "calibre can send your books to you (or your reader) by email"
msgstr ""
"Calibre kann Ihre Bücher an Sie (oder Ihr Lesegerät) per eMail versenden"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr ""
"&Maximale Anzahl der Arbeitsprozesse in der Warteschlange (erfordert "
"Neustart):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
msgid "&Check database integrity"
msgstr "Vollständigkeit der &Datenbank überprüfen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
msgid "&Install command line tools"
msgstr "Kommandozeilen-Tools &installieren"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
msgid "Open calibre &configuration directory"
msgstr ""
msgstr "&Calibre Einstellungsverzeichnis öffnen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
msgid ""
"calibre contains a network server that allows you to access your book "
"collection using a browser from anywhere in the world. Any changes to the "
@ -4377,25 +4457,25 @@ msgstr ""
"von überall aus mit Hilfe eines Browsers auf Ihre Büchersammlung zugreifen "
"können. Einstellungsänderungen erfolgen erst nach einem Neustart des Servers."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
msgid "Server &port:"
msgstr "Server &Port:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr "Ben&utzername:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr "&Passwort:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
msgid ""
"If you leave the password blank, anyone will be able to access your book "
"collection using the web interface."
@ -4403,7 +4483,7 @@ msgstr ""
"Wenn Sie das Kennwort leer lassen, kann jeder auf Ihre Büchersammlung über "
"das Webinterface zugreifen."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. "
@ -4411,41 +4491,41 @@ msgstr ""
"Maximale Größe (BreitexHöhe) der angezeigten Umschlagbilder. Größere "
"Umschlagbilder werden verkleinert. "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
msgid "Max. &cover size:"
msgstr "Maximale Ums&chlagbild-Größe:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password"
msgstr "Pa&sswort anzeigen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
msgid "Max. &OPDS items per query:"
msgstr "Maximale &ODPS Einträge pro Anfrage:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
msgid "&Start Server"
msgstr "Server &starten"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
msgid "St&op Server"
msgstr "Server st&oppen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
msgid "&Test Server"
msgstr "Server &testen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
msgid "Run server &automatically on startup"
msgstr "Server &automatisch beim Starten hochfahren"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
msgid "View &server logs"
msgstr "Server Logs ansehen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"<p>Remember to leave calibre running as the server only runs as long as "
@ -4463,7 +4543,7 @@ msgstr ""
"vollständige Servername oder die IP Adresse des Rechners sein, auf dem "
"Calibre läuft."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins "
"it uses."
@ -4471,27 +4551,27 @@ msgstr ""
"Hier können Sie das Verhalten von Calibrie anpassen, indem sie festlegen, "
"welche Plugins verwendet werden."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
msgid "Enable/&Disable plugin"
msgstr "Plugin &ein-/ausschalten"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
msgid "&Customize plugin"
msgstr "Plugin &anpassen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
msgid "&Remove plugin"
msgstr "Plugin entfe&rnen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
msgid "Add new plugin"
msgstr "Neues Plugin hinzufügen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
msgid "Plugin &file:"
msgstr "&Plugin Datei:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
msgid "&Add"
msgstr "&Hinzufügen"
@ -4851,28 +4931,38 @@ msgstr "Passwort erforderlich"
msgid "Aborting..."
msgstr "Abbruch läuft ..."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:155
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117
msgid "Need username and password"
msgstr "Benötige Benutzernamen und Passwort"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
msgid "You must provide a username and/or password to use this news source."
msgstr ""
"Sie müssen einen Benutzernamen und/oder ein Passwort für die Verwendung "
"dieser Nachrichtenquelle angeben."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "Created by: "
msgstr "Erstellt von: "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:162
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176
msgid "Last downloaded: never"
msgstr "Zuletzt geladen: niemals"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191
msgid "%d days, %d hours and %d minutes ago"
msgstr "Vor %d Tagen, %d Stunden und %d Minuten"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "Last downloaded"
msgstr "Zuletzt geladen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr "Zeitgesteuerter Nachrichten Download"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:202
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
msgid "Add a custom news source"
msgstr "Neue individuelle Nachrichtenquelle hinzufügen"
@ -6269,7 +6359,7 @@ msgstr "Buch hat weder Titel noch ISBN"
msgid "No matches found for this book"
msgstr "Keine Treffer für dieses Buch"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71
msgid "Search"
msgstr "Suche"
@ -7781,6 +7871,7 @@ msgstr "Nachrichtenquelle unbekannt"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507
msgid "The \"%s\" recipe needs a username and password."
msgstr ""
"Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590
msgid "Download finished"
@ -9952,6 +10043,9 @@ msgstr "Zeige detailierte Ausgabeinformation. Hilfreich zur Fehlersuche."
#~ msgid "Portuguese"
#~ msgstr "Portugiesisch"
#~ msgid "Input character &encoding"
#~ msgstr "Zeichenkodi&erung der Eingabe"
#~ msgid ""
#~ "Average line length for line breaking if the HTML is from a previous partial "
#~ "conversion of a PDF file."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6,14 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre 0.4.22\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n"
"PO-Revision-Date: 2009-10-20 01:11+0000\n"
"POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-29 20:47+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:08+0000\n"
"X-Launchpad-Export-Date: 2009-10-30 08:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@ -52,7 +52,7 @@ msgstr "Ne fait strictement rien"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
@ -106,13 +106,13 @@ msgstr "Ne fait strictement rien"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876
@ -331,31 +331,31 @@ msgstr ""
msgid "This profile is intended for the Amazon Kindle DX."
msgstr "Ce profil est prévu pour le Kindle DX d'Amazon."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:29
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
msgid "Installed plugins"
msgstr "Plugins installés"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
msgid "Mapping for filetype plugins"
msgstr "Liaisons pour les plugins d'import/export"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
msgid "Local plugin customization"
msgstr "Personnalisation des plugins locaux"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins"
msgstr "Plugins désactivés."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:74
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75
msgid "No valid plugin found in "
msgstr "Absence de plugin valide "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:232
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233
msgid "Initialization of plugin %s failed with traceback:"
msgstr "L'initialisation du plugin %s a échoué en laissant une trace:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid ""
" %prog options\n"
"\n"
@ -367,18 +367,18 @@ msgstr ""
" Personnaliser Calibre en chargeant des modules additionnels externes.\n"
" "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:368
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:369
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr ""
"Ajouter un plugin en précisant le chemin vers le fichier zip qui le contient."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:370
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:371
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr ""
"Suppression d'un plugin personnalisé d'après son nom. Ceci n'a pas d'effet "
"sur les plugins intégrés."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid ""
"Customize plugin. Specify name of plugin and customization string separated "
"by a comma."
@ -386,15 +386,15 @@ msgstr ""
"Personnaliser le plugin. Spécifier le nom du plugin et la chaîne de "
"personnalisation séparés par une virgule."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:374
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375
msgid "List all installed plugins"
msgstr "Lister tous les plugins installés"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:376
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377
msgid "Enable the named plugin"
msgstr "Activer le plugin nommé"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:378
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379
msgid "Disable the named plugin"
msgstr "Désactive le plugin nommé"
@ -575,7 +575,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "Espace insuffisant sur la carte mémoire"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -894,6 +894,8 @@ msgid ""
"algorithm uses these sizes to intelligently rescale fonts. The default is to "
"use a mapping based on the output profile you chose."
msgstr ""
"es these sizes to intelligently rescale fonts. The default is to use a "
"mapping based on the output profile you chose."
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151
msgid "Disable all rescaling of font sizes."
@ -1306,7 +1308,7 @@ msgstr ""
"les auteurs, etc. Cette option désactive la génération de cette couverture."
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:111
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:"
@ -1919,7 +1921,7 @@ msgstr ""
"Chercher une image de couverture du livre identifié par ISBN sur "
"LibraryThing.com\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover"
msgstr "Couverture"
@ -2048,7 +2050,7 @@ msgstr "Utile pour déboguer"
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "Utilisation: ebook-convert FICHIERENTREE FICHIERSORTIE [OPTIONS..]"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:38
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39
msgid "%s format books are not supported"
msgstr "Les livres au format %s ne sont pas supportés"
@ -2416,7 +2418,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid ""
"Speciy the compression level to use. Scale 1 - 10. 1 being the lowest "
"Specify the compression level to use. Scale 1 - 10. 1 being the lowest "
"compression but the fastest and 10 being the highest compression but the "
"slowest."
msgstr ""
@ -2707,7 +2709,7 @@ msgstr "entrée"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44
@ -2825,16 +2827,17 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:474
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:487
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2916,20 +2919,46 @@ msgstr "Sortie FB2"
msgid "&Inline TOC"
msgstr "TDM intégrée"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15
msgid "Look & Feel"
msgstr "Présentation"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Font rescaling wizard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17
msgid "Control the look and feel of the output"
msgstr "Contrôler l'apparence de la sortie"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid ""
"<p>This wizard will help you choose an appropriate font size key for your "
"needs. Just enter the base font size of the input document and then enter an "
"input font size. The wizard will display what font size it will be mapped "
"to, by the font rescaling algorithm. You can adjust the algorithm by "
"adjusting the output base font size and font key below. When you find values "
"suitable for you, click OK.</p>\n"
"<p>By default, if the output base font size is zero and/or no font size key "
"is specified, calibre will use the values from the current Output Profile. "
"</p>\n"
"<p>See the <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">User Manual</a> for a discussion of how font size rescaling "
"works.</p>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:89
msgid "Base &font size:"
msgstr "Taille de &police par défaut :"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "&Output document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109
msgid "&Base font size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108
msgid "Font size &key:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2940,43 +2969,75 @@ msgstr "Taille de &police par défaut :"
msgid " pt"
msgstr " pt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107
msgid "Use &default values"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108
msgid "&Input document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
msgid "&Font size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113
msgid " will map to size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114
msgid "0.0 pt"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16
msgid "Look & Feel"
msgstr "Présentation"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18
msgid "Control the look and feel of the output"
msgstr "Contrôler l'apparence de la sortie"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
msgid "Base &font size:"
msgstr "Taille de &police par défaut :"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102
msgid "Line &height:"
msgstr "&Hauteur de la ligne:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104
msgid "Remove &spacing between paragraphs"
msgstr "&Supprimer l'interligne entre les paragraphes"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105
msgid "No text &justification"
msgstr "Pas de &justification de texte"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106
msgid "&Linearize tables"
msgstr "&Linéariser les tables"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107
msgid "&Transliterate unicode characters to ASCII."
msgstr "Translittérer les caractères unicode vers ASCII."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97
msgid "Font size &key:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Input character &encoding:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98
msgid "Input character &encoding"
msgstr "&Encodage des caractères en entrée"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "&Disable font size rescaling"
msgstr "&Désactiver le redimensionnement de la taille de fonte"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111
msgid "Insert &blank line"
msgstr "Insérer une ligne blanche"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112
msgid "Wizard to help you choose an appropriate font size key"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114
msgid "Extra &CSS"
msgstr "&CSS complémentaire"
@ -3715,9 +3776,9 @@ msgstr "Envoi d'un email à"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:696
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats"
msgstr "Pas de format convenable"
@ -3758,22 +3819,22 @@ msgstr "Le fichier attaché est"
msgid "Sent news to"
msgstr "Envoi des News vers"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?"
msgstr ""
"Convertir automatiquement les livres suivants avant de les télécharger dans "
"l'appareil ?"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730
msgid "Sending news to device."
msgstr "Envoi les News vers l'appareil."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:780
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782
msgid "Sending books to device."
msgstr "Envoie les livres dans l'appareil."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found. Convert the book(s) to a format supported by your device first."
@ -3782,11 +3843,11 @@ msgstr ""
"convenable n'a été trouvé. Convertissez avant le(s) livre(s) vers un format "
"supporté par votre appareil."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:866
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868
msgid "No space on device"
msgstr "Le lecteur électronique n'a plus d'espace mémoire disponible"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid ""
"<p>Cannot upload books to device there is no more free space available "
msgstr ""
@ -3928,131 +3989,131 @@ msgstr ""
msgid "new email address"
msgstr "Nouvelle adresse email"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:795
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr "Erreur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
msgid "Failed to install command line tools."
msgstr "L'installation des outils en ligne de commande a échouée."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
msgid "Command line tools installed"
msgstr "Outils en ligne de commande installés."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
msgid "Command line tools installed in"
msgstr "Outils en ligne de commande installés dans"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
msgid ""
"If you move calibre.app, you have to re-install the command line tools."
msgstr ""
"Si vous déplacez calibre.app, vous devez réinstaller les outils en ligne de "
"commande."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522
msgid "No valid plugin path"
msgstr "Pas de répertoire valide pour les plugins"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
msgid "%s is not a valid plugin path"
msgstr "%s n'est pas un répertoire valide pour les plugins"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
msgid "Choose plugin"
msgstr "Choisir le plugin"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538
msgid "Plugin cannot be disabled"
msgstr "Le plugin ne peut pas être désactivé"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
msgid "The plugin: %s cannot be disabled"
msgstr "Le plugin %s ne peut pas être désactivé"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548
msgid "Plugin not customizable"
msgstr "Le plugin ne peut pas être personnalisé"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
msgid "Plugin: %s does not need customization"
msgstr "Le plugin %s ne peut pas être personnalisé"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573
msgid "Customize %s"
msgstr "Personnalise %s"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583
msgid "Cannot remove builtin plugin"
msgstr "Impossible de supprimer les plugins natifs"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:586
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr ""
" ne peut pas être retiré. C'est un plugin natif. Essayer plutôt de le "
"désactiver"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617
msgid "Error log:"
msgstr "Journal d'erreur:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624
msgid "Access log:"
msgstr "Journal des accès:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server"
msgstr "A échoué lors du démarrage du serveur de contenu"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books"
msgstr "Sélectionner l'emplacement pour les livres"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:686
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:684
msgid "Invalid size"
msgstr "Taille invalide"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:687
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:685
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "La taille %s est invalide. Doit être au format largeurxhauteur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location"
msgstr "Chemin de la database invalide"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:739
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737
msgid "Invalid database location "
msgstr "Chemin de la database invalide "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
msgid "<br>Must be a directory."
msgstr "<br>Doit être un répertoire."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742
msgid "Invalid database location.<br>Cannot write to "
msgstr "Chemin de la database invalide.<br>Erreur en écriture "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:776
msgid "Checking database integrity"
msgstr "Vérifier l'intégrité de la base de données"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:796
msgid "Failed to check database integrity"
msgstr "La vérification de l'intégrité de la base de données a échouée"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:803
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:801
msgid "Some inconsistencies found"
msgstr "Des incohérences ont été trouvées"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802
msgid ""
"The following books had formats listed in the database that are not actually "
"available. The entries for the formats have been removed. You should check "
@ -4165,13 +4226,13 @@ msgstr "Changer les chemins en miniscu&le"
msgid "&Saving books"
msgstr "&Sauvegarde de livres"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences"
msgstr "Préférences"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)"
@ -4179,19 +4240,19 @@ msgstr ""
"&Localisation des ebooks (Les ebooks sont stockés dans les répertoires triés "
"par auteur et les métadonnées sont stockées dans le fichier metadata.db)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
msgid "Browse for the new database location"
msgstr "Choisir un nouvel emplacement pour la base de données"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:475
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
msgid "Show notification when &new version is available"
msgstr "Envoyer une notification quand une nouvelle version est disponible."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:476
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
msgid "Default network &timeout:"
msgstr "&Timeout par défaut pour les connexions réseau :"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:477
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)"
@ -4199,149 +4260,149 @@ msgstr ""
"Indiquer le timeout par défaut pour les recherches réseau (c-à-d le temps "
"utilisé pour aller rechercher l'information par internet)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
msgid " seconds"
msgstr " secondes"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:479
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
msgid "Choose &language (requires restart):"
msgstr "Choisir la &langue (nécessite un redémarrage):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:480
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
msgid "Normal"
msgstr "Normale"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:481
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
msgid "High"
msgstr "Haute"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:482
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
msgid "Low"
msgstr "Basse"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:483
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
msgid "Job &priority:"
msgstr "&Priorité du travail:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:484
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
msgid "Preferred &output format:"
msgstr "Format de &sortie préféré:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:485
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
msgid "Preferred &input format order:"
msgstr "Ordre préféré pour le format d'entrée"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
msgid "Use &Roman numerals for series number"
msgstr "Utiliser les chiffres &romains pour les numéros de séries"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
msgid "Enable system &tray icon (needs restart)"
msgstr ""
"Ac&tiver l'affichage dans la zone de notification (redémarrage nécessaire)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
msgid "Show &notifications in system tray"
msgstr "Afficher les alertes dans la zone de &notification"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
msgid "Show cover &browser in a separate window (needs restart)"
msgstr ""
"Afficher la navigation par couverture dans une fenêtre séparée (redémarrage "
"nécessaire)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
msgid "Search as you type"
msgstr "Rechercher lors de la saisie"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
msgid "Automatically send downloaded &news to ebook reader"
msgstr "Envoyer automatiquement les i&nformations vers le lecteur d'ebook"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
msgid "&Delete news from library when it is automatically sent to reader"
msgstr ""
"Supprimer les News de la librairie lorsque l'envoi est automatique vers "
"l'appareil"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr ""
"&Nombre de couvertures à afficher dans le mode navigation (nécessite un "
"redémarrage):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
msgid "Toolbar"
msgstr "Barre d'outils"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
msgid "Large"
msgstr "Large"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
msgid "Medium"
msgstr "Moyen"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
msgid "Small"
msgstr "Petit"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
msgid "&Button size in toolbar"
msgstr "Taille des boutons dans la barre d'outils"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
msgid "Show &text in toolbar buttons"
msgstr "Afficher le &texte pour les boutons de la barre d'outils"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
msgid "Select visible &columns in library view"
msgstr "Sélectionner les &colonnes visibles dans la vue librairie"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
msgid "Use internal &viewer for:"
msgstr "Utiliser l'afficheur interne pour:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
msgid "Add an email address to which to send books"
msgstr "Ajouter une adresse email où les livres seront envoyés"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
msgid "&Add email"
msgstr "&Ajouter un email"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
msgid "Make &default"
msgstr "Par &défaut"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
msgid "&Remove email"
msgstr "&Supprimer un email"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
msgid "calibre can send your books to you (or your reader) by email"
msgstr ""
"calibre peut envoyer vos livres vers vous (ou votre lecteur) par email"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr ""
"Nombre &maximum de processus de travail en attente (nécessite un "
"redémarrage):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
msgid "&Check database integrity"
msgstr "Vérifier l'intégrité de la base de données"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
msgid "&Install command line tools"
msgstr "&Installer les outils en ligne de commande"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
msgid "Open calibre &configuration directory"
msgstr ""
msgstr "Ouvrir le répertoire de &configuration de calibre"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
msgid ""
"calibre contains a network server that allows you to access your book "
"collection using a browser from anywhere in the world. Any changes to the "
@ -4352,25 +4413,25 @@ msgstr ""
"monde. Toutes modifications des paramètres ne prendra effet qu'après un "
"redémarrage du serveur."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
msgid "Server &port:"
msgstr "&Port du serveur:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr "Nom d'&utilisateur:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr "Mot de &passe :"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
msgid ""
"If you leave the password blank, anyone will be able to access your book "
"collection using the web interface."
@ -4378,7 +4439,7 @@ msgstr ""
"Si vous laisser le mot de passe à vide, tout le monde pourra accéder à votre "
"collection de livres en utilisant une interface web."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. "
@ -4386,41 +4447,41 @@ msgstr ""
"Taille maximale (largeurxhauteur) pour l'affichage des couvertures. Les "
"couvertures plus larges sont redimensionnées. "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
msgid "Max. &cover size:"
msgstr "Taille max. de la couverture:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password"
msgstr "&Montrer le mot de passe"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
msgid "Max. &OPDS items per query:"
msgstr "Nombre d'articles OPDS max. par requête:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
msgid "&Start Server"
msgstr "Démarrer le &Serveur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
msgid "St&op Server"
msgstr "Arrêter le serveur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
msgid "&Test Server"
msgstr "&Tester le serveur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
msgid "Run server &automatically on startup"
msgstr "Lancer &automatiquement le serveur au démarrage"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
msgid "View &server logs"
msgstr "Afficher les logs du &serveur"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"<p>Remember to leave calibre running as the server only runs as long as "
@ -4437,7 +4498,7 @@ msgstr ""
"Stanza de votre iPhone. Ici nomhote doit être le nom d'hôte complet ou "
"l'adresse IP de l'ordinateur sur lequel calibre est démarré."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins "
"it uses."
@ -4445,27 +4506,27 @@ msgstr ""
"Ici vous pouvez personnaliser le comportement de Calibre en choisissant les "
"plugins que vous souhaitez utiliser."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
msgid "Enable/&Disable plugin"
msgstr "Activer/Désactiver le plugin"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
msgid "&Customize plugin"
msgstr "Personnaliser le plugin"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
msgid "&Remove plugin"
msgstr "Supprimer le plugin"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
msgid "Add new plugin"
msgstr "Ajouter un nouveau plugin"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
msgid "Plugin &file:"
msgstr "&Fichier plugin:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
msgid "&Add"
msgstr "&Ajouter"
@ -4829,28 +4890,38 @@ msgstr "Mot de passe nécessaire"
msgid "Aborting..."
msgstr "Abandon..."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:155
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117
msgid "Need username and password"
msgstr "Nécessite un nom d'utilisateur et un mot de passe"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
msgid "You must provide a username and/or password to use this news source."
msgstr ""
"Vous devez fournir un nom d'utilisateur et un mode passe pour utiliser cette "
"source de News."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "Created by: "
msgstr "Créé par: "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:162
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176
msgid "Last downloaded: never"
msgstr "Dernier téléchargé: jamais"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191
msgid "%d days, %d hours and %d minutes ago"
msgstr "il y a %d jours, %d heures et %d minutes"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "Last downloaded"
msgstr "Dernier téléchargé"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr "Planifier le téléchargement des News"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:202
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
msgid "Add a custom news source"
msgstr "Ajouter une source personnalisée de News"
@ -6244,7 +6315,7 @@ msgstr "Le livre n'a ni titre ni ISBN"
msgid "No matches found for this book"
msgstr "Aucune correspondance pour ce livre"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71
msgid "Search"
msgstr "Trouver"
@ -7755,6 +7826,7 @@ msgstr "Source de News inconnue"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507
msgid "The \"%s\" recipe needs a username and password."
msgstr ""
"La recette \"%s\" a besoin d'un nom d'utilisateur et d'un mot de passe."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590
msgid "Download finished"
@ -9868,6 +9940,9 @@ msgstr "Affiche des informations détaillées. Utile pour le débogage"
#~ msgid "Starting conversion of %d books"
#~ msgstr "Commence la conversion de %d livres"
#~ msgid "Input character &encoding"
#~ msgstr "&Encodage des caractères en entrée"
#~ msgid "Catalan"
#~ msgstr "Catalan"

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

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n"
"POT-Creation-Date: 2009-10-21 01:30+0000\n"
"PO-Revision-Date: 2009-10-20 01:11+0000\n"
"Last-Translator: Bartosz Kaszubowski <gosimek@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n"
"X-Launchpad-Export-Date: 2009-10-21 07:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -52,7 +52,7 @@ msgstr "Ta opcja nic nie zmienia"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
@ -112,7 +112,7 @@ msgstr "Ta opcja nic nie zmienia"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876
@ -556,7 +556,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "Na karcie pamięci jest niewystarczająca ilość wolnego miejsca"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1706,7 +1706,7 @@ msgid ""
"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover"
msgstr "Okładka"
@ -1833,7 +1833,7 @@ msgstr "Użyteczne dla debugowania."
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:38
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39
msgid "%s format books are not supported"
msgstr "książki formatu %s nie są wspierane"
@ -4407,28 +4407,36 @@ msgstr "Wymagane hasło"
msgid "Aborting..."
msgstr "Przerywanie..."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:155
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117
msgid "Need username and password"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
msgid "You must provide a username and/or password to use this news source."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "Created by: "
msgstr "Stworzone przez: "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:162
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176
msgid "Last downloaded: never"
msgstr "Ostatnio pobrano: nigdy"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191
msgid "%d days, %d hours and %d minutes ago"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "Last downloaded"
msgstr "Ostatnio pobrano"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr "Zaplanuj pobieranie aktualności"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:202
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
msgid "Add a custom news source"
msgstr "Dodaj własne źródło aktualności"
@ -5734,7 +5742,7 @@ msgstr "Książka nie ma, ani tytułu, ani kodu ISBN"
msgid "No matches found for this book"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71
msgid "Search"
msgstr "Szukaj"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n"
"PO-Revision-Date: 2009-10-20 03:49+0000\n"
"Last-Translator: Kyle WANG <waxaca@163.com>\n"
"POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-29 20:48+0000\n"
"Last-Translator: irvenwindson <Yuexi.Chen@gmail.com>\n"
"Language-Team: Simplified Chinese <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n"
"X-Launchpad-Export-Date: 2009-10-30 08:28+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -52,7 +52,7 @@ msgstr "不做任何处理"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:870
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:872
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29
@ -106,13 +106,13 @@ msgstr "不做任何处理"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:774
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:431
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876
@ -312,31 +312,31 @@ msgstr "该配置文件适用 SONY PRS 产品线,如 500/505/700 型号等,
msgid "This profile is intended for the Amazon Kindle DX."
msgstr "该配置文件适用 Amazon Kindle DX。"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:29
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
msgid "Installed plugins"
msgstr "已安装插件"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:30
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
msgid "Mapping for filetype plugins"
msgstr "关联插件文件类型"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
msgid "Local plugin customization"
msgstr "本地插件定制"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins"
msgstr "禁用插件"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:74
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:75
msgid "No valid plugin found in "
msgstr "无有效插件位于 "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:232
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:233
msgid "Initialization of plugin %s failed with traceback:"
msgstr "插件 %s 初始化返回失败回溯:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid ""
" %prog options\n"
"\n"
@ -348,29 +348,29 @@ msgstr ""
" 通过加载外部插件定制 Calibre。\n"
" "
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:368
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:369
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "添加插件,指定包含其 zip 文件的路径。"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:370
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:371
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "按名称移除自定义插件(对内置插件无效)。"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid ""
"Customize plugin. Specify name of plugin and customization string separated "
"by a comma."
msgstr "定制插件,指定插件名和自定制字符串,使用逗号分隔。"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:374
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:375
msgid "List all installed plugins"
msgstr "列出全部已装插件"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:376
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:377
msgid "Enable the named plugin"
msgstr "启用该名称插件"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:378
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:379
msgid "Disable the named plugin"
msgstr "禁用该名称插件"
@ -549,7 +549,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "存储卡上的空间不足"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:218
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1148,7 +1148,7 @@ msgid ""
msgstr "正常情况下,如果输入文件没有封面,您也未指定,会生成一个默认封面带有标题、作者等信息。选定此选项可以禁用生成默认封面。"
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:111
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:"
@ -1711,7 +1711,7 @@ msgstr ""
"\n"
"通过书籍的ISBN从LibraryThing.com获得书籍的封面图片\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1057
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover"
msgstr "封面"
@ -1834,7 +1834,7 @@ msgstr "有利调试。"
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "用法: ebook-convert INFILE OUTFILE [OPTIONS..]"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:38
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39
msgid "%s format books are not supported"
msgstr "不支持 %s 格式电子书"
@ -2177,10 +2177,10 @@ msgstr "指定输出文档的字符集编码。默认为 utf-8。"
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid ""
"Speciy the compression level to use. Scale 1 - 10. 1 being the lowest "
"Specify the compression level to use. Scale 1 - 10. 1 being the lowest "
"compression but the fastest and 10 being the highest compression but the "
"slowest."
msgstr "指定使用的压缩水平。从1到10。1压缩率最低但最快10压缩率最高但最慢。"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32
msgid ""
@ -2441,7 +2441,7 @@ msgstr "输入"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:88
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44
@ -2554,16 +2554,17 @@ msgstr "选择文件夹放置调试输出。如果您选择文件夹,将在期
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:113
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:474
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:487
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2642,20 +2643,46 @@ msgstr "FB2 输出"
msgid "&Inline TOC"
msgstr "内置目录(&I)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15
msgid "Look & Feel"
msgstr "外观"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Font rescaling wizard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17
msgid "Control the look and feel of the output"
msgstr "控制输出文件外观"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid ""
"<p>This wizard will help you choose an appropriate font size key for your "
"needs. Just enter the base font size of the input document and then enter an "
"input font size. The wizard will display what font size it will be mapped "
"to, by the font rescaling algorithm. You can adjust the algorithm by "
"adjusting the output base font size and font key below. When you find values "
"suitable for you, click OK.</p>\n"
"<p>By default, if the output base font size is zero and/or no font size key "
"is specified, calibre will use the values from the current Output Profile. "
"</p>\n"
"<p>See the <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">User Manual</a> for a discussion of how font size rescaling "
"works.</p>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:89
msgid "Base &font size:"
msgstr "基准字体大小(&f):"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "&Output document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:92
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109
msgid "&Base font size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:108
msgid "Font size &key:"
msgstr "字体大小 Key(&K)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:103
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2666,43 +2693,75 @@ msgstr "基准字体大小(&f):"
msgid " pt"
msgstr " pt"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:91
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107
msgid "Use &default values"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108
msgid "&Input document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
msgid "&Font size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113
msgid " will map to size: "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114
msgid "0.0 pt"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16
msgid "Look & Feel"
msgstr "外观"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18
msgid "Control the look and feel of the output"
msgstr "控制输出文件外观"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
msgid "Base &font size:"
msgstr "基准字体大小(&f):"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:102
msgid "Line &height:"
msgstr "行高(&H)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:104
msgid "Remove &spacing between paragraphs"
msgstr "删除段间空行(&S)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:94
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:105
msgid "No text &justification"
msgstr "关闭文字调整(&j)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:95
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:106
msgid "&Linearize tables"
msgstr "线性化重整表格(&L)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:107
msgid "&Transliterate unicode characters to ASCII."
msgstr "将unicode字符转换为ASCII字符."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97
msgid "Font size &key:"
msgstr "字体大小 Key(&K)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Input character &encoding:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98
msgid "Input character &encoding"
msgstr "输入字符编码(&E)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "&Disable font size rescaling"
msgstr "关闭文字大小缩放(&D)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:100
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:111
msgid "Insert &blank line"
msgstr "插入空行(&B)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:101
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:112
msgid "Wizard to help you choose an appropriate font size key"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:114
msgid "Extra &CSS"
msgstr "额外CSS样式(&C)"
@ -3423,9 +3482,9 @@ msgstr "正在发送邮件至"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:696
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats"
msgstr "无合适格式"
@ -3462,30 +3521,30 @@ msgstr "附加"
msgid "Sent news to"
msgstr "将新闻发送到"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?"
msgstr "上传到设备之前自动转换如下书籍?"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:730
msgid "Sending news to device."
msgstr "将新闻传送到设备."
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:780
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782
msgid "Sending books to device."
msgstr "传送书籍到设备。"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid ""
"Could not upload the following books to the device, as no suitable formats "
"were found. Convert the book(s) to a format supported by your device first."
msgstr "无法上传下列书籍到设备,未找到何时格式。请先将书籍转换为设备支持的格式。"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:866
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:868
msgid "No space on device"
msgstr "设备存储空间不足"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid ""
"<p>Cannot upload books to device there is no more free space available "
msgstr "<p>由于设备存储空间不足无法将书籍传送到设备上 "
@ -3620,127 +3679,127 @@ msgstr "如选中, 下载的新闻奖自动被发送到 <br>该邮件地址 (使
msgid "new email address"
msgstr "新邮件地址"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:795
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr "错误"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466
msgid "Failed to install command line tools."
msgstr "安装命令行工具失败。"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
msgid "Command line tools installed"
msgstr "命令行工具已安装"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
msgid "Command line tools installed in"
msgstr "命令行工具安装于"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471
msgid ""
"If you move calibre.app, you have to re-install the command line tools."
msgstr "如果您移动 calibre.app您必须重新安装命令行工具。"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522
msgid "No valid plugin path"
msgstr "不合法的插件路径"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523
msgid "%s is not a valid plugin path"
msgstr "%s 不是合法的插件路径"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
msgid "Choose plugin"
msgstr "选择插件"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538
msgid "Plugin cannot be disabled"
msgstr "该插件不能被禁用"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539
msgid "The plugin: %s cannot be disabled"
msgstr "插件: %s 不能被禁用"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548
msgid "Plugin not customizable"
msgstr "无法个性化插件"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549
msgid "Plugin: %s does not need customization"
msgstr "插件: %s 无需个性化设置"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573
msgid "Customize %s"
msgstr "个性化 %s"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583
msgid "Cannot remove builtin plugin"
msgstr "不能移除内置插件"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:586
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr " 无法移除. 该插件是内置插件. 您可以尝试禁用它而非移除."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:619
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617
msgid "Error log:"
msgstr "错误日志:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624
msgid "Access log:"
msgstr "访问日志:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:654
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:652
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server"
msgstr "无法启动内容服务器"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books"
msgstr "选择书籍位置"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:686
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:684
msgid "Invalid size"
msgstr "无效的尺寸"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:687
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:685
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "尺寸大小 %s 不合法. 合法的格式为 宽度x高度"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location"
msgstr "不合法的数据库路径"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:739
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737
msgid "Invalid database location "
msgstr "不合法的数据库路径 "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738
msgid "<br>Must be a directory."
msgstr "<br>必须是文件目录."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742
msgid "Invalid database location.<br>Cannot write to "
msgstr "不合法的数据库路径.<br>无法写入到 "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:776
msgid "Checking database integrity"
msgstr "检查数据库完整性"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:796
msgid "Failed to check database integrity"
msgstr "检查数据库完整性失败"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:803
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:801
msgid "Some inconsistencies found"
msgstr "找到部分不一致"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:802
msgid ""
"The following books had formats listed in the database that are not actually "
"available. The entries for the formats have been removed. You should check "
@ -3840,240 +3899,240 @@ msgstr "将路径名改为小写(&L)"
msgid "&Saving books"
msgstr "保存书籍(&S)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:471
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences"
msgstr "首选项"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)"
msgstr "电子书位置(&L)(电子书籍按作者排序存储在文件目录中,元数据存储在 metadata.db"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
msgid "Browse for the new database location"
msgstr "选择新的数据库路径"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:475
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
msgid "Show notification when &new version is available"
msgstr "新版程序可用时提示(&N)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:476
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
msgid "Default network &timeout:"
msgstr "默认网络超时(&t)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:477
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)"
msgstr "设置网络访问的默认超时限制 (例如在从互联网获取信息时的超时)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:478
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
msgid " seconds"
msgstr " 秒"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:479
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
msgid "Choose &language (requires restart):"
msgstr "选择界面语言, 需重启(&l):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:480
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
msgid "Normal"
msgstr "普通"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:481
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
msgid "High"
msgstr "高"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:482
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
msgid "Low"
msgstr "低"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:483
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
msgid "Job &priority:"
msgstr "进程优先级(&p):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:484
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503
msgid "Preferred &output format:"
msgstr "首选输出格式(&O)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:485
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
msgid "Preferred &input format order:"
msgstr "首选输入格式顺序(&I)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
msgid "Use &Roman numerals for series number"
msgstr "使用罗马数字作为序列数(&R)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
msgid "Enable system &tray icon (needs restart)"
msgstr "显示系统托盘图标, 需重启生效(&t)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
msgid "Show &notifications in system tray"
msgstr "在系统托盘除显示和提醒"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
msgid "Show cover &browser in a separate window (needs restart)"
msgstr "在单独的窗口显示封面浏览界面, 需重启生效(&b)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
msgid "Search as you type"
msgstr "即时搜索"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
msgid "Automatically send downloaded &news to ebook reader"
msgstr "自动将下载的新闻传输到电子书阅读器上(&n)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
msgid "&Delete news from library when it is automatically sent to reader"
msgstr "在将新闻传送到设备上后从书库中删除(&D)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
msgid "&Number of covers to show in browse mode (needs restart):"
msgstr "浏览模式下显示的书籍封面数量(&N), 须重启生效;"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
msgid "Toolbar"
msgstr "工具栏"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
msgid "Large"
msgstr "大"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
msgid "Medium"
msgstr "中"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
msgid "Small"
msgstr "小"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
msgid "&Button size in toolbar"
msgstr "工具栏按钮大小(&B)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
msgid "Show &text in toolbar buttons"
msgstr "在工具栏显示按钮文字(&t)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
msgid "Select visible &columns in library view"
msgstr "选择在书库界面中显示的新系列(&c)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
msgid "Use internal &viewer for:"
msgstr "使用内部浏览器显示"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
msgid "Add an email address to which to send books"
msgstr "将电子邮件地址添加到书籍发送目的"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
msgid "&Add email"
msgstr "添加邮件地址(&A)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
msgid "Make &default"
msgstr "设为默认(&d)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
msgid "&Remove email"
msgstr "删除邮件地址(&R)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
msgid "calibre can send your books to you (or your reader) by email"
msgstr "Calibre 可以通过电子邮件将电子书籍发送给您或您的设备"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr "等待中的工作进程最大值(需要重启)(&M)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
msgid "&Check database integrity"
msgstr "检查数据库完整性(&C)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
msgid "&Install command line tools"
msgstr "安装命令行工具(&I)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
msgid "Open calibre &configuration directory"
msgstr "打开 calibre 配置目录(&C)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
msgid ""
"calibre contains a network server that allows you to access your book "
"collection using a browser from anywhere in the world. Any changes to the "
"settings will only take effect after a server restart."
msgstr "Calibre 带有一个网络服务器程序,您可以由此使用浏览器访问你的书库。对服务器程序配置的修改需要重启服务器程序生效。"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
msgid "Server &port:"
msgstr "服务器端口(&p):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr "用户名(&U):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr "密码(&P):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
msgid ""
"If you leave the password blank, anyone will be able to access your book "
"collection using the web interface."
msgstr "如果您使用空密码将导致其他人可以从web界面访问您的书籍库."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. "
msgstr "显示书籍封面的最大尺寸(宽度x高度). 过大的封面将会被相应缩小. "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
msgid "Max. &cover size:"
msgstr "最大封面大小(&c):"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password"
msgstr "显示密码(&S)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
msgid "Max. &OPDS items per query:"
msgstr "每次请求最大 OPDS 项(&O)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
msgid "&Start Server"
msgstr "启动服务器(&S)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
msgid "St&op Server"
msgstr "停止服务器(&o)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
msgid "&Test Server"
msgstr "测试服务器(&T)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
msgid "Run server &automatically on startup"
msgstr "在系统启动时自动启动服务器(&a)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
msgid "View &server logs"
msgstr "查看服务器日志(&s)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"<p>Remember to leave calibre running as the server only runs as long as "
@ -4088,33 +4147,33 @@ msgstr ""
"http://myhostname:8080 作为新类目。此时 myhostname 应该为有效主机名,或者您 Calibre 程序所运行计算机的 IP "
"地址。"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins "
"it uses."
msgstr "从可以通过配置插件的启用与否来调整Calibre的功能特性."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
msgid "Enable/&Disable plugin"
msgstr "启用/禁用插件(&D)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
msgid "&Customize plugin"
msgstr "定制插件(&C)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
msgid "&Remove plugin"
msgstr "移除插件(&R)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
msgid "Add new plugin"
msgstr "添加插件"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
msgid "Plugin &file:"
msgstr "插件文件(&F)"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
msgid "&Add"
msgstr "添加(&A)"
@ -4457,28 +4516,36 @@ msgstr "需要密码"
msgid "Aborting..."
msgstr "正在中止..."
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:155
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:117
msgid "Need username and password"
msgstr "需要用户名和密码"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:118
msgid "You must provide a username and/or password to use this news source."
msgstr "您必须为该新闻源提供用户名和/或密码"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:169
msgid "Created by: "
msgstr "创建者: "
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:162
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:176
msgid "Last downloaded: never"
msgstr "最后下载:无"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:177
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:191
msgid "%d days, %d hours and %d minutes ago"
msgstr "%d 天 %d 小时 %d 分钟前"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193
msgid "Last downloaded"
msgstr "最后下载"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:199
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download"
msgstr "计划新闻下载"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:202
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216
msgid "Add a custom news source"
msgstr "添加自定义新闻源"
@ -5808,7 +5875,7 @@ msgstr "书籍既没有标题也没有 ISBN 编号"
msgid "No matches found for this book"
msgstr "未找到匹配此书信息"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:71
msgid "Search"
msgstr "搜索"
@ -7461,6 +7528,9 @@ msgstr "显示详细输出信息。有利调试"
#~ "conversion of a PDF file."
#~ msgstr "如果该HTML由PDF转换而来, 请指定平均行长度."
#~ msgid "Input character &encoding"
#~ msgstr "输入字符编码(&E)"
#~ msgid "&Header regular expression:"
#~ msgstr "页眉正则表达式(&H)"
@ -7505,3 +7575,9 @@ msgstr "显示详细输出信息。有利调试"
#~ msgid "Chinese"
#~ msgstr "中文"
#~ msgid ""
#~ "Speciy the compression level to use. Scale 1 - 10. 1 being the lowest "
#~ "compression but the fastest and 10 being the highest compression but the "
#~ "slowest."
#~ msgstr "指定使用的压缩水平。从1到10。1压缩率最低但最快10压缩率最高但最慢。"

View File

@ -65,6 +65,7 @@ def split(src):
def files_and_dirs(prefix, allowed_exts=[]):
prefix = os.path.expanduser(prefix)
for i in glob.iglob(prefix+'*'):
_, ext = os.path.splitext(i)
ext = ext.lower().replace('.', '')