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): class DailyTelegraph(BasicNewsRecipe):
title = u'Daily Telegraph' title = u'Daily Telegraph'
__author__ = u'AprilHare' __author__ = u'AprilHare'
language = 'en' language = 'en_AU'
description = u'News from down under' description = u'News from down under'
oldest_article = 2 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'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'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') (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) feeds[key].append(article)
ans = [(key, feeds[key]) for key in ans if feeds.has_key(key)] 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 return ans

View File

@ -10,57 +10,116 @@ from calibre.web.feeds.news import BasicNewsRecipe
class ElUniversal(BasicNewsRecipe): class ElUniversal(BasicNewsRecipe):
title = 'El Universal' title = 'El Universal'
__author__ = 'Darko Miletic' __author__ = 'Darko Miletic and Sujata Raman'
description = 'News from Mexico' description = 'News from Mexico'
oldest_article = 1 oldest_article = 1
max_articles_per_feed = 100 max_articles_per_feed = 100
publisher = 'El Universal' publisher = 'El Universal'
category = 'news, politics, Mexico' category = 'news, politics, Mexico'
no_stylesheets = True no_stylesheets = True
use_embedded_content = False use_embedded_content = False
encoding = 'cp1252' encoding = 'cp1252'
remove_javascript = True remove_javascript = True
language = 'es' language = 'es'
extra_css = '''
html2lrf_options = [ body{font-family:Arial,Helvetica,sans-serif; font-size:x-small;}
'--comment', description .geoGris30{font-family:Georgia,"Times New Roman",Times,serif; font-size:large; color:#003366; font-weight:bold;}
, '--category', category .arnegro16{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:small;}
, '--publisher', publisher .tbazull2{font-family:"trebuchet ms",Arial,Helvetica,sans-serif; color:#336699; font-size:xx-small;}
, '--ignore-tables' .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;}
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\nlinearize_tables=True' .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')] remove_tags = [
dict(name='table', attrs={'bgcolor':"#f5f5f5"}),
feeds = [ 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'Minuto por Minuto', u'http://www.eluniversal.com.mx/rss/universalmxm.xml' )
,(u'Mundo' , u'http://www.eluniversal.com.mx/rss/mundo.xml' ) ,(u'Mundo' , u'http://www.eluniversal.com.mx/rss/mundo.xml' )
,(u'Mexico' , u'http://www.eluniversal.com.mx/rss/mexico.xml' ) ,(u'Mexico' , u'http://www.eluniversal.com.mx/rss/mexico.xml' )
,(u'Estados' , u'http://www.eluniversal.com.mx/rss/estados.xml' ) ,(u'Estados' , u'http://www.eluniversal.com.mx/rss/estados.xml' )
,(u'Finanzas' , u'http://www.eluniversal.com.mx/rss/finanzas.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'Espectaculos' , u'http://www.eluniversal.com.mx/rss/espectaculos.xml' )
,(u'Cultura' , u'http://www.eluniversal.com.mx/rss/cultura.xml' ) ,(u'Cultura' , u'http://www.eluniversal.com.mx/rss/cultura.xml' )
,(u'Ciencia' , u'http://www.eluniversal.com.mx/rss/ciencia.xml' ) ,(u'Ciencia' , u'http://www.eluniversal.com.mx/rss/ciencia.xml' )
,(u'Computacion' , u'http://www.eluniversal.com.mx/rss/computo.xml' ) ,(u'Computacion' , u'http://www.eluniversal.com.mx/rss/computo.xml' )
,(u'Sociedad' , u'http://www.eluniversal.com.mx/rss/sociedad.xml' ) ,(u'Sociedad' , u'http://www.eluniversal.com.mx/rss/sociedad.xml' )
] ]
def print_version(self, url): # def print_version(self, url):
return url.replace('/notas/','/notas/vi_') # return url.replace('/notas/','/notas/vi_')
def preprocess_html(self, soup): 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">' 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) soup.head.insert(0,mtag)
for item in soup.findAll(style=True): for tag in soup.findAll(name='td',attrs={'class': 'arazul50'}):
del item['style'] tag.insert(0,"<h1>")
for item in soup.findAll(font=True): tag.insert(2,"</h1>")
del item['font']
for item in soup.findAll(face=True): return soup
del item['face']
for item in soup.findAll(helvetica=True): def postprocess_html(self, soup,first):
del item['helvetica']
return soup 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' encoding = 'utf-8'
language = 'en_IN' language = 'en_IN'
recursions = 1
extra_css = ''' extra_css = '''
body{font-family:Arial,Helvetica,sans-serif; font-size:xx-small;} 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; } .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;} .vaTextBold{font-family:Arial,Helvetica,sans-serif; font-size:x-small;font-weight:bold; color:#666666;}
''' '''
remove_tags = [ remove_tags = [
{'class':['tagListLabel','piped-taglist-string',]} {'class':['tagListLabel','piped-taglist-string','socialcontainer','social-wrapper',]},
{'id':['topSocialButtons']},
] ]
conversion_options = { 'linearize_tables' : True } 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>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os
from setup.installer import VMInstaller from setup.installer import VMInstaller
from setup import Command, installer_name from setup import Command
class Linux32(VMInstaller): class Linux32(VMInstaller):
@ -21,17 +20,12 @@ class Linux32(VMInstaller):
FREEZE_COMMAND = 'linux_freeze' FREEZE_COMMAND = 'linux_freeze'
class Linux64(Command): class Linux64(Linux32):
description = 'Build 64bit linux binary installer' description = 'Build 64bit linux binary installer'
VM_NAME = 'gentoo64_build'
sub_commands = ['linux_freeze'] VM = '/vmware/bin/gentoo64_build'
IS_64_BIT = True
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)
class Linux(Command): class Linux(Command):

View File

@ -2,7 +2,7 @@ __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
__appname__ = 'calibre' __appname__ = 'calibre'
__version__ = '0.6.19' __version__ = '0.6.20'
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>" __author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
import re 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.prs700.driver import PRS700
from calibre.devices.android.driver import ANDROID from calibre.devices.android.driver import ANDROID
from calibre.devices.eslick.driver import ESLICK from calibre.devices.eslick.driver import ESLICK
from calibre.devices.nuut2.driver import NUUT2
plugins = [HTML2ZIP] plugins = [HTML2ZIP]
plugins += [ plugins += [
@ -425,7 +426,8 @@ plugins += [
CYBOOK_OPUS, CYBOOK_OPUS,
COOL_ER, COOL_ER,
SHINEBOOK, SHINEBOOK,
ESLICK ESLICK,
NUUT2
] ]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
x.__name__.endswith('MetadataReader')] x.__name__.endswith('MetadataReader')]

View File

@ -157,6 +157,16 @@ def add_simple_plugin(path_to_plugin):
def main(args=sys.argv): def main(args=sys.argv):
from calibre.constants import debug from calibre.constants import debug
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) opts, args = option_parser().parse_args(args)
if opts.gui: if opts.gui:
from calibre.gui2.main import main from calibre.gui2.main import main
@ -164,13 +174,6 @@ def main(args=sys.argv):
elif opts.command: elif opts.command:
sys.argv = args[:1] sys.argv = args[:1]
exec opts.command 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: elif opts.debug_device_driver:
debug_device_driver() debug_device_driver()
elif opts.migrate: 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) page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
loop = QEventLoop() loop = QEventLoop()
renderer = HTMLRenderer(page, loop) renderer = HTMLRenderer(page, loop)
page.connect(page, SIGNAL('loadFinished(bool)'), renderer, page.connect(page, SIGNAL('loadFinished(bool)'), renderer,
Qt.QueuedConnection) Qt.QueuedConnection)
page.mainFrame().load(QUrl.fromLocalFile(path_to_html)) 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.constants import islinux
from calibre import unicode_path from calibre import unicode_path
from calibre.utils.localization import get_lang from calibre.utils.localization import get_lang
from calibre.utils.filenames import ascii_filename
class Link(object): class Link(object):
''' '''
@ -320,8 +321,8 @@ class HTMLInput(InputFormatPlugin):
oeb.logger.warn('Title not specified') oeb.logger.warn('Title not specified')
metadata.add('title', self.oeb.translate(__('Unknown'))) metadata.add('title', self.oeb.translate(__('Unknown')))
bookid = "urn:uuid:%s" % str(uuid.uuid4()) bookid = str(uuid.uuid4())
metadata.add('identifier', bookid, id='calibre-uuid') metadata.add('identifier', bookid, id='uuid_id', scheme='uuid')
for ident in metadata.identifier: for ident in metadata.identifier:
if 'id' in ident.attrib: if 'id' in ident.attrib:
self.oeb.uid = metadata.identifier[0] self.oeb.uid = metadata.identifier[0]
@ -333,9 +334,11 @@ class HTMLInput(InputFormatPlugin):
htmlfile_map = {} htmlfile_map = {}
for f in filelist: for f in filelist:
path = f.path path = f.path
print 111, path, repr(path), repr(os.path.dirname(path))
oeb.container = DirContainer(os.path.dirname(path), log) oeb.container = DirContainer(os.path.dirname(path), log)
bname = os.path.basename(path) 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 htmlfile_map[path] = href
item = oeb.manifest.add(id, href, 'text/html') item = oeb.manifest.add(id, href, 'text/html')
item.html_input_href = bname item.html_input_href = bname
@ -409,6 +412,9 @@ class HTMLInput(InputFormatPlugin):
link = os.path.abspath(link) link = os.path.abspath(link)
if not os.access(link, os.R_OK): if not os.access(link, os.R_OK):
return link_ return link_
if os.path.isdir(link):
self.log.warn(link_, 'is a link to a directory. Ignoring.')
return link_
if not islinux: if not islinux:
link = link.lower() link = link.lower()
if link not in self.added_resources: 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 SIGNAL, QPainter, QImage, QObject, Qt
from PyQt4.QtWebKit import QWebPage from PyQt4.QtWebKit import QWebPage
class HTMLTableRenderer(QObject): class HTMLTableRenderer(QObject):
def __init__(self, html, base_dir, width, height, dpi, factor): def __init__(self, html, base_dir, width, height, dpi, factor):
''' '''
`width, height`: page width and height in pixels `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) QObject.__init__(self)
self.app = None self.app = None
self.width, self.height, self.dpi = width, height, dpi self.width, self.height, self.dpi = width, height, dpi
self.base_dir = base_dir self.base_dir = base_dir
@ -30,10 +29,10 @@ class HTMLTableRenderer(QObject):
self.page = QWebPage() self.page = QWebPage()
self.connect(self.page, SIGNAL('loadFinished(bool)'), self.render_html) self.connect(self.page, SIGNAL('loadFinished(bool)'), self.render_html)
self.page.mainFrame().setTextSizeMultiplier(factor) self.page.mainFrame().setTextSizeMultiplier(factor)
self.page.mainFrame().setHtml(html, self.page.mainFrame().setHtml(html,
QUrl('file:'+os.path.abspath(self.base_dir))) QUrl('file:'+os.path.abspath(self.base_dir)))
def render_html(self, ok): def render_html(self, ok):
try: try:
if not ok: if not ok:
@ -61,7 +60,7 @@ class HTMLTableRenderer(QObject):
self.images.append((f, img.width(), img.height())) self.images.append((f, img.width(), img.height()))
finally: finally:
QApplication.quit() QApplication.quit()
def render_table(soup, table, css, base_dir, width, height, dpi, factor=1.0): def render_table(soup, table, css, base_dir, width, height, dpi, factor=1.0):
head = '' head = ''
for e in soup.findAll(['link', 'style']): 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) images, tdir = do_render(html, base_dir, width, height, dpi, factor)
atexit.register(shutil.rmtree, tdir) atexit.register(shutil.rmtree, tdir)
return images return images
def do_render(html, base_dir, width, height, dpi, factor): def do_render(html, base_dir, width, height, dpi, factor):
if QApplication.instance() is None: from calibre.gui2 import is_ok_to_use_qt
QApplication([]) if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
tr = HTMLTableRenderer(html, base_dir, width, height, dpi, factor) tr = HTMLTableRenderer(html, base_dir, width, height, dpi, factor)
tr.loop.exec_() 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', 'isbn', 'tags', 'cover_data', 'application_id', 'guide',
'manifest', 'spine', 'toc', 'cover', 'language', 'manifest', 'spine', 'toc', 'cover', 'language',
'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc', 'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc',
'pubdate', 'rights', 'publication_type'): 'pubdate', 'rights', 'publication_type', 'uuid'):
if hasattr(mi, attr): if hasattr(mi, attr):
setattr(ans, attr, getattr(mi, attr)) setattr(ans, attr, getattr(mi, attr))
@ -244,7 +244,7 @@ class MetaInformation(object):
'series', 'series_index', 'rating', 'isbn', 'language', 'series', 'series_index', 'rating', 'isbn', 'language',
'application_id', 'manifest', 'toc', 'spine', 'guide', 'cover', 'application_id', 'manifest', 'toc', 'spine', 'guide', 'cover',
'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate', 'book_producer', 'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate',
'rights', 'publication_type', 'rights', 'publication_type', 'uuid',
): ):
setattr(self, x, getattr(mi, x, None)) setattr(self, x, getattr(mi, x, None))
@ -264,7 +264,7 @@ class MetaInformation(object):
'isbn', 'application_id', 'manifest', 'spine', 'toc', 'isbn', 'application_id', 'manifest', 'spine', 'toc',
'cover', 'language', 'guide', 'book_producer', 'cover', 'language', 'guide', 'book_producer',
'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate', 'rights', 'timestamp', 'lccn', 'lcc', 'ddc', 'pubdate', 'rights',
'publication_type'): 'publication_type', 'uuid',):
if hasattr(mi, attr): if hasattr(mi, attr):
val = getattr(mi, attr) val = getattr(mi, attr)
if val is not None: if val is not None:

View File

@ -432,6 +432,9 @@ class OPF(object):
identifier_path = XPath('descendant::*[re:match(name(), "identifier", "i")]') identifier_path = XPath('descendant::*[re:match(name(), "identifier", "i")]')
application_id_path = XPath('descendant::*[re:match(name(), "identifier", "i") and '+ 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"))]') '(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_path = XPath('descendant::*[re:match(name(), "manifest", "i")]/*[re:match(name(), "item", "i")]')
manifest_ppath = XPath('descendant::*[re:match(name(), "manifest", "i")]') manifest_ppath = XPath('descendant::*[re:match(name(), "manifest", "i")]')
spine_path = XPath('descendant::*[re:match(name(), "spine", "i")]/*[re:match(name(), "itemref", "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) 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 @dynamic_property
def book_producer(self): def book_producer(self):
@ -977,6 +999,9 @@ def metadata_to_opf(mi, as_string=True):
if not mi.application_id: if not mi.application_id:
mi.application_id = str(uuid.uuid4()) mi.application_id = str(uuid.uuid4())
if not mi.uuid:
mi.uuid = str(uuid.uuid4())
if not mi.book_producer: if not mi.book_producer:
mi.book_producer = __appname__ + ' (%s) '%__version__ + \ mi.book_producer = __appname__ + ' (%s) '%__version__ + \
'[http://calibre-ebook.com]' '[http://calibre-ebook.com]'
@ -986,13 +1011,14 @@ def metadata_to_opf(mi, as_string=True):
root = etree.fromstring(textwrap.dedent( 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"> <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="%(a)s" id="%(a)s_id">%(id)s</dc:identifier>
<dc:identifier opf:scheme="uuid" id="uuid_id">%(uuid)s</dc:identifier>
</metadata> </metadata>
<guide/> <guide/>
</package> </package>
'''%dict(a=__appname__, id=mi.application_id))) '''%dict(a=__appname__, id=mi.application_id, uuid=mi.uuid)))
metadata = root[0] metadata = root[0]
guide = root[1] guide = root[1]
metadata[0].tail = '\n'+(' '*8) metadata[0].tail = '\n'+(' '*8)

View File

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

View File

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

View File

@ -80,12 +80,19 @@ class MergeMetadata(object):
def __call__(self, oeb, mi, opts): def __call__(self, oeb, mi, opts):
self.oeb, self.log = oeb, oeb.log self.oeb, self.log = oeb, oeb.log
m = self.oeb.metadata m = self.oeb.metadata
meta_info_to_oeb_metadata(mi, m, oeb.log)
self.log('Merging user specified metadata...') 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) cover_id = self.set_cover(mi, opts.prefer_metadata_cover)
m.clear('cover') m.clear('cover')
if cover_id is not None: if cover_id is not None:
m.add('cover', cover_id) 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): 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 QImage
from PyQt4.QtGui import QPainter from PyQt4.QtGui import QPainter
from PyQt4.QtSvg import QSvgRenderer from PyQt4.QtSvg import QSvgRenderer
from PyQt4.QtGui import QApplication
from calibre.ebooks.oeb.base import XHTML, XLINK from calibre.ebooks.oeb.base import XHTML, XLINK
from calibre.ebooks.oeb.base import SVG_MIME, PNG_MIME from calibre.ebooks.oeb.base import SVG_MIME, PNG_MIME
from calibre.ebooks.oeb.base import xml2str, xpath from calibre.ebooks.oeb.base import xml2str, xpath
@ -30,8 +29,9 @@ KEEP_ATTRS = set(['class', 'style', 'width', 'height', 'align'])
class SVGRasterizer(object): class SVGRasterizer(object):
def __init__(self): def __init__(self):
if QApplication.instance() is None: from calibre.gui2 import is_ok_to_use_qt
QApplication([]) if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
@classmethod @classmethod
def config(cls, cfg): def config(cls, cfg):

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -251,7 +251,7 @@ class %(classname)s(%(base_class)s):
def add_builtin_recipe(self): def add_builtin_recipe(self):
from calibre.web.feeds.recipes.collection import \ from calibre.web.feeds.recipes.collection import \
get_builtin_recipe_by_title, get_builtin_recipe_titles 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'), title, ok = QInputDialog.getItem(self, _('Pick recipe'), _('Pick the recipe to customize'),
@ -259,15 +259,15 @@ class %(classname)s(%(base_class)s):
if ok: if ok:
title = unicode(title) title = unicode(title)
profile = get_builtin_recipe_by_title(title) profile = get_builtin_recipe_by_title(title)
if self._model.has_title(title): if self._model.has_title(title):
if question_dialog(self, _('Replace recipe?'), if question_dialog(self, _('Replace recipe?'),
_('A custom recipe named %s already exists. Do you want to ' _('A custom recipe named %s already exists. Do you want to '
'replace it?')%title): 'replace it?')%title):
self._model.replace_by_title(title, profile) self._model.replace_by_title(title, profile)
else:
return
else: else:
return self.model.add(title, profile)
else:
self.model.add(title, profile)
self.clear() self.clear()
@ -314,8 +314,8 @@ class %(classname)s(%(base_class)s):
self.source_code.setText('') self.source_code.setText('')
if __name__ == '__main__': if __name__ == '__main__':
from PyQt4.Qt import QApplication from calibre.gui2 import is_ok_to_use_qt
QApplication([]) is_ok_to_use_qt()
from calibre.library.database2 import LibraryDatabase2 from calibre.library.database2 import LibraryDatabase2
from calibre.web.feeds.recipes.model import RecipeModel from calibre.web.feeds.recipes.model import RecipeModel
d=UserProfiles(None, RecipeModel(LibraryDatabase2('/home/kovid/documents/library'))) 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, \ from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \
QTimer, SIGNAL, QIcon, QDialog, QAbstractItemDelegate, QApplication, \ 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.server import Server
from calibre.utils.ipc.job import ParallelJob from calibre.utils.ipc.job import ParallelJob
@ -57,6 +57,28 @@ class JobManager(QAbstractTableModel):
else: else:
return QVariant(section+1) 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): def data(self, index, role):
try: try:
if role not in (Qt.DisplayRole, Qt.DecorationRole): 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, \ QModelIndex, QPixmap, QColor, QPainter, QMenu, QIcon, \
QToolButton, QDialog, QDesktopServices, QFileDialog, \ QToolButton, QDialog, QDesktopServices, QFileDialog, \
QSystemTrayIcon, QApplication, QKeySequence, QAction, \ QSystemTrayIcon, QApplication, QKeySequence, QAction, \
QMessageBox, QStackedLayout QMessageBox, QStackedLayout, QHelpEvent
from PyQt4.QtSvg import QSvgRenderer from PyQt4.QtSvg import QSvgRenderer
from calibre import prints, patheq from calibre import prints, patheq
@ -89,6 +89,18 @@ class Listener(Thread):
except: except:
pass 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): class Main(MainWindow, Ui_MainWindow, DeviceGUI):
'The main GUI' 'The main GUI'
@ -144,8 +156,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
self.device_connected = False self.device_connected = False
self.viewers = collections.deque() self.viewers = collections.deque()
self.content_server = None 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.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']: if not config['systray_icon']:
self.system_tray_icon.hide() self.system_tray_icon.hide()
else: else:

View File

@ -282,9 +282,10 @@ class StatusBar(QStatusBar):
if __name__ == '__main__': if __name__ == '__main__':
# Used to create the animated status icon # 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 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): def create_pixmaps(path, size=16, delta=20):
r = QSvgRenderer(path) r = QSvgRenderer(path)

View File

@ -10,7 +10,7 @@ from BeautifulSoup import BeautifulSoup, Tag
from PyQt4 import QtCore 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 QPrinter, QPrintPreviewDialog, QPrintDialog, QDialog, QMetaObject, Q_ARG
from PyQt4.QtWebKit import QWebView 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): class Printing(QObject):
def __init__(self, spine, preview): def __init__(self, spine, preview):
if QApplication.instance() is None: from calibre.gui2 import is_ok_to_use_qt
QApplication([]) if not is_ok_to_use_qt():
raise Exception('Not OK to use Qt')
QObject.__init__(self) QObject.__init__(self)
self.loop = QEventLoop() 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.ebooks.metadata.opf2 import OPFCreator, OPF
from calibre.utils.genshi.template import MarkupTemplate 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_TEMPLATE = '''\
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -26,6 +28,7 @@ XML_TEMPLATE = '''\
<py:for each="record in data"> <py:for each="record in data">
<record> <record>
<id>${record['id']}</id> <id>${record['id']}</id>
<uuid>${record['uuid']}</uuid>
<title>${record['title']}</title> <title>${record['title']}</title>
<authors sort="${record['author_sort']}"> <authors sort="${record['author_sort']}">
<py:for each="author in record['authors']"> <py:for each="author in record['authors']">
@ -71,7 +74,7 @@ STANZA_TEMPLATE='''\
<py:for each="record in data"> <py:for each="record in data">
<entry> <entry>
<title>${record['title']}</title> <title>${record['title']}</title>
<id>urn:calibre:${record['id']}</id> <id>urn:calibre:${record['uuid']}</id>
<author><name>${record['author_sort']}</name></author> <author><name>${record['author_sort']}</name></author>
<updated>${record['timestamp'].strftime('%Y-%m-%dT%H:%M:%SZ')}</updated> <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:')}" /> <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): if not set(fields).issubset(FIELDS):
parser.print_help() parser.print_help()
print print
print >>sys.stderr, _('Invalid fields. Available fields:'), ','.join(FIELDS) print >>sys.stderr, _('Invalid fields. Available fields:'), ','.join(sorted(FIELDS))
return 1 return 1
db = get_db(dbpath, opts) 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, 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, 'size':6, 'tags':7, 'comments':8, 'series':9, 'series_index':10,
'sort':11, 'author_sort':12, 'formats':13, 'isbn':14, 'path':15, '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())) INDEX_MAP = dict(zip(FIELD_MAP.values(), FIELD_MAP.keys()))
@ -439,6 +439,8 @@ class LibraryDatabase2(LibraryDatabase):
self.count = self.data.count self.count = self.data.count
self.refresh() self.refresh()
self.last_update_check = self.last_modified()
def get_property(idx, index_is_id=False, loc=-1): def get_property(idx, index_is_id=False, loc=-1):
row = self.data._data[idx] if index_is_id else self.data[idx] 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', for prop in ('author_sort', 'authors', 'comment', 'comments', 'isbn',
'publisher', 'rating', 'series', 'series_index', 'tags', 'publisher', 'rating', 'series', 'series_index', 'tags',
'title', 'timestamp'): 'title', 'timestamp', 'uuid'):
setattr(self, prop, functools.partial(get_property, setattr(self, prop, functools.partial(get_property,
loc=FIELD_MAP['comments' if prop == 'comment' else prop])) loc=FIELD_MAP['comments' if prop == 'comment' else prop]))
@ -622,12 +624,61 @@ class LibraryDatabase2(LibraryDatabase):
END TRANSACTION; 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): def last_modified(self):
''' Return last modified time as a UTC datetime object''' ''' Return last modified time as a UTC datetime object'''
return datetime.utcfromtimestamp(os.stat(self.dbpath).st_mtime) 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): def path(self, index, index_is_id=False):
'Return the relative path to the directory containing this books files as a unicode string.' '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] 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.publisher = self.publisher(idx, index_is_id=index_is_id)
mi.timestamp = self.timestamp(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.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) tags = self.tags(idx, index_is_id=index_is_id)
if tags: if tags:
mi.tags = [i.strip() for i in tags.split(',')] mi.tags = [i.strip() for i in tags.split(',')]
@ -1530,7 +1582,9 @@ class LibraryDatabase2(LibraryDatabase):
''' '''
if prefix is None: if prefix is None:
prefix = self.library_path 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 = [] data = []
for record in self.data: for record in self.data:
if record is None: continue if record is None: continue

View File

@ -24,7 +24,7 @@ except ImportError:
from calibre.constants import __version__, __appname__ from calibre.constants import __version__, __appname__
from calibre.utils.genshi.template import MarkupTemplate from calibre.utils.genshi.template import MarkupTemplate
from calibre import fit_image, guess_type, prepare_string_for_xml, \ 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 import server_config as config
from calibre.library.database2 import LibraryDatabase2, FIELD_MAP from calibre.library.database2 import LibraryDatabase2, FIELD_MAP
from calibre.utils.config import config_dir from calibre.utils.config import config_dir
@ -45,6 +45,8 @@ def expose(func):
def do(self, *args, **kwargs): def do(self, *args, **kwargs):
dict.update(cherrypy.response.headers, {'Server':self.server_name}) dict.update(cherrypy.response.headers, {'Server':self.server_name})
if not self.embedded:
self.db.check_if_modified()
return func(self, *args, **kwargs) return func(self, *args, **kwargs)
return cherrypy.expose(do) return cherrypy.expose(do)
@ -77,6 +79,159 @@ class LibraryServer(object):
</book> </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('''\ LIBRARY = MarkupTemplate(textwrap.dedent('''\
<?xml version="1.0" encoding="utf-8"?> <?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')}"> <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('''\ STANZA_ENTRY=MarkupTemplate(textwrap.dedent('''\
<entry xmlns:py="http://genshi.edgewall.org/"> <entry xmlns:py="http://genshi.edgewall.org/">
<title>${record[FM['title']]}</title> <title>${record[FM['title']]}</title>
<id>urn:calibre:${record[FM['id']]}</id> <id>urn:calibre:${urn}</id>
<author><name>${authors}</name></author> <author><name>${authors}</name></author>
<updated>${timestamp}</updated> <updated>${timestamp}</updated>
<link type="${mimetype}" href="/get/${fmt}/${record[FM['id']]}" /> <link type="${mimetype}" href="/get/${fmt}/${record[FM['id']]}" />
@ -191,6 +346,7 @@ class LibraryServer(object):
item item
break break
self.opts = opts self.opts = opts
self.embedded = embedded
self.max_cover_width, self.max_cover_height = \ self.max_cover_width, self.max_cover_height = \
map(int, self.opts.max_cover.split('x')) map(int, self.opts.max_cover.split('x'))
self.max_stanza_items = opts.max_opds_items self.max_stanza_items = opts.max_opds_items
@ -525,6 +681,7 @@ class LibraryServer(object):
extra='\n'.join(extra), extra='\n'.join(extra),
mimetype=mimetype, mimetype=mimetype,
fmt=fmt, fmt=fmt,
urn=record[FIELD_MAP['uuid']],
timestamp=strftime('%Y-%m-%dT%H:%M:%S+00:00', record[5]) timestamp=strftime('%Y-%m-%dT%H:%M:%S+00:00', record[5])
) )
books.append(self.STANZA_ENTRY.generate(**data)\ 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') 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 @expose
def library(self, start='0', num='50', sort=None, search=None, def library(self, start='0', num='50', sort=None, search=None,
_=None, order='ascending'): _=None, order='ascending'):
@ -584,10 +787,22 @@ class LibraryServer(object):
cherrypy.request.headers.get('Stanza-Device-Name', 919) != 919 or \ cherrypy.request.headers.get('Stanza-Device-Name', 919) != 919 or \
cherrypy.request.headers.get('Want-OPDS-Catalog', 919) != 919 or \ cherrypy.request.headers.get('Want-OPDS-Catalog', 919) != 919 or \
ua.startswith('Stanza') 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), tagid=kwargs.get('tagid',None),
seriesid=kwargs.get('seriesid',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 @expose

View File

@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en'
Wrapper for multi-threaded access to a single sqlite database connection. Serializes Wrapper for multi-threaded access to a single sqlite database connection. Serializes
all calls. all calls.
''' '''
import sqlite3 as sqlite, traceback, time import sqlite3 as sqlite, traceback, time, uuid
from sqlite3 import IntegrityError from sqlite3 import IntegrityError
from threading import Thread from threading import Thread
from Queue import Queue from Queue import Queue
@ -121,6 +121,7 @@ class DBThread(Thread):
self.conn.create_aggregate('concat', 1, Concatenate) self.conn.create_aggregate('concat', 1, Concatenate)
self.conn.create_aggregate('sortconcat', 2, SortedConcatenate) self.conn.create_aggregate('sortconcat', 2, SortedConcatenate)
self.conn.create_function('title_sort', 1, title_sort) self.conn.create_function('title_sort', 1, title_sort)
self.conn.create_function('uuid4', 0, lambda : str(uuid.uuid4()))
def run(self): def run(self):
try: 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 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 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 by the conversion pipeline. There is also a wizard to help you customize the regular expressions for
your document. your document.
The header and footer regular expressions are used in conjunction with the remove header and footer options. 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. 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 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 document. You can learn more about regular expressions and their syntax at
http://docs.python.org/library/re.html.
Miscellaneous Miscellaneous
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
@ -408,27 +409,28 @@ This will result in an automatically generated two level Table of Contents that
Format specific tips 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 Convert Microsoft Word documents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|app| does not directly convert .doc files from Microsoft Word. However, in Word, you can save the document |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 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 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 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 Convert TXT documents
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
TXT documents can contain any imaginable layout. Since TXT documents provide no way to explicitly mark parts of TXT documents have no well defined way to specify formatting like bold, italics, etc, or document structure like paragraphs, headings, sections and so on.
the text, by default |app| only groups parts of the document into paragraphs. The default is to assume one or Since TXT documents provide no way to explicitly mark parts of
more blank lines are a paragraph boundary. 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::
.. code-block:: txt
This is the first. 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. TXT input supports a number of options to differentiate how paragraphs are detected.
:guilabel:`Treat each line as a paragraph` :guilabel:`Treat each line as a paragraph`
Assumes that every line is a paragraph. Assumes that every line is a paragraph::
.. code-block:: txt This is the first.
This is the second.
This is the first. This is the third.
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
:guilabel:`Assume print formatting` the next line that starts with an indent is reached::
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.
.. code-block:: txt This is the second.
This is the This is the
first. third.
This is the second.
:guilabel:`Process using markdown`
This is the |app| also supports running TXT input though a transformation preprocessor known as markdown. Markdown
third. 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 Convert PDF documents
~~~~~~~~~~~~~~~~~~~~~~
PDF documents are one of the worst formats to convert from. They are a fixed page size and text placement format. 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 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 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. 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. 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. 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 commit -m "Comment describing your changes"
bzr send -o my-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 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 `Launchpad <http://launchpad.net>`_ account. Once you have the account, you can use it to register
branch in which you do |app| development. To do that go to `Launchpad code <https://code.launchpad.net>`_ and click your bzr branch created by the `bzr branch` command above with the |app| project. First run the
"Register a branch" (choose a branch type of "Hosted"). Once the branch is setup you can associate it following command to tell bzr about your launchpad account::
with the code you checked out in the previous step running the following command in any directory
in the |app| code you checked out::
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 Now, you have to setup SSH access to Launchpad. First create an SSH public/private keypair. Then upload
your branch with the |app| project. Now whenever you commit changes to your branch with the command:: 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" 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| 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 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 Windows development environment
--------------------------------- ---------------------------------

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n" "POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-20 01:13+0000\n" "PO-Revision-Date: 2009-10-29 20:45+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Arabic <ar@li.org>\n" "Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:08+0000\n" "X-Launchpad-Export-Date: 2009-10-30 08:26+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /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/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /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/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/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /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/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 #: /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:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 #: /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/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:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /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/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:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 #: /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." msgid "This profile is intended for the Amazon Kindle DX."
msgstr "هذا الطور يستخدم مع 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" msgid "Installed plugins"
msgstr "ملحقات مثبتة" 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" msgid "Mapping for filetype plugins"
msgstr "تعيين لملحقات أنواع الملفات" 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" msgid "Local plugin customization"
msgstr "تخصيص الملحقات المحلية" msgstr "تخصيص الملحقات المحلية"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins" msgid "Disabled plugins"
msgstr "ملحقات معطلة" 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 " msgid "No valid plugin found in "
msgstr "لا يجد ملحق صالح " 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:" msgid "Initialization of plugin %s failed with traceback:"
msgstr "فشل استهلال الملحق %s مع اقتفاء الأثر:" msgstr "فشل استهلال الملحق %s مع اقتفاء الأثر:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid "" msgid ""
" %prog options\n" " %prog options\n"
"\n" "\n"
@ -346,29 +346,29 @@ msgid ""
" " " "
msgstr "" 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." msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "إضافة ملحق يتخصيص مسار إلى ملف zip الذي يحتويه." 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" msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "حذف الملحق المخصص عن طريق اسمه. لا يؤثر على الملحقات المضمنة" msgstr "حذف الملحق المخصص عن طريق اسمه. لا يؤثر على الملحقات المضمنة"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid "" msgid ""
"Customize plugin. Specify name of plugin and customization string separated " "Customize plugin. Specify name of plugin and customization string separated "
"by a comma." "by a comma."
msgstr "تخصيص الملحق حدد اسم الملحق وسلسلة التخصيص وفرقهما بفاصلة." 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" msgid "List all installed plugins"
msgstr "قائمة كل الملحقات المثبتة" 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" msgid "Enable the named plugin"
msgstr "تمكين الملحق المسمى" 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" msgid "Disable the named plugin"
msgstr "تعطيل الملحق المسمى" msgstr "تعطيل الملحق المسمى"
@ -547,7 +547,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "لا توجد مساحة كافية في بطاقة التخزين" msgstr "لا توجد مساحة كافية في بطاقة التخزين"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713 #: /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/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1120,7 +1120,7 @@ msgid ""
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123 #: /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/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:" msgid "Table of Contents:"
@ -1658,7 +1658,7 @@ msgid ""
"Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover" msgid "Cover"
msgstr "الغلاف" msgstr "الغلاف"
@ -1781,7 +1781,7 @@ msgstr ""
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "" 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" msgid "%s format books are not supported"
msgstr "الكتب بتهيئة %s ليست مدعومة" msgstr "الكتب بتهيئة %s ليست مدعومة"
@ -2079,7 +2079,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid "" 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 " "compression but the fastest and 10 being the highest compression but the "
"slowest." "slowest."
msgstr "" 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/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_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/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/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/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 #: /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:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 #: /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/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /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:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 #: /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:493
#: /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:505
#: /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:506
#: /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:522
#: /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:523
#: /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: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: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:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2541,20 +2542,46 @@ msgstr ""
msgid "&Inline TOC" msgid "&Inline TOC"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Look & Feel" msgid "Font rescaling wizard"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid "Control the look and feel of the output" 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 "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "Base &font size:" msgid "&Output document"
msgstr "حجم الخط& الأساسي:" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /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: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: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:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2565,43 +2592,75 @@ msgstr "حجم الخط& الأساسي:"
msgid " pt" msgid " pt"
msgstr " 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 "Line &height:" msgid "Use &default values"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108
msgid "Remove &spacing between paragraphs" msgid "&Input document"
msgstr "حذف الفراغات& بين الفقرات"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:94
msgid "No text &justification"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:95 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111
msgid "&Linearize tables" msgid "&Font size: "
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113
msgid "&Transliterate unicode characters to ASCII." msgid " will map to size: "
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114
msgid "Font size &key:" msgid "0.0 pt"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16
msgid "Input character &encoding" msgid "Look & Feel"
msgstr "" msgstr ""
#: /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.py:18
msgid "&Disable font size rescaling" msgid "Control the look and feel of the output"
msgstr "" msgstr ""
#: /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: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" msgid "Insert &blank line"
msgstr "" 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" msgid "Extra &CSS"
msgstr "" 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:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 #: /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:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats" msgid "No suitable formats"
msgstr "" msgstr ""
@ -3353,30 +3412,30 @@ msgstr ""
msgid "Sent news to" msgid "Sent news to"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?" msgid "Auto convert the following books before uploading to the device?"
msgstr "" 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." msgid "Sending news to device."
msgstr "" 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." msgid "Sending books to device."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid "" msgid ""
"Could not upload the following books to the device, as no suitable formats " "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." "were found. Convert the book(s) to a format supported by your device first."
msgstr "" 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" msgid "No space on device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid "" msgid ""
"<p>Cannot upload books to device there is no more free space available " "<p>Cannot upload books to device there is no more free space available "
msgstr "" msgstr ""
@ -3509,127 +3568,127 @@ msgstr ""
msgid "new email address" msgid "new email address"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797 #: /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:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error" msgid "Error"
msgstr "خطأ" 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." msgid "Failed to install command line tools."
msgstr "" 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" msgid "Command line tools installed"
msgstr "" 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" msgid "Command line tools installed in"
msgstr "" 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 "" msgid ""
"If you move calibre.app, you have to re-install the command line tools." "If you move calibre.app, you have to re-install the command line tools."
msgstr "" 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" msgid "No valid plugin path"
msgstr "مسار الملحق غير صالح" 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" msgid "%s is not a valid plugin path"
msgstr "%s ليس مسار لملحق صالح" 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" msgid "Choose plugin"
msgstr "إختيار الملحق" 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" msgid "Plugin cannot be disabled"
msgstr "لا يمكن تعطيل الملحق" 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" msgid "The plugin: %s cannot be disabled"
msgstr "الملحق: %s لا يمكن تعطيله" 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" msgid "Plugin not customizable"
msgstr "لا يمكن تخصيص الملحق" 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" msgid "Plugin: %s does not need customization"
msgstr "الملحق: %s لا يحتاج التخصيص" 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" msgid "Customize %s"
msgstr "تخصيص %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" msgid "Cannot remove builtin plugin"
msgstr "لم يمكن حذف الملحق المضمن" 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." msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr " لا يمكن حذفه. هذا ملحق مضمن في البرنامج. حاول تعطيله بدلاً من حذفه." 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:" msgid "Error log:"
msgstr "سجل الأخطاء:" 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:" msgid "Access log:"
msgstr "سجل النفاذ:" 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 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server" msgid "Failed to start content server"
msgstr "فشل في تشغيل خادم المحتوى" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books" msgid "Select location for books"
msgstr "" 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" msgid "Invalid size"
msgstr "حجم غير صالح" 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" msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:738 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location" msgid "Invalid database location"
msgstr "" 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 " msgid "Invalid database location "
msgstr "" 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." msgid "<br>Must be a directory."
msgstr "<br>يجب أن يكون دليل." 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 " msgid "Invalid database location.<br>Cannot write to "
msgstr "" 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" msgid "Checking database integrity"
msgstr "" 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" msgid "Failed to check database integrity"
msgstr "" 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" msgid "Some inconsistencies found"
msgstr "" 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 "" msgid ""
"The following books had formats listed in the database that are not actually " "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 " "available. The entries for the formats have been removed. You should check "
@ -3727,240 +3786,240 @@ msgstr ""
msgid "&Saving books" msgid "&Saving books"
msgstr "" 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/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences" msgid "Preferences"
msgstr "التفضيلات" 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 "" msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and " "&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)" "metadata is stored in the file metadata.db)"
msgstr "" 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" msgid "Browse for the new database location"
msgstr "" 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" msgid "Show notification when &new version is available"
msgstr "" 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:" msgid "Default network &timeout:"
msgstr "" 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 "" msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the " "Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)" "internet to get information)"
msgstr "" 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" msgid " seconds"
msgstr " ثانية" 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):" msgid "Choose &language (requires restart):"
msgstr "إختر ال&لغة (يحتاج إعادة تشغيل):" 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" msgid "Normal"
msgstr "عادي" 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" msgid "High"
msgstr "مرتفع" 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" msgid "Low"
msgstr "منخفض" 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:" msgid "Job &priority:"
msgstr "" 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:" msgid "Preferred &output format:"
msgstr "" 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:" msgid "Preferred &input format order:"
msgstr "" 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" msgid "Use &Roman numerals for series number"
msgstr "" 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)" msgid "Enable system &tray icon (needs restart)"
msgstr "" 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" msgid "Show &notifications in system tray"
msgstr "" 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)" msgid "Show cover &browser in a separate window (needs restart)"
msgstr "" 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" msgid "Search as you type"
msgstr "" 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" msgid "Automatically send downloaded &news to ebook reader"
msgstr "إرسال الأخبار& التي تم تنزيلها آلياً إلى قارئ الكتب الإلكترونية" 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" msgid "&Delete news from library when it is automatically sent to reader"
msgstr "" 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):" msgid "&Number of covers to show in browse mode (needs restart):"
msgstr "" 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" msgid "Toolbar"
msgstr "شريط الأدوات" 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" msgid "Large"
msgstr "كبير" 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" msgid "Medium"
msgstr "متوسط" 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" msgid "Small"
msgstr "صغير" 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" msgid "&Button size in toolbar"
msgstr "&حجم الأزرار على شريط الأدوات" 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" msgid "Show &text in toolbar buttons"
msgstr "إظهار النص& على أزرار شريط الأدوات" 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" msgid "Select visible &columns in library view"
msgstr "" 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:" msgid "Use internal &viewer for:"
msgstr "استخدم المستعرض& الداخلي في:" 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" msgid "Add an email address to which to send books"
msgstr "" 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" msgid "&Add email"
msgstr "" 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" msgid "Make &default"
msgstr "" 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" msgid "&Remove email"
msgstr "" 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" msgid "calibre can send your books to you (or your reader) by email"
msgstr "" 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):" msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr "" 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" msgid "&Check database integrity"
msgstr "" 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" msgid "&Install command line tools"
msgstr "" 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" msgid "Open calibre &configuration directory"
msgstr "" 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 "" msgid ""
"calibre contains a network server that allows you to access your book " "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 " "collection using a browser from anywhere in the world. Any changes to the "
"settings will only take effect after a server restart." "settings will only take effect after a server restart."
msgstr "" 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:" msgid "Server &port:"
msgstr "" 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/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:" msgid "&Username:"
msgstr "&اسم المستخدم:" 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/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:" msgid "&Password:"
msgstr "&كلمة السرّ" 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 "" msgid ""
"If you leave the password blank, anyone will be able to access your book " "If you leave the password blank, anyone will be able to access your book "
"collection using the web interface." "collection using the web interface."
msgstr "" 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 "" msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are " "The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. " "resized. "
msgstr "" 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:" msgid "Max. &cover size:"
msgstr "" 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/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password" msgid "&Show password"
msgstr "إظهار& كلمة السرّ" 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:" msgid "Max. &OPDS items per query:"
msgstr "" 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" msgid "&Start Server"
msgstr "" 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" msgid "St&op Server"
msgstr "" 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" msgid "&Test Server"
msgstr "" 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" msgid "Run server &automatically on startup"
msgstr "" 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" msgid "View &server logs"
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid "" msgid ""
"<p>Remember to leave calibre running as the server only runs as long as " "<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." "the IP address of the computer calibre is running on."
msgstr "" 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 "" msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins " "Here you can customize the behavior of Calibre by controlling what plugins "
"it uses." "it uses."
msgstr "" 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" msgid "Enable/&Disable plugin"
msgstr "" 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" msgid "&Customize plugin"
msgstr "ت&خصيص الملحق" 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" msgid "&Remove plugin"
msgstr "&حذف الملحق" 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" msgid "Add new plugin"
msgstr "إضافة ملحق جديد" 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:" msgid "Plugin &file:"
msgstr "&ملف الملحق:" 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" msgid "&Add"
msgstr "&إضافة" msgstr "&إضافة"
@ -4338,28 +4397,36 @@ msgstr ""
msgid "Aborting..." msgid "Aborting..."
msgstr "" 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: " msgid "Created by: "
msgstr "أنشأه: " 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" msgid "Last downloaded: never"
msgstr "آخر تنزيل: لم ينزّل من قبل" 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" msgid "%d days, %d hours and %d minutes ago"
msgstr "" 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" msgid "Last downloaded"
msgstr "آخر تنزيل" 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 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download" msgid "Schedule news download"
msgstr "جدولة تنزيل الأخبار" 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" msgid "Add a custom news source"
msgstr "" msgstr ""
@ -5647,7 +5714,7 @@ msgstr ""
msgid "No matches found for this book" msgid "No matches found for this book"
msgstr "" 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" msgid "Search"
msgstr "بحث" msgstr "بحث"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: de\n" "Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n" "POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-20 01:10+0000\n" "PO-Revision-Date: 2009-10-29 20:46+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n" "Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n" "X-Launchpad-Export-Date: 2009-10-30 08:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\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/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /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/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/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /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/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 #: /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:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 #: /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/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:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /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/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:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 #: /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." msgid "This profile is intended for the Amazon Kindle DX."
msgstr "Dieses Profil ist für den Amazon Kindle DX bestimmt." 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" msgid "Installed plugins"
msgstr "Installierte 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" msgid "Mapping for filetype plugins"
msgstr "Mapping für Dateityp 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" msgid "Local plugin customization"
msgstr "Lokale Plugin Anpassung" 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" msgid "Disabled plugins"
msgstr "Ausgeschaltene 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 " msgid "No valid plugin found in "
msgstr "Kein gültiges Plugin gefunden 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:" msgid "Initialization of plugin %s failed with traceback:"
msgstr "Staren des Plugins %s schlug fehl. 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 "" msgid ""
" %prog options\n" " %prog options\n"
"\n" "\n"
@ -368,19 +368,19 @@ msgstr ""
" Calibre anpassen durch das Laden externer Plugins.\n" " 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." msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "" msgstr ""
"Plugin hinzufügen durch die Angabe des Pfads zur ZIP Datei, die das Plugin " "Plugin hinzufügen durch die Angabe des Pfads zur ZIP Datei, die das Plugin "
"enthält." "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" msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "" msgstr ""
"Anpassbares Plugin entfernen. Dies hat keinen Einfluss auf festinstallierte " "Anpassbares Plugin entfernen. Dies hat keinen Einfluss auf festinstallierte "
"Plugins" "Plugins"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid "" msgid ""
"Customize plugin. Specify name of plugin and customization string separated " "Customize plugin. Specify name of plugin and customization string separated "
"by a comma." "by a comma."
@ -388,15 +388,15 @@ msgstr ""
"Plugin anpassen. Geben Sie den Namen des Pugins und die Anpassung durch ein " "Plugin anpassen. Geben Sie den Namen des Pugins und die Anpassung durch ein "
"Komma getrennt an." "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" msgid "List all installed plugins"
msgstr "Installierte Plugins auflisten" 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" msgid "Enable the named plugin"
msgstr "Gewähltes Plugin einschalten" 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" msgid "Disable the named plugin"
msgstr "Gewähltes Plugin ausschalten" 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" 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/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/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1320,7 +1320,7 @@ msgstr ""
"aus." "aus."
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123 #: /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/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:" msgid "Table of Contents:"
@ -1937,7 +1937,7 @@ msgstr ""
"Umschlagbild des Buches mit der angegebenen ISBN von LibraryThing.com " "Umschlagbild des Buches mit der angegebenen ISBN von LibraryThing.com "
"abrufen\n" "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 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover" msgid "Cover"
msgstr "Umschlagbild" msgstr "Umschlagbild"
@ -2063,7 +2063,7 @@ msgstr "Hilfreich bei der Fehlersuche."
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "Benutzung: 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" msgid "%s format books are not supported"
msgstr "Bücher im %s Format werden nicht unterstützt" msgstr "Bücher im %s Format werden nicht unterstützt"
@ -2441,13 +2441,18 @@ msgstr ""
msgid "" msgid ""
"Specify the character encoding of the output document. The default is utf-8." "Specify the character encoding of the output document. The default is utf-8."
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid "" 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 " "compression but the fastest and 10 being the highest compression but the "
"slowest." "slowest."
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32
msgid "" 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/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_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/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/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/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 #: /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:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 #: /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/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /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:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 #: /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:493
#: /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:505
#: /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:506
#: /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:522
#: /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:523
#: /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: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: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:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2945,20 +2951,60 @@ msgstr "FB2 Ausgabe"
msgid "&Inline TOC" msgid "&Inline TOC"
msgstr "M&itwachsendes Inhaltsverzeichnis" msgstr "M&itwachsendes Inhaltsverzeichnis"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Look & Feel" msgid "Font rescaling wizard"
msgstr "Layout" msgstr "Schriftskalierungs-Assistent"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid "Control the look and feel of the output" msgid ""
msgstr "Kontrolle des Layouts der Ausgabe" "<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 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "Base &font size:" msgid "&Output document"
msgstr "Ausgangsschrift&größe:" 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/font_key_ui.py:104
#: /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: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: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:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2969,43 +3015,77 @@ msgstr "Ausgangsschrift&größe:"
msgid " pt" msgid " pt"
msgstr " Punkt" 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:" msgid "Line &height:"
msgstr "Zeilen&höhe:" 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" msgid "Remove &spacing between paragraphs"
msgstr "&Abstand zwischen Paragrafen entfernen" 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" msgid "No text &justification"
msgstr "Kein &Blocksatz" 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" msgid "&Linearize tables"
msgstr "Tabellen &linearisieren" 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." msgid "&Transliterate unicode characters to ASCII."
msgstr "Unicode Zeichen in ASCII umse&tzen." msgstr "Unicode Zeichen in ASCII umse&tzen."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Font size &key:" msgid "Input character &encoding:"
msgstr "Schrift&größenschlüssel:" msgstr "Eingabe Z&eichenkodierung:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "Input character &encoding"
msgstr "Zeichenkodi&erung der Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
msgid "&Disable font size rescaling" msgid "&Disable font size rescaling"
msgstr "Schriftgrößen&skalierung ausschalten" 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" msgid "Insert &blank line"
msgstr "&Leerzeile einfügen" 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" msgid "Extra &CSS"
msgstr "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:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 #: /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:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats" msgid "No suitable formats"
msgstr "Keine geeigneten Formate" msgstr "Keine geeigneten Formate"
@ -3786,21 +3866,21 @@ msgstr "Im Anhang ist"
msgid "Sent news to" msgid "Sent news to"
msgstr "Nachrichten senden an" msgstr "Nachrichten senden an"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?" msgid "Auto convert the following books before uploading to the device?"
msgstr "" msgstr ""
"Die folgenden Bücher vor dem Laden auf das Gerät automatisch konvertieren?" "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." msgid "Sending news to device."
msgstr "Sende Nachrichten an das Gerät." 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." msgid "Sending books to device."
msgstr "Sende Bücher an das Gerät." 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 "" msgid ""
"Could not upload the following books to the device, as no suitable formats " "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." "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 " "fehlen. Konvertieren Sie die Bücher zuerst in ein von Ihrem Gerät "
"unterstütztes Format." "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" msgid "No space on device"
msgstr "Gerätespeicher voll" 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 "" msgid ""
"<p>Cannot upload books to device there is no more free space available " "<p>Cannot upload books to device there is no more free space available "
msgstr "" msgstr ""
@ -3954,132 +4034,132 @@ msgstr ""
msgid "new email address" msgid "new email address"
msgstr "Neue eMail Adresse" 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:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797 #: /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:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error" msgid "Error"
msgstr "Fehler" 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." msgid "Failed to install command line tools."
msgstr "Die Installation der Befehlszeilen-Tools schlug fehl." 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" msgid "Command line tools installed"
msgstr "Kommandozeilen-Tools installiert" 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" msgid "Command line tools installed in"
msgstr "Kommandozeilen-Tools installiert 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 "" msgid ""
"If you move calibre.app, you have to re-install the command line tools." "If you move calibre.app, you have to re-install the command line tools."
msgstr "" msgstr ""
"Wenn Sie Calibre.app verschieben, müssen Sie die Befehlszeilen-Tools neu " "Wenn Sie Calibre.app verschieben, müssen Sie die Befehlszeilen-Tools neu "
"installieren." "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" msgid "No valid plugin path"
msgstr "Kein gültiger Plugin Pfad" 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" msgid "%s is not a valid plugin path"
msgstr "%s ist kein gültiger Plugin Pfad" 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" msgid "Choose plugin"
msgstr "Plugin wählen" 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" msgid "Plugin cannot be disabled"
msgstr "Plugin kann nicht ausgeschaltet werden" 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" msgid "The plugin: %s cannot be disabled"
msgstr "Das Plugin: %s kann nicht ausgeschaltet werden" 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" msgid "Plugin not customizable"
msgstr "Plugin nicht anpassbar" 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" msgid "Plugin: %s does not need customization"
msgstr "Plugin: %s bedarf keines Anpassens" 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" msgid "Customize %s"
msgstr "Anpassen von %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" msgid "Cannot remove builtin plugin"
msgstr "Kann festinstalliertes Plugin nicht entfernen" 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." msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr "" msgstr ""
" kann nicht entfernt werden, da es ein festinstalliertes Plugin ist. " " kann nicht entfernt werden, da es ein festinstalliertes Plugin ist. "
"Versuchen Sie, es auszuschalten." "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:" msgid "Error log:"
msgstr "Fehler 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:" msgid "Access log:"
msgstr "Zugriffs-Protokolldatei:" 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 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server" msgid "Failed to start content server"
msgstr "Content Server konnte nicht gestartet werden" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books" msgid "Select location for books"
msgstr "Speicherort für Bücher wählen" 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" msgid "Invalid size"
msgstr "Ungültige Größe" 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" msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "" msgstr ""
"Die Größe %s ist ungültig. Sie muss der Form BreitexHöhe entsprechen." "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:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location" msgid "Invalid database location"
msgstr "Ortsangabe der Datenbank ungültig" 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 " msgid "Invalid database location "
msgstr "Ortsangabe der Datenbank ungültig " 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." msgid "<br>Must be a directory."
msgstr "<br>Muss ein Verzeichnis sein." 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 " msgid "Invalid database location.<br>Cannot write to "
msgstr "Ortsangabe der Datenbank ungültig.<br>Speichern nicht möglich " 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" msgid "Checking database integrity"
msgstr "Überprüfe Vollständigkeit der Datenbank" 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" msgid "Failed to check database integrity"
msgstr "Überprüfung der Vollständigkeit der Datenbank schlug fehl" 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" msgid "Some inconsistencies found"
msgstr "Einige Inkonsistenzen gefunden." 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 "" msgid ""
"The following books had formats listed in the database that are not actually " "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 " "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" msgid "&Saving books"
msgstr "Bücher &speichern" 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/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences" msgid "Preferences"
msgstr "Einstellungen" 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 "" msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and " "&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)" "metadata is stored in the file metadata.db)"
@ -4207,19 +4287,19 @@ msgstr ""
"sortiert gespeichert und die Metadaten werden in der Datei metadata.db " "sortiert gespeichert und die Metadaten werden in der Datei metadata.db "
"gespeichert)" "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" msgid "Browse for the new database location"
msgstr "Zu einem neuen Ort der Datenbank wechseln" 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" msgid "Show notification when &new version is available"
msgstr "Benachrichtigung anzeigen, wenn &neue Version verfügbar ist" 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:" msgid "Default network &timeout:"
msgstr "Voreinstellung für Zei&tüberschreitung bei Netzwerkverbindungen:" 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 "" msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the " "Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)" "internet to get information)"
@ -4227,147 +4307,147 @@ msgstr ""
"Voreinstellung der Zeitüberschreitung für Netzwerkabrufe festsetzen (Gilt " "Voreinstellung der Zeitüberschreitung für Netzwerkabrufe festsetzen (Gilt "
"immer dann, wenn aus dem Internet Informationen abgerufen werden sollen)" "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" msgid " seconds"
msgstr " Sekunden" 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):" msgid "Choose &language (requires restart):"
msgstr "Sprache wäh&len (erfordert Neustart):" 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" msgid "Normal"
msgstr "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" msgid "High"
msgstr "Hoch" 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" msgid "Low"
msgstr "Niedrig" 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:" msgid "Job &priority:"
msgstr "Auftrags&priorität:" 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:" msgid "Preferred &output format:"
msgstr "Bev&orzugtes Ausgabeformat:" 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:" msgid "Preferred &input format order:"
msgstr "Bevorzugte Reihenfolge des E&ingabe Formats:" 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" msgid "Use &Roman numerals for series number"
msgstr "&Römische Ziffern für Reihen Nummerierung verwenden" 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)" msgid "Enable system &tray icon (needs restart)"
msgstr "" msgstr ""
"Symbol im Sys&tembereich der Kontrollleiste aktivieren (erfordert Neustart)" "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" msgid "Show &notifications in system tray"
msgstr "Be&nachrichtigungen im Systembereich der Kontrollleiste anzeigen" 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)" msgid "Show cover &browser in a separate window (needs restart)"
msgstr "Zeige Cover-Ansicht in einem eigenen Fenster (erfordert Neustart)" 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" msgid "Search as you type"
msgstr "Suchen während der Eingabe" 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" msgid "Automatically send downloaded &news to ebook reader"
msgstr "Geladene &Nachrichten automatisch an das Gerät senden" 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" msgid "&Delete news from library when it is automatically sent to reader"
msgstr "" msgstr ""
"Nachrichten nach der automatischen Übertragung auf das Gerät aus der " "Nachrichten nach der automatischen Übertragung auf das Gerät aus der "
"Bibliothek &löschen" "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):" msgid "&Number of covers to show in browse mode (needs restart):"
msgstr "" msgstr ""
"A&nzahl der anzuzeigenden Umschlagbilder in der Cover-Ansicht (erfordert " "A&nzahl der anzuzeigenden Umschlagbilder in der Cover-Ansicht (erfordert "
"Neustart):" "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" msgid "Toolbar"
msgstr "Symbolleiste" 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" msgid "Large"
msgstr "Groß" 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" msgid "Medium"
msgstr "Mittel" 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" msgid "Small"
msgstr "Klein" 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" msgid "&Button size in toolbar"
msgstr "&Größe der Schaltflächen in der Symbolleiste" 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" msgid "Show &text in toolbar buttons"
msgstr "Zeige &Text in Schaltflächen der Symbolleiste" 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" msgid "Select visible &columns in library view"
msgstr "Si&chtbare Spalten in Bibliothek-Ansicht wählen" 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:" msgid "Use internal &viewer for:"
msgstr "Internen &Viewer verwenden für:" 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" msgid "Add an email address to which to send books"
msgstr "Eine eMail Adresse hinzufügen, an die die Bücher gesendet werden" 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" msgid "&Add email"
msgstr "eM&ail hinzufügen" 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" msgid "Make &default"
msgstr "Als Voreinstellung verwenden" 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" msgid "&Remove email"
msgstr "eMail entfe&rnen" 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" msgid "calibre can send your books to you (or your reader) by email"
msgstr "" msgstr ""
"Calibre kann Ihre Bücher an Sie (oder Ihr Lesegerät) per eMail versenden" "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):" msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr "" msgstr ""
"&Maximale Anzahl der Arbeitsprozesse in der Warteschlange (erfordert " "&Maximale Anzahl der Arbeitsprozesse in der Warteschlange (erfordert "
"Neustart):" "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" msgid "&Check database integrity"
msgstr "Vollständigkeit der &Datenbank überprüfen" 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" msgid "&Install command line tools"
msgstr "Kommandozeilen-Tools &installieren" 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" 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 "" msgid ""
"calibre contains a network server that allows you to access your book " "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 " "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 " "von überall aus mit Hilfe eines Browsers auf Ihre Büchersammlung zugreifen "
"können. Einstellungsänderungen erfolgen erst nach einem Neustart des Servers." "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:" msgid "Server &port:"
msgstr "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/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:" msgid "&Username:"
msgstr "Ben&utzername:" 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/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:" msgid "&Password:"
msgstr "&Passwort:" 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 "" msgid ""
"If you leave the password blank, anyone will be able to access your book " "If you leave the password blank, anyone will be able to access your book "
"collection using the web interface." "collection using the web interface."
@ -4403,7 +4483,7 @@ msgstr ""
"Wenn Sie das Kennwort leer lassen, kann jeder auf Ihre Büchersammlung über " "Wenn Sie das Kennwort leer lassen, kann jeder auf Ihre Büchersammlung über "
"das Webinterface zugreifen." "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 "" msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are " "The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. " "resized. "
@ -4411,41 +4491,41 @@ msgstr ""
"Maximale Größe (BreitexHöhe) der angezeigten Umschlagbilder. Größere " "Maximale Größe (BreitexHöhe) der angezeigten Umschlagbilder. Größere "
"Umschlagbilder werden verkleinert. " "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:" msgid "Max. &cover size:"
msgstr "Maximale Ums&chlagbild-Größe:" 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/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password" msgid "&Show password"
msgstr "Pa&sswort anzeigen" 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:" msgid "Max. &OPDS items per query:"
msgstr "Maximale &ODPS Einträge pro Anfrage:" 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" msgid "&Start Server"
msgstr "Server &starten" 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" msgid "St&op Server"
msgstr "Server st&oppen" 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" msgid "&Test Server"
msgstr "Server &testen" 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" msgid "Run server &automatically on startup"
msgstr "Server &automatisch beim Starten hochfahren" 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" msgid "View &server logs"
msgstr "Server Logs ansehen" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid "" msgid ""
"<p>Remember to leave calibre running as the server only runs as long as " "<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 " "vollständige Servername oder die IP Adresse des Rechners sein, auf dem "
"Calibre läuft." "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 "" msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins " "Here you can customize the behavior of Calibre by controlling what plugins "
"it uses." "it uses."
@ -4471,27 +4551,27 @@ msgstr ""
"Hier können Sie das Verhalten von Calibrie anpassen, indem sie festlegen, " "Hier können Sie das Verhalten von Calibrie anpassen, indem sie festlegen, "
"welche Plugins verwendet werden." "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" msgid "Enable/&Disable plugin"
msgstr "Plugin &ein-/ausschalten" 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" msgid "&Customize plugin"
msgstr "Plugin &anpassen" 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" msgid "&Remove plugin"
msgstr "Plugin entfe&rnen" 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" msgid "Add new plugin"
msgstr "Neues Plugin hinzufügen" 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:" msgid "Plugin &file:"
msgstr "&Plugin Datei:" 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" msgid "&Add"
msgstr "&Hinzufügen" msgstr "&Hinzufügen"
@ -4851,28 +4931,38 @@ msgstr "Passwort erforderlich"
msgid "Aborting..." msgid "Aborting..."
msgstr "Abbruch läuft ..." 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: " msgid "Created by: "
msgstr "Erstellt von: " 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" msgid "Last downloaded: never"
msgstr "Zuletzt geladen: niemals" 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" msgid "%d days, %d hours and %d minutes ago"
msgstr "Vor %d Tagen, %d Stunden und %d Minuten" 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" msgid "Last downloaded"
msgstr "Zuletzt geladen" 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 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download" msgid "Schedule news download"
msgstr "Zeitgesteuerter Nachrichten 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" msgid "Add a custom news source"
msgstr "Neue individuelle Nachrichtenquelle hinzufügen" msgstr "Neue individuelle Nachrichtenquelle hinzufügen"
@ -6269,7 +6359,7 @@ msgstr "Buch hat weder Titel noch ISBN"
msgid "No matches found for this book" msgid "No matches found for this book"
msgstr "Keine Treffer für dieses Buch" 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" msgid "Search"
msgstr "Suche" msgstr "Suche"
@ -7781,6 +7871,7 @@ msgstr "Nachrichtenquelle unbekannt"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" msgstr ""
"Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590
msgid "Download finished" msgid "Download finished"
@ -9952,6 +10043,9 @@ msgstr "Zeige detailierte Ausgabeinformation. Hilfreich zur Fehlersuche."
#~ msgid "Portuguese" #~ msgid "Portuguese"
#~ msgstr "Portugiesisch" #~ msgstr "Portugiesisch"
#~ msgid "Input character &encoding"
#~ msgstr "Zeichenkodi&erung der Eingabe"
#~ msgid "" #~ msgid ""
#~ "Average line length for line breaking if the HTML is from a previous partial " #~ "Average line length for line breaking if the HTML is from a previous partial "
#~ "conversion of a PDF file." #~ "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 "" msgstr ""
"Project-Id-Version: calibre 0.4.22\n" "Project-Id-Version: calibre 0.4.22\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n" "POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-20 01:11+0000\n" "PO-Revision-Date: 2009-10-29 20:47+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: fr\n" "Language-Team: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:08+0000\n" "X-Launchpad-Export-Date: 2009-10-30 08:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\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/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /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/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/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /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/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 #: /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:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 #: /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/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:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /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/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:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 #: /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." msgid "This profile is intended for the Amazon Kindle DX."
msgstr "Ce profil est prévu pour le Kindle DX d'Amazon." 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" msgid "Installed plugins"
msgstr "Plugins installés" 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" msgid "Mapping for filetype plugins"
msgstr "Liaisons pour les plugins d'import/export" 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" msgid "Local plugin customization"
msgstr "Personnalisation des plugins locaux" 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" msgid "Disabled plugins"
msgstr "Plugins désactivés." 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 " msgid "No valid plugin found in "
msgstr "Absence de plugin valide " 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:" msgid "Initialization of plugin %s failed with traceback:"
msgstr "L'initialisation du plugin %s a échoué en laissant une trace:" 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 "" msgid ""
" %prog options\n" " %prog options\n"
"\n" "\n"
@ -367,18 +367,18 @@ msgstr ""
" Personnaliser Calibre en chargeant des modules additionnels externes.\n" " 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." msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "" msgstr ""
"Ajouter un plugin en précisant le chemin vers le fichier zip qui le contient." "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" msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "" msgstr ""
"Suppression d'un plugin personnalisé d'après son nom. Ceci n'a pas d'effet " "Suppression d'un plugin personnalisé d'après son nom. Ceci n'a pas d'effet "
"sur les plugins intégrés." "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 "" msgid ""
"Customize plugin. Specify name of plugin and customization string separated " "Customize plugin. Specify name of plugin and customization string separated "
"by a comma." "by a comma."
@ -386,15 +386,15 @@ msgstr ""
"Personnaliser le plugin. Spécifier le nom du plugin et la chaîne de " "Personnaliser le plugin. Spécifier le nom du plugin et la chaîne de "
"personnalisation séparés par une virgule." "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" msgid "List all installed plugins"
msgstr "Lister tous les plugins installés" 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" msgid "Enable the named plugin"
msgstr "Activer le plugin nommé" 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" msgid "Disable the named plugin"
msgstr "Désactive le plugin nommé" 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" 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/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/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 #: /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 " "algorithm uses these sizes to intelligently rescale fonts. The default is to "
"use a mapping based on the output profile you chose." "use a mapping based on the output profile you chose."
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151
msgid "Disable all rescaling of font sizes." 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." "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/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/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:" msgid "Table of Contents:"
@ -1919,7 +1921,7 @@ msgstr ""
"Chercher une image de couverture du livre identifié par ISBN sur " "Chercher une image de couverture du livre identifié par ISBN sur "
"LibraryThing.com\n" "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 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover" msgid "Cover"
msgstr "Couverture" msgstr "Couverture"
@ -2048,7 +2050,7 @@ msgstr "Utile pour déboguer"
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "Utilisation: ebook-convert FICHIERENTREE FICHIERSORTIE [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" msgid "%s format books are not supported"
msgstr "Les livres au format %s ne sont pas supportés" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid "" 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 " "compression but the fastest and 10 being the highest compression but the "
"slowest." "slowest."
msgstr "" 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/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_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/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/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/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 #: /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:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 #: /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/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /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:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 #: /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:493
#: /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:505
#: /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:506
#: /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:522
#: /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:523
#: /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: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: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:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2916,20 +2919,46 @@ msgstr "Sortie FB2"
msgid "&Inline TOC" msgid "&Inline TOC"
msgstr "TDM intégrée" msgstr "TDM intégrée"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Look & Feel" msgid "Font rescaling wizard"
msgstr "Présentation" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid "Control the look and feel of the output" msgid ""
msgstr "Contrôler l'apparence de la sortie" "<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 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "Base &font size:" msgid "&Output document"
msgstr "Taille de &police par défaut :" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /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: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: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:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 #: /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" msgid " pt"
msgstr " 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:" msgid "Line &height:"
msgstr "&Hauteur de la ligne:" 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" msgid "Remove &spacing between paragraphs"
msgstr "&Supprimer l'interligne entre les paragraphes" 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" msgid "No text &justification"
msgstr "Pas de &justification de texte" 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" msgid "&Linearize tables"
msgstr "&Linéariser les 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." msgid "&Transliterate unicode characters to ASCII."
msgstr "Translittérer les caractères unicode vers ASCII." msgstr "Translittérer les caractères unicode vers ASCII."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Font size &key:" msgid "Input character &encoding:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
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
msgid "&Disable font size rescaling" msgid "&Disable font size rescaling"
msgstr "&Désactiver le redimensionnement de la taille de fonte" 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" msgid "Insert &blank line"
msgstr "Insérer une ligne blanche" 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" msgid "Extra &CSS"
msgstr "&CSS complémentaire" 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:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 #: /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:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats" msgid "No suitable formats"
msgstr "Pas de format convenable" msgstr "Pas de format convenable"
@ -3758,22 +3819,22 @@ msgstr "Le fichier attaché est"
msgid "Sent news to" msgid "Sent news to"
msgstr "Envoi des News vers" msgstr "Envoi des News vers"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?" msgid "Auto convert the following books before uploading to the device?"
msgstr "" msgstr ""
"Convertir automatiquement les livres suivants avant de les télécharger dans " "Convertir automatiquement les livres suivants avant de les télécharger dans "
"l'appareil ?" "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." msgid "Sending news to device."
msgstr "Envoi les News vers l'appareil." 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." msgid "Sending books to device."
msgstr "Envoie les livres dans l'appareil." 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 "" msgid ""
"Could not upload the following books to the device, as no suitable formats " "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." "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 " "convenable n'a été trouvé. Convertissez avant le(s) livre(s) vers un format "
"supporté par votre appareil." "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" msgid "No space on device"
msgstr "Le lecteur électronique n'a plus d'espace mémoire disponible" 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 "" msgid ""
"<p>Cannot upload books to device there is no more free space available " "<p>Cannot upload books to device there is no more free space available "
msgstr "" msgstr ""
@ -3928,131 +3989,131 @@ msgstr ""
msgid "new email address" msgid "new email address"
msgstr "Nouvelle adresse email" 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:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797 #: /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:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error" msgid "Error"
msgstr "Erreur" 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." msgid "Failed to install command line tools."
msgstr "L'installation des outils en ligne de commande a échouée." 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" msgid "Command line tools installed"
msgstr "Outils en ligne de commande installés." 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" msgid "Command line tools installed in"
msgstr "Outils en ligne de commande installés dans" 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 "" msgid ""
"If you move calibre.app, you have to re-install the command line tools." "If you move calibre.app, you have to re-install the command line tools."
msgstr "" msgstr ""
"Si vous déplacez calibre.app, vous devez réinstaller les outils en ligne de " "Si vous déplacez calibre.app, vous devez réinstaller les outils en ligne de "
"commande." "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" msgid "No valid plugin path"
msgstr "Pas de répertoire valide pour les plugins" 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" msgid "%s is not a valid plugin path"
msgstr "%s n'est pas un répertoire valide pour les plugins" 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" msgid "Choose plugin"
msgstr "Choisir le 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" msgid "Plugin cannot be disabled"
msgstr "Le plugin ne peut pas être désactivé" 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" msgid "The plugin: %s cannot be disabled"
msgstr "Le plugin %s ne peut pas être désactivé" 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" msgid "Plugin not customizable"
msgstr "Le plugin ne peut pas être personnalisé" 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" msgid "Plugin: %s does not need customization"
msgstr "Le plugin %s ne peut pas être personnalisé" 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" msgid "Customize %s"
msgstr "Personnalise %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" msgid "Cannot remove builtin plugin"
msgstr "Impossible de supprimer les plugins natifs" 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." msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr "" msgstr ""
" ne peut pas être retiré. C'est un plugin natif. Essayer plutôt de le " " ne peut pas être retiré. C'est un plugin natif. Essayer plutôt de le "
"désactiver" "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:" msgid "Error log:"
msgstr "Journal d'erreur:" 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:" msgid "Access log:"
msgstr "Journal des accès:" 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 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server" msgid "Failed to start content server"
msgstr "A échoué lors du démarrage du serveur de contenu" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books" msgid "Select location for books"
msgstr "Sélectionner l'emplacement pour les livres" 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" msgid "Invalid size"
msgstr "Taille invalide" 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" msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "La taille %s est invalide. Doit être au format largeurxhauteur" 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:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location" msgid "Invalid database location"
msgstr "Chemin de la database invalide" 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 " msgid "Invalid database location "
msgstr "Chemin de la database invalide " 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." msgid "<br>Must be a directory."
msgstr "<br>Doit être un répertoire." 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 " msgid "Invalid database location.<br>Cannot write to "
msgstr "Chemin de la database invalide.<br>Erreur en écriture " 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" msgid "Checking database integrity"
msgstr "Vérifier l'intégrité de la base de données" 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" msgid "Failed to check database integrity"
msgstr "La vérification de l'intégrité de la base de données a échouée" 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" msgid "Some inconsistencies found"
msgstr "Des incohérences ont été trouvées" 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 "" msgid ""
"The following books had formats listed in the database that are not actually " "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 " "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" msgid "&Saving books"
msgstr "&Sauvegarde de livres" 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/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences" msgid "Preferences"
msgstr "Préférences" 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 "" msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and " "&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)" "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 " "&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)" "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" msgid "Browse for the new database location"
msgstr "Choisir un nouvel emplacement pour la base de données" 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" msgid "Show notification when &new version is available"
msgstr "Envoyer une notification quand une nouvelle version est disponible." 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:" msgid "Default network &timeout:"
msgstr "&Timeout par défaut pour les connexions réseau :" 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 "" msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the " "Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)" "internet to get information)"
@ -4199,149 +4260,149 @@ msgstr ""
"Indiquer le timeout par défaut pour les recherches réseau (c-à-d le temps " "Indiquer le timeout par défaut pour les recherches réseau (c-à-d le temps "
"utilisé pour aller rechercher l'information par internet)" "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" msgid " seconds"
msgstr " secondes" 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):" msgid "Choose &language (requires restart):"
msgstr "Choisir la &langue (nécessite un redémarrage):" 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" msgid "Normal"
msgstr "Normale" 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" msgid "High"
msgstr "Haute" 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" msgid "Low"
msgstr "Basse" 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:" msgid "Job &priority:"
msgstr "&Priorité du travail:" 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:" msgid "Preferred &output format:"
msgstr "Format de &sortie préféré:" 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:" msgid "Preferred &input format order:"
msgstr "Ordre préféré pour le format d'entrée" 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" msgid "Use &Roman numerals for series number"
msgstr "Utiliser les chiffres &romains pour les numéros de séries" 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)" msgid "Enable system &tray icon (needs restart)"
msgstr "" msgstr ""
"Ac&tiver l'affichage dans la zone de notification (redémarrage nécessaire)" "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" msgid "Show &notifications in system tray"
msgstr "Afficher les alertes dans la zone de &notification" 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)" msgid "Show cover &browser in a separate window (needs restart)"
msgstr "" msgstr ""
"Afficher la navigation par couverture dans une fenêtre séparée (redémarrage " "Afficher la navigation par couverture dans une fenêtre séparée (redémarrage "
"nécessaire)" "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" msgid "Search as you type"
msgstr "Rechercher lors de la saisie" 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" msgid "Automatically send downloaded &news to ebook reader"
msgstr "Envoyer automatiquement les i&nformations vers le lecteur d'ebook" 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" msgid "&Delete news from library when it is automatically sent to reader"
msgstr "" msgstr ""
"Supprimer les News de la librairie lorsque l'envoi est automatique vers " "Supprimer les News de la librairie lorsque l'envoi est automatique vers "
"l'appareil" "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):" msgid "&Number of covers to show in browse mode (needs restart):"
msgstr "" msgstr ""
"&Nombre de couvertures à afficher dans le mode navigation (nécessite un " "&Nombre de couvertures à afficher dans le mode navigation (nécessite un "
"redémarrage):" "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" msgid "Toolbar"
msgstr "Barre d'outils" 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" msgid "Large"
msgstr "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" msgid "Medium"
msgstr "Moyen" 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" msgid "Small"
msgstr "Petit" 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" msgid "&Button size in toolbar"
msgstr "Taille des boutons dans la barre d'outils" 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" msgid "Show &text in toolbar buttons"
msgstr "Afficher le &texte pour les boutons de la barre d'outils" 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" msgid "Select visible &columns in library view"
msgstr "Sélectionner les &colonnes visibles dans la vue librairie" 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:" msgid "Use internal &viewer for:"
msgstr "Utiliser l'afficheur interne pour:" 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" msgid "Add an email address to which to send books"
msgstr "Ajouter une adresse email où les livres seront envoyés" 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" msgid "&Add email"
msgstr "&Ajouter un 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" msgid "Make &default"
msgstr "Par &défaut" 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" msgid "&Remove email"
msgstr "&Supprimer un 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" msgid "calibre can send your books to you (or your reader) by email"
msgstr "" msgstr ""
"calibre peut envoyer vos livres vers vous (ou votre lecteur) par email" "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):" msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr "" msgstr ""
"Nombre &maximum de processus de travail en attente (nécessite un " "Nombre &maximum de processus de travail en attente (nécessite un "
"redémarrage):" "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" msgid "&Check database integrity"
msgstr "Vérifier l'intégrité de la base de données" 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" msgid "&Install command line tools"
msgstr "&Installer les outils en ligne de commande" 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" 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 "" msgid ""
"calibre contains a network server that allows you to access your book " "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 " "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 " "monde. Toutes modifications des paramètres ne prendra effet qu'après un "
"redémarrage du serveur." "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:" msgid "Server &port:"
msgstr "&Port du serveur:" 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/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:" msgid "&Username:"
msgstr "Nom d'&utilisateur:" 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/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:" msgid "&Password:"
msgstr "Mot de &passe :" 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 "" msgid ""
"If you leave the password blank, anyone will be able to access your book " "If you leave the password blank, anyone will be able to access your book "
"collection using the web interface." "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 " "Si vous laisser le mot de passe à vide, tout le monde pourra accéder à votre "
"collection de livres en utilisant une interface web." "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 "" msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are " "The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. " "resized. "
@ -4386,41 +4447,41 @@ msgstr ""
"Taille maximale (largeurxhauteur) pour l'affichage des couvertures. Les " "Taille maximale (largeurxhauteur) pour l'affichage des couvertures. Les "
"couvertures plus larges sont redimensionnées. " "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:" msgid "Max. &cover size:"
msgstr "Taille max. de la couverture:" 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/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password" msgid "&Show password"
msgstr "&Montrer le mot de passe" 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:" msgid "Max. &OPDS items per query:"
msgstr "Nombre d'articles OPDS max. par requête:" 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" msgid "&Start Server"
msgstr "Démarrer le &Serveur" 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" msgid "St&op Server"
msgstr "Arrêter le serveur" 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" msgid "&Test Server"
msgstr "&Tester le serveur" 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" msgid "Run server &automatically on startup"
msgstr "Lancer &automatiquement le serveur au démarrage" 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" msgid "View &server logs"
msgstr "Afficher les logs du &serveur" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid "" msgid ""
"<p>Remember to leave calibre running as the server only runs as long as " "<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 " "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é." "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 "" msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins " "Here you can customize the behavior of Calibre by controlling what plugins "
"it uses." "it uses."
@ -4445,27 +4506,27 @@ msgstr ""
"Ici vous pouvez personnaliser le comportement de Calibre en choisissant les " "Ici vous pouvez personnaliser le comportement de Calibre en choisissant les "
"plugins que vous souhaitez utiliser." "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" msgid "Enable/&Disable plugin"
msgstr "Activer/Désactiver le 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" msgid "&Customize plugin"
msgstr "Personnaliser le 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" msgid "&Remove plugin"
msgstr "Supprimer le 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" msgid "Add new plugin"
msgstr "Ajouter un nouveau 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:" msgid "Plugin &file:"
msgstr "&Fichier plugin:" 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" msgid "&Add"
msgstr "&Ajouter" msgstr "&Ajouter"
@ -4829,28 +4890,38 @@ msgstr "Mot de passe nécessaire"
msgid "Aborting..." msgid "Aborting..."
msgstr "Abandon..." 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: " msgid "Created by: "
msgstr "Créé par: " 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" msgid "Last downloaded: never"
msgstr "Dernier téléchargé: jamais" 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" msgid "%d days, %d hours and %d minutes ago"
msgstr "il y a %d jours, %d heures et %d minutes" 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" msgid "Last downloaded"
msgstr "Dernier téléchargé" 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 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download" msgid "Schedule news download"
msgstr "Planifier le téléchargement des News" 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" msgid "Add a custom news source"
msgstr "Ajouter une source personnalisée de News" 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" msgid "No matches found for this book"
msgstr "Aucune correspondance pour ce livre" 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" msgid "Search"
msgstr "Trouver" msgstr "Trouver"
@ -7755,6 +7826,7 @@ msgstr "Source de News inconnue"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590
msgid "Download finished" 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" #~ msgid "Starting conversion of %d books"
#~ msgstr "Commence la conversion de %d livres" #~ msgstr "Commence la conversion de %d livres"
#~ msgid "Input character &encoding"
#~ msgstr "&Encodage des caractères en entrée"
#~ msgid "Catalan" #~ msgid "Catalan"
#~ msgstr "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 "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 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" "PO-Revision-Date: 2009-10-20 01:11+0000\n"
"Last-Translator: Bartosz Kaszubowski <gosimek@gmail.com>\n" "Last-Translator: Bartosz Kaszubowski <gosimek@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n" "X-Launchpad-Export-Date: 2009-10-21 07:27+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /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/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /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/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/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /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:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /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/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:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 #: /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" 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/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/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 #: /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" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n"
msgstr "" 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 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover" msgid "Cover"
msgstr "Okładka" msgstr "Okładka"
@ -1833,7 +1833,7 @@ msgstr "Użyteczne dla debugowania."
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "" 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" msgid "%s format books are not supported"
msgstr "książki formatu %s nie są wspierane" msgstr "książki formatu %s nie są wspierane"
@ -4407,28 +4407,36 @@ msgstr "Wymagane hasło"
msgid "Aborting..." msgid "Aborting..."
msgstr "Przerywanie..." 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: " msgid "Created by: "
msgstr "Stworzone przez: " 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" msgid "Last downloaded: never"
msgstr "Ostatnio pobrano: nigdy" 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" msgid "%d days, %d hours and %d minutes ago"
msgstr "" 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" msgid "Last downloaded"
msgstr "Ostatnio pobrano" 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 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download" msgid "Schedule news download"
msgstr "Zaplanuj pobieranie aktualności" 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" msgid "Add a custom news source"
msgstr "Dodaj własne źródło aktualności" 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" msgid "No matches found for this book"
msgstr "" 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" msgid "Search"
msgstr "Szukaj" msgstr "Szukaj"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-10-20 00:20+0000\n" "POT-Creation-Date: 2009-10-26 17:36+0000\n"
"PO-Revision-Date: 2009-10-20 03:49+0000\n" "PO-Revision-Date: 2009-10-29 20:48+0000\n"
"Last-Translator: Kyle WANG <waxaca@163.com>\n" "Last-Translator: irvenwindson <Yuexi.Chen@gmail.com>\n"
"Language-Team: Simplified Chinese <zh_CN@li.org>\n" "Language-Team: Simplified Chinese <zh_CN@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-10-20 07:09+0000\n" "X-Launchpad-Export-Date: 2009-10-30 08:28+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /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/mobi.py:171
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 #: /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/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/pdb.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:21
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/topaz.py:29 #: /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/convert/metadata.py:126
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:543 #: /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:552
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:769 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:771
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:772 #: /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/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:106
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:139 #: /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/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:391
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:404 #: /home/kovid/work/calibre/src/calibre/gui2/library.py:404
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:876 #: /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." msgid "This profile is intended for the Amazon Kindle DX."
msgstr "该配置文件适用 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" msgid "Installed plugins"
msgstr "已安装插件" 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" msgid "Mapping for filetype plugins"
msgstr "关联插件文件类型" 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" msgid "Local plugin customization"
msgstr "本地插件定制" msgstr "本地插件定制"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:33
msgid "Disabled plugins" msgid "Disabled plugins"
msgstr "禁用插件" 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 " msgid "No valid plugin found in "
msgstr "无有效插件位于 " 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:" msgid "Initialization of plugin %s failed with traceback:"
msgstr "插件 %s 初始化返回失败回溯:" msgstr "插件 %s 初始化返回失败回溯:"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:362 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:363
msgid "" msgid ""
" %prog options\n" " %prog options\n"
"\n" "\n"
@ -348,29 +348,29 @@ msgstr ""
" 通过加载外部插件定制 Calibre。\n" " 通过加载外部插件定制 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." msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr "添加插件,指定包含其 zip 文件的路径。" 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" msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
msgstr "按名称移除自定义插件(对内置插件无效)。" msgstr "按名称移除自定义插件(对内置插件无效)。"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:372 #: /home/kovid/work/calibre/src/calibre/customize/ui.py:373
msgid "" msgid ""
"Customize plugin. Specify name of plugin and customization string separated " "Customize plugin. Specify name of plugin and customization string separated "
"by a comma." "by a comma."
msgstr "定制插件,指定插件名和自定制字符串,使用逗号分隔。" 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" msgid "List all installed plugins"
msgstr "列出全部已装插件" 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" msgid "Enable the named plugin"
msgstr "启用该名称插件" 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" msgid "Disable the named plugin"
msgstr "禁用该名称插件" msgstr "禁用该名称插件"
@ -549,7 +549,7 @@ msgid "There is insufficient free space on the storage card"
msgstr "存储卡上的空间不足" msgstr "存储卡上的空间不足"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:713 #: /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/gui2/tag_view.py:122
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1006 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1006
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1010 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1010
@ -1148,7 +1148,7 @@ msgid ""
msgstr "正常情况下,如果输入文件没有封面,您也未指定,会生成一个默认封面带有标题、作者等信息。选定此选项可以禁用生成默认封面。" msgstr "正常情况下,如果输入文件没有封面,您也未指定,会生成一个默认封面带有标题、作者等信息。选定此选项可以禁用生成默认封面。"
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:123 #: /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/rb/rbml.py:98
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
msgid "Table of Contents:" msgid "Table of Contents:"
@ -1711,7 +1711,7 @@ msgstr ""
"\n" "\n"
"通过书籍的ISBN从LibraryThing.com获得书籍的封面图片\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 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314
msgid "Cover" msgid "Cover"
msgstr "封面" msgstr "封面"
@ -1834,7 +1834,7 @@ msgstr "有利调试。"
msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]" msgid "Usage: ebook-convert INFILE OUTFILE [OPTIONS..]"
msgstr "用法: 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" msgid "%s format books are not supported"
msgstr "不支持 %s 格式电子书" msgstr "不支持 %s 格式电子书"
@ -2177,10 +2177,10 @@ msgstr "指定输出文档的字符集编码。默认为 utf-8。"
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
msgid "" 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 " "compression but the fastest and 10 being the highest compression but the "
"slowest." "slowest."
msgstr "指定使用的压缩水平。从1到10。1压缩率最低但最快10压缩率最高但最慢。" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32
msgid "" 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/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_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/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/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/metadata_ui.py:165
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:44 #: /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:52
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 #: /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/metadata_ui.py:170
#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /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:61
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 #: /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:493
#: /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:505
#: /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:506
#: /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:522
#: /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:523
#: /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: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: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:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -2642,20 +2643,46 @@ msgstr "FB2 输出"
msgid "&Inline TOC" msgid "&Inline TOC"
msgstr "内置目录(&I)" msgstr "内置目录(&I)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99
msgid "Look & Feel" msgid "Font rescaling wizard"
msgstr "外观" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100
msgid "Control the look and feel of the output" msgid ""
msgstr "控制输出文件外观" "<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 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "Base &font size:" msgid "&Output document"
msgstr "基准字体大小(&f):" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /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: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: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:120
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125
@ -2666,43 +2693,75 @@ msgstr "基准字体大小(&f):"
msgid " pt" msgid " pt"
msgstr " 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:" msgid "Line &height:"
msgstr "行高(&H)" 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" msgid "Remove &spacing between paragraphs"
msgstr "删除段间空行(&S)" 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" msgid "No text &justification"
msgstr "关闭文字调整(&j)" 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" msgid "&Linearize tables"
msgstr "线性化重整表格(&L)" 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." msgid "&Transliterate unicode characters to ASCII."
msgstr "将unicode字符转换为ASCII字符." msgstr "将unicode字符转换为ASCII字符."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:109
msgid "Font size &key:" msgid "Input character &encoding:"
msgstr "字体大小 Key(&K)" msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:110
msgid "Input character &encoding"
msgstr "输入字符编码(&E)"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:99
msgid "&Disable font size rescaling" msgid "&Disable font size rescaling"
msgstr "关闭文字大小缩放(&D)" 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" msgid "Insert &blank line"
msgstr "插入空行(&B)" 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" msgid "Extra &CSS"
msgstr "额外CSS样式(&C)" 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:598
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 #: /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:698
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:810 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:817 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:819
msgid "No suitable formats" msgid "No suitable formats"
msgstr "无合适格式" msgstr "无合适格式"
@ -3462,30 +3521,30 @@ msgstr "附加"
msgid "Sent news to" msgid "Sent news to"
msgstr "将新闻发送到" msgstr "将新闻发送到"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:697 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:813
msgid "Auto convert the following books before uploading to the device?" msgid "Auto convert the following books before uploading to the device?"
msgstr "上传到设备之前自动转换如下书籍?" 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." msgid "Sending news to device."
msgstr "将新闻传送到设备." 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." msgid "Sending books to device."
msgstr "传送书籍到设备。" msgstr "传送书籍到设备。"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:818 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:820
msgid "" msgid ""
"Could not upload the following books to the device, as no suitable formats " "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." "were found. Convert the book(s) to a format supported by your device first."
msgstr "无法上传下列书籍到设备,未找到何时格式。请先将书籍转换为设备支持的格式。" 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" msgid "No space on device"
msgstr "设备存储空间不足" msgstr "设备存储空间不足"
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:867 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:869
msgid "" msgid ""
"<p>Cannot upload books to device there is no more free space available " "<p>Cannot upload books to device there is no more free space available "
msgstr "<p>由于设备存储空间不足无法将书籍传送到设备上 " msgstr "<p>由于设备存储空间不足无法将书籍传送到设备上 "
@ -3620,127 +3679,127 @@ msgstr "如选中, 下载的新闻奖自动被发送到 <br>该邮件地址 (使
msgid "new email address" msgid "new email address"
msgstr "新邮件地址" msgstr "新邮件地址"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:797 #: /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:140
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1045
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error" msgid "Error"
msgstr "错误" 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." msgid "Failed to install command line tools."
msgstr "安装命令行工具失败。" 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" msgid "Command line tools installed"
msgstr "命令行工具已安装" 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" msgid "Command line tools installed in"
msgstr "命令行工具安装于" 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 "" msgid ""
"If you move calibre.app, you have to re-install the command line tools." "If you move calibre.app, you have to re-install the command line tools."
msgstr "如果您移动 calibre.app您必须重新安装命令行工具。" 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" msgid "No valid plugin path"
msgstr "不合法的插件路径" 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" msgid "%s is not a valid plugin path"
msgstr "%s 不是合法的插件路径" 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" msgid "Choose plugin"
msgstr "选择插件" 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" msgid "Plugin cannot be disabled"
msgstr "该插件不能被禁用" 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" msgid "The plugin: %s cannot be disabled"
msgstr "插件: %s 不能被禁用" 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" msgid "Plugin not customizable"
msgstr "无法个性化插件" 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" msgid "Plugin: %s does not need customization"
msgstr "插件: %s 无需个性化设置" 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" msgid "Customize %s"
msgstr "个性化 %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" msgid "Cannot remove builtin plugin"
msgstr "不能移除内置插件" 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." msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr " 无法移除. 该插件是内置插件. 您可以尝试禁用它而非移除." 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:" msgid "Error log:"
msgstr "错误日志:" 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:" msgid "Access log:"
msgstr "访问日志:" 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 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:589
msgid "Failed to start content server" msgid "Failed to start content server"
msgstr "无法启动内容服务器" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:503
msgid "Select location for books" msgid "Select location for books"
msgstr "选择书籍位置" 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" msgid "Invalid size"
msgstr "无效的尺寸" 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" msgid "The size %s is invalid. must be of the form widthxheight"
msgstr "尺寸大小 %s 不合法. 合法的格式为 宽度x高度" 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:736
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741
msgid "Invalid database location" msgid "Invalid database location"
msgstr "不合法的数据库路径" 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 " msgid "Invalid database location "
msgstr "不合法的数据库路径 " 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." msgid "<br>Must be a directory."
msgstr "<br>必须是文件目录." 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 " msgid "Invalid database location.<br>Cannot write to "
msgstr "不合法的数据库路径.<br>无法写入到 " 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" msgid "Checking database integrity"
msgstr "检查数据库完整性" 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" msgid "Failed to check database integrity"
msgstr "检查数据库完整性失败" 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" msgid "Some inconsistencies found"
msgstr "找到部分不一致" 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 "" msgid ""
"The following books had formats listed in the database that are not actually " "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 " "available. The entries for the formats have been removed. You should check "
@ -3840,240 +3899,240 @@ msgstr "将路径名改为小写(&L)"
msgid "&Saving books" msgid "&Saving books"
msgstr "保存书籍(&S)" 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/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences" msgid "Preferences"
msgstr "首选项" 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 "" msgid ""
"&Location of ebooks (The ebooks are stored in folders sorted by author and " "&Location of ebooks (The ebooks are stored in folders sorted by author and "
"metadata is stored in the file metadata.db)" "metadata is stored in the file metadata.db)"
msgstr "电子书位置(&L)(电子书籍按作者排序存储在文件目录中,元数据存储在 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" msgid "Browse for the new database location"
msgstr "选择新的数据库路径" 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" msgid "Show notification when &new version is available"
msgstr "新版程序可用时提示(&N)" 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:" msgid "Default network &timeout:"
msgstr "默认网络超时(&t)" 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 "" msgid ""
"Set the default timeout for network fetches (i.e. anytime we go out to the " "Set the default timeout for network fetches (i.e. anytime we go out to the "
"internet to get information)" "internet to get information)"
msgstr "设置网络访问的默认超时限制 (例如在从互联网获取信息时的超时)" 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" msgid " seconds"
msgstr " 秒" 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):" msgid "Choose &language (requires restart):"
msgstr "选择界面语言, 需重启(&l):" 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" msgid "Normal"
msgstr "普通" 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" msgid "High"
msgstr "高" 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" msgid "Low"
msgstr "低" 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:" msgid "Job &priority:"
msgstr "进程优先级(&p):" 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:" msgid "Preferred &output format:"
msgstr "首选输出格式(&O)" 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:" msgid "Preferred &input format order:"
msgstr "首选输入格式顺序(&I)" 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" msgid "Use &Roman numerals for series number"
msgstr "使用罗马数字作为序列数(&R)" 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)" msgid "Enable system &tray icon (needs restart)"
msgstr "显示系统托盘图标, 需重启生效(&t)" 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" msgid "Show &notifications in system tray"
msgstr "在系统托盘除显示和提醒" 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)" msgid "Show cover &browser in a separate window (needs restart)"
msgstr "在单独的窗口显示封面浏览界面, 需重启生效(&b)" 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" msgid "Search as you type"
msgstr "即时搜索" 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" msgid "Automatically send downloaded &news to ebook reader"
msgstr "自动将下载的新闻传输到电子书阅读器上(&n)" 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" msgid "&Delete news from library when it is automatically sent to reader"
msgstr "在将新闻传送到设备上后从书库中删除(&D)" 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):" msgid "&Number of covers to show in browse mode (needs restart):"
msgstr "浏览模式下显示的书籍封面数量(&N), 须重启生效;" 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" msgid "Toolbar"
msgstr "工具栏" 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" msgid "Large"
msgstr "大" 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" msgid "Medium"
msgstr "中" 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" msgid "Small"
msgstr "小" 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" msgid "&Button size in toolbar"
msgstr "工具栏按钮大小(&B)" 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" msgid "Show &text in toolbar buttons"
msgstr "在工具栏显示按钮文字(&t)" 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" msgid "Select visible &columns in library view"
msgstr "选择在书库界面中显示的新系列(&c)" 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:" msgid "Use internal &viewer for:"
msgstr "使用内部浏览器显示" 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" msgid "Add an email address to which to send books"
msgstr "将电子邮件地址添加到书籍发送目的" 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" msgid "&Add email"
msgstr "添加邮件地址(&A)" 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" msgid "Make &default"
msgstr "设为默认(&d)" 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" msgid "&Remove email"
msgstr "删除邮件地址(&R)" 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" msgid "calibre can send your books to you (or your reader) by email"
msgstr "Calibre 可以通过电子邮件将电子书籍发送给您或您的设备" 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):" msgid "&Maximum number of waiting worker processes (needs restart):"
msgstr "等待中的工作进程最大值(需要重启)(&M)" 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" msgid "&Check database integrity"
msgstr "检查数据库完整性(&C)" 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" msgid "&Install command line tools"
msgstr "安装命令行工具(&I)" 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" msgid "Open calibre &configuration directory"
msgstr "打开 calibre 配置目录(&C)" 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 "" msgid ""
"calibre contains a network server that allows you to access your book " "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 " "collection using a browser from anywhere in the world. Any changes to the "
"settings will only take effect after a server restart." "settings will only take effect after a server restart."
msgstr "Calibre 带有一个网络服务器程序,您可以由此使用浏览器访问你的书库。对服务器程序配置的修改需要重启服务器程序生效。" 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:" msgid "Server &port:"
msgstr "服务器端口(&p):" 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/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:" msgid "&Username:"
msgstr "用户名(&U):" 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/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 #: /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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:" msgid "&Password:"
msgstr "密码(&P):" 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 "" msgid ""
"If you leave the password blank, anyone will be able to access your book " "If you leave the password blank, anyone will be able to access your book "
"collection using the web interface." "collection using the web interface."
msgstr "如果您使用空密码将导致其他人可以从web界面访问您的书籍库." 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 "" msgid ""
"The maximum size (widthxheight) for displayed covers. Larger covers are " "The maximum size (widthxheight) for displayed covers. Larger covers are "
"resized. " "resized. "
msgstr "显示书籍封面的最大尺寸(宽度x高度). 过大的封面将会被相应缩小. " 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:" msgid "Max. &cover size:"
msgstr "最大封面大小(&c):" 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/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password" msgid "&Show password"
msgstr "显示密码(&S)" 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:" msgid "Max. &OPDS items per query:"
msgstr "每次请求最大 OPDS 项(&O)" 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" msgid "&Start Server"
msgstr "启动服务器(&S)" 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" msgid "St&op Server"
msgstr "停止服务器(&o)" 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" msgid "&Test Server"
msgstr "测试服务器(&T)" 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" msgid "Run server &automatically on startup"
msgstr "在系统启动时自动启动服务器(&a)" 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" msgid "View &server logs"
msgstr "查看服务器日志(&s)" 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 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid "" msgid ""
"<p>Remember to leave calibre running as the server only runs as long as " "<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 " "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 "" msgid ""
"Here you can customize the behavior of Calibre by controlling what plugins " "Here you can customize the behavior of Calibre by controlling what plugins "
"it uses." "it uses."
msgstr "从可以通过配置插件的启用与否来调整Calibre的功能特性." 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" msgid "Enable/&Disable plugin"
msgstr "启用/禁用插件(&D)" 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" msgid "&Customize plugin"
msgstr "定制插件(&C)" 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" msgid "&Remove plugin"
msgstr "移除插件(&R)" 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" msgid "Add new plugin"
msgstr "添加插件" 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:" msgid "Plugin &file:"
msgstr "插件文件(&F)" 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" msgid "&Add"
msgstr "添加(&A)" msgstr "添加(&A)"
@ -4457,28 +4516,36 @@ msgstr "需要密码"
msgid "Aborting..." msgid "Aborting..."
msgstr "正在中止..." 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: " msgid "Created by: "
msgstr "创建者: " 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" msgid "Last downloaded: never"
msgstr "最后下载:无" 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" msgid "%d days, %d hours and %d minutes ago"
msgstr "%d 天 %d 小时 %d 分钟前" 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" msgid "Last downloaded"
msgstr "最后下载" 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 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:190
msgid "Schedule news download" msgid "Schedule news download"
msgstr "计划新闻下载" 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" msgid "Add a custom news source"
msgstr "添加自定义新闻源" msgstr "添加自定义新闻源"
@ -5808,7 +5875,7 @@ msgstr "书籍既没有标题也没有 ISBN 编号"
msgid "No matches found for this book" msgid "No matches found for this book"
msgstr "未找到匹配此书信息" 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" msgid "Search"
msgstr "搜索" msgstr "搜索"
@ -7461,6 +7528,9 @@ msgstr "显示详细输出信息。有利调试"
#~ "conversion of a PDF file." #~ "conversion of a PDF file."
#~ msgstr "如果该HTML由PDF转换而来, 请指定平均行长度." #~ msgstr "如果该HTML由PDF转换而来, 请指定平均行长度."
#~ msgid "Input character &encoding"
#~ msgstr "输入字符编码(&E)"
#~ msgid "&Header regular expression:" #~ msgid "&Header regular expression:"
#~ msgstr "页眉正则表达式(&H)" #~ msgstr "页眉正则表达式(&H)"
@ -7505,3 +7575,9 @@ msgstr "显示详细输出信息。有利调试"
#~ msgid "Chinese" #~ msgid "Chinese"
#~ msgstr "中文" #~ 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=[]): def files_and_dirs(prefix, allowed_exts=[]):
prefix = os.path.expanduser(prefix)
for i in glob.iglob(prefix+'*'): for i in glob.iglob(prefix+'*'):
_, ext = os.path.splitext(i) _, ext = os.path.splitext(i)
ext = ext.lower().replace('.', '') ext = ext.lower().replace('.', '')