Sync to trunk.

This commit is contained in:
John Schember 2009-12-14 18:11:29 -05:00
commit 5f883cc03a
47 changed files with 7535 additions and 5672 deletions

View File

@ -4,6 +4,66 @@
# for important features/bug fixes.
# Also, each release can have new and improved recipes.
- version: 0.6.28
date: 2009-12-14
new features:
- title: "Download latest version of recipes from the calibre server automatically."
description: >
Now calibre will automatically check for updated versions of the recipes used to
download the built in news sources. As a result, there is no need to upgrade calibre
just for recipe fixes. Note that you still have to upgrade to get access to new
news sources.
type: major
- title: "Add a setting to control whether calibre will limit the max number of simultaneous jobs to the CPU count or not"
tickets: [4213]
- title: "Device drivers: Allow looking for books in multiple root directories on the device. Currently only the Android driver uses this."
- title: "Support for the Nokia N770 and the Ganaxa Ger 2"
- title: "FB2 Output: Various improvements"
- title: "Linux device detection: Drop dependency on libusb in favor of using SYSFS directly"
bug fixes:
- title: "Conversion pipeline: Decoding of XML files made more fault tolerant"
- title: "ebook-viewer: Ignore missing items in the spine, instead of erroring out"
- title: "Fixed Time magazine recipe to handle end-of-year special issue"
- title: "More fixes in the Android driver"
- title: "Failed recipe downloads should also update the last downloaded time to prevent excessive re-downloading"
- title: "MOBI Output: Handle invalid width and height settings in <img> tags"
- title: "MOBI Input: Add suport for files that use the 'record separator' ASCII character code"
new recipes:
- title: Golem
author: Kovid Goyal
- title: Netzpolitik
author: Kovid Goyal
- title: Nu.nl
author: Rob Hankel
improved recipes:
- "HRT: Vesti"
- Guardian
- Clarin
- Pagina 12
- Joel on Software
- version: 0.6.27
date: 2009-12-11
@ -16,14 +76,6 @@
type: major
tickets: [4145]
- title: "Download latest version of recipes from the calibre server automatically."
description: >
Now calibre will automatically check for updated versions of the recipes used to
download the built in news sources. As a result, there is no need to upgrade calibre
just for recipe fixes. Note that you still have to upgrade to get access to new
news sources.
type: major
- title: "Speed up download of news"
description: >
"Speed up download of news by allowing the download to happen in multiple threads

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '2008-2009, Darko Miletic <darko.miletic at gmail.com>'
@ -8,7 +7,6 @@ clarin.com
from calibre import strftime
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import Tag
class Clarin(BasicNewsRecipe):
title = 'Clarin'
@ -21,21 +19,16 @@ class Clarin(BasicNewsRecipe):
use_embedded_content = False
no_stylesheets = True
cover_url = strftime('http://www.clarin.com/diario/%Y/%m/%d/portada.jpg')
remove_javascript = True
encoding = 'cp1252'
language = 'es'
lang = 'es-AR'
direction = 'ltr'
extra_css = ' .Txt{ font-family: sans-serif } .Volan{ font-family: sans-serif; font-size: x-small} .Pie{ font-family: sans-serif; font-size: x-small} .Copete{font-family: sans-serif; font-size: large} .Hora{font-family: sans-serif; font-size: large} .Autor{font-family: sans-serif; font-size: small} '
html2lrf_options = [
'--comment', description
, '--category', category
, '--publisher', publisher
]
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"\npretty_print=True\noverride_css=" p {text-indent: 0cm; margin-top: 0em; margin-bottom: 0.5em} "'
conversion_options = {
'comment' : description
, 'tags' : category
, 'publisher': publisher
, 'language' : language
}
remove_tags = [
dict(name='a' , attrs={'class':'Imp' })
@ -60,14 +53,4 @@ class Clarin(BasicNewsRecipe):
lurl = u'http://www.servicios.clarin.com/notas/jsp/clarin/v9/notas/imprimir.jsp?pagid=' + lmain
return lurl
def preprocess_html(self, soup):
soup.html['lang'] = self.lang
soup.html['dir' ] = self.direction
mlang = Tag(soup,'meta',[("http-equiv","Content-Language"),("content",self.lang)])
mcharset = Tag(soup,'meta',[("http-equiv","Content-Type"),("content","text/html; charset=utf-8")])
soup.head.insert(0,mlang)
soup.head.insert(1,mcharset)
for item in soup.findAll(style=True):
del item['style']
return soup

View File

@ -15,8 +15,8 @@ class Guardian(BasicNewsRecipe):
__author__ = 'Seabound and Sujata Raman'
language = 'en_GB'
#oldest_article = 7
#max_articles_per_feed = 100
oldest_article = 7
max_articles_per_feed = 100
remove_javascript = True
timefmt = ' [%a, %d %b %Y]'
@ -43,6 +43,38 @@ class Guardian(BasicNewsRecipe):
#match-stats-summary{font-size:small; font-family:Arial,Helvetica,sans-serif;font-weight:normal;}
'''
feeds = [
('Front Page', 'http://www.guardian.co.uk/rss'),
('Business', 'http://www.guardian.co.uk/business/rss'),
('Sport', 'http://www.guardian.co.uk/sport/rss'),
('Culture', 'http://www.guardian.co.uk/culture/rss'),
('Money', 'http://www.guardian.co.uk/money/rss'),
('Life & Style', 'http://www.guardian.co.uk/lifeandstyle/rss'),
('Travel', 'http://www.guardian.co.uk/travel/rss'),
('Environment', 'http://www.guardian.co.uk/environment/rss'),
('Comment','http://www.guardian.co.uk/commentisfree/rss'),
]
def get_article_url(self, article):
url = article.get('guid', None)
if '/video/' in url or '/flyer/' in url or '/quiz/' in url or \
'/gallery/' in url or 'ivebeenthere' in url or \
'pickthescore' in url or 'audioslideshow' in url :
url = None
return url
def preprocess_html(self, soup):
for item in soup.findAll(style=True):
del item['style']
for item in soup.findAll(face=True):
del item['face']
for tag in soup.findAll(name=['ul','li']):
tag.name = 'div'
return soup
def find_sections(self):
soup = self.index_to_soup('http://www.guardian.co.uk/theguardian')
# find cover pic
@ -78,24 +110,13 @@ class Guardian(BasicNewsRecipe):
}
def parse_index(self):
try:
feeds = []
for title, href in self.find_sections():
feeds.append((title, list(self.find_articles(href))))
return feeds
def preprocess_html(self, soup):
for item in soup.findAll(style=True):
del item['style']
for item in soup.findAll(face=True):
del item['face']
for tag in soup.findAll(name=['ul','li']):
tag.name = 'div'
return soup
except:
raise NotImplementedError

View File

@ -23,7 +23,14 @@ class HRT(BasicNewsRecipe):
language = 'hr'
lang = 'hr-HR'
extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: serif1, serif}'
extra_css = '''@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)}
body{font-family: serif1, serif} .article_description{font-family: serif1, serif}
.news-single-timedata{color:#20558A; font-size:x-small;}
.nsTitle{color:#20558A; font-size:large; font-weight:bold;}
a{color:#20558A;}
.external-link-new-window{color:#20558A;}
'''
conversion_options = {
'comment' : description
@ -36,6 +43,7 @@ class HRT(BasicNewsRecipe):
preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')]
keep_only_tags = [dict(name='div', attrs={'class':'bigVijest'})]
remove_tags = [dict(name=['object','link','embed'])]

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = '2008-2009, Darko Miletic <darko.miletic at gmail.com>'
@ -6,7 +5,6 @@ __copyright__ = '2008-2009, Darko Miletic <darko.miletic at gmail.com>'
pagina12.com.ar
'''
from calibre import strftime
from calibre.web.feeds.news import BasicNewsRecipe
class Pagina12(BasicNewsRecipe):
@ -19,36 +17,33 @@ class Pagina12(BasicNewsRecipe):
max_articles_per_feed = 100
no_stylesheets = True
encoding = 'cp1252'
cover_url = strftime('http://www.pagina12.com.ar/fotos/%Y%m%d/diario/tapagn.jpg')
remove_javascript = True
use_embedded_content = False
language = 'es'
conversion_options = {
'comment' : description
, 'tags' : category
, 'publisher' : publisher
, 'language' : language
}
remove_tags = [dict(name='div', attrs={'id':['volver','logo','logo_suple','fin','permalink']})]
html2lrf_options = [
'--comment', description
, '--category', category
, '--publisher', publisher
feeds = [
(u'Edicion impresa', u'http://www.pagina12.com.ar/diario/rss/principal.xml' )
,(u'Espectaculos' , u'http://www.pagina12.com.ar/diario/rss/espectaculos.xml')
,(u'Radar' , u'http://www.pagina12.com.ar/diario/rss/radar.xml' )
,(u'Radar libros' , u'http://www.pagina12.com.ar/diario/rss/libros.xml' )
,(u'Cash' , u'http://www.pagina12.com.ar/diario/rss/cash.xml' )
,(u'Turismo' , u'http://www.pagina12.com.ar/diario/rss/turismo.xml' )
,(u'Libero' , u'http://www.pagina12.com.ar/diario/rss/libero.xml' )
,(u'NO' , u'http://www.pagina12.com.ar/diario/rss/no.xml' )
,(u'Las/12' , u'http://www.pagina12.com.ar/diario/rss/las12.xml' )
,(u'Soy' , u'http://www.pagina12.com.ar/diario/rss/soy.xml' )
,(u'M2' , u'http://www.pagina12.com.ar/diario/rss/futuro.xml' )
]
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"'
remove_tags = [
dict(name='div', attrs={'id':'volver'})
,dict(name='div', attrs={'id':'logo' })
]
feeds = [(u'Pagina/12', u'http://www.pagina12.com.ar/diario/rss/principal.xml')]
def print_version(self, url):
return url.replace('http://www.pagina12.com.ar/','http://www.pagina12.com.ar/imprimir/')
def preprocess_html(self, soup):
mtag = '<meta http-equiv="Content-Language" content="es-AR"/>'
soup.head.insert(0,mtag)
for item in soup.findAll(style=True):
del item['style']
return soup

View File

@ -18,32 +18,37 @@ class Time(BasicNewsRecipe):
language = 'en'
remove_javascript = True
extra_css = ''' h1 {font-family:Arial,Sans-serif;}
extra_css = ''' h1 {font-family:georgia,serif;color:#000000;}
.mainHd{font-family:georgia,serif;color:#000000;}
h2 {font-family:Arial,Sans-serif;}
.name{font-family:Arial,Sans-serif; font-size:x-small; }
.name{font-family:Arial,Sans-serif; font-size:x-small;font-weight:bold; }
.date{font-family:Arial,Sans-serif; font-size:x-small ;color:#999999;}
.byline{font-family:Arial,Sans-serif; font-size:x-small ;}
.photoBkt{ font-size:x-small ;}
.vertPhoto{font-size:x-small ;}
.credits{font-family:Arial,Sans-serif; font-size:x-small ;color:gray;}
.credit{font-family:Arial,Sans-serif; font-size:x-small ;color:gray;}
.artTxt{font-family:georgia,serif;}
#article{font-family:georgia,serif;}
#content{font-family:georgia,serif;}
.caption{font-family:georgia,serif; font-size:x-small;color:#333333;}
.credit{font-family:georgia,serif; font-size:x-small;color:#999999;}
a:link{color:#CC0000;}
.breadcrumb{font-family:Arial,Sans-serif;font-size:x-small;}
'''
keep_only_tags = [ dict(name ="div",attrs = {"id" :["article",]}) ,
keep_only_tags = [ dict(name ="div",attrs = {"id" :["content"]}) ,
dict(name ="div",attrs = {"class" :["artHd","artTxt","photoBkt","vertPhoto","image","copy"]}) ,]
remove_tags = [ dict(name ="div",attrs = {'class':['articlePagination','nextUp',"rtCol","pagination","enlarge",]}),
remove_tags = [ dict(name ="div",attrs = {'class':['articleFooterNav','listsByTopic','articleTools2','relatedContent','sideContent','topBannerWrap','articlePagination','nextUp',"rtCol","pagination","enlarge","contentTools2",]}),
dict(name ="span",attrs = {'class':['see']}),
dict(name ="div",attrs = {'id':['articleSideBar',"articleTools","articleFooter","cmBotLt","quigoPackage"]}),
dict(name ="div",attrs = {'id':['header','articleSideBar',"articleTools","articleFooter","cmBotLt","quigoPackage"]}),
dict(name ="a",attrs = {'class':['listLink']}),
dict(name ="ul",attrs = {'id':['shareSocial','tabs']}),
dict(name ="li",attrs = {'class':['back']}),
dict(name ="ul",attrs = {'class':['navCount']}),
]
recursions = 1
match_regexps = [r'/[0-9,]+-(2|3|4|5|6|7|8|9)(,\d+){0,1}.html']
recursions = 10
match_regexps = [r'/[0-9,]+-(2|3|4|5|6|7|8|9)(,\d+){0,1}.html',r'http://www.time.com/time/specials/packages/article/.*']
preprocess_regexps = [(re.compile(
r'<meta .+/>'), lambda m:'')]
@ -101,3 +106,8 @@ class Time(BasicNewsRecipe):
else:
ans.append(unicode(t))
return u' '.join(ans).replace(u'\xa0', u'').strip()
def postprocess_html(self,soup,first):
for tag in soup.findAll(attrs ={'class':['artPag','pagination']}):
tag.extract()
return soup

View File

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

View File

@ -404,15 +404,14 @@ from calibre.devices.bebook.driver import BEBOOK, BEBOOK_MINI
from calibre.devices.blackberry.driver import BLACKBERRY
from calibre.devices.cybookg3.driver import CYBOOKG3, CYBOOK_OPUS
from calibre.devices.eb600.driver import EB600, COOL_ER, SHINEBOOK, \
POCKETBOOK360, GER2
POCKETBOOK360, GER2, ITALICA
from calibre.devices.iliad.driver import ILIAD
from calibre.devices.irexdr.driver import IREXDR1000
from calibre.devices.jetbook.driver import JETBOOK
from calibre.devices.kindle.driver import KINDLE, KINDLE2, KINDLE_DX
from calibre.devices.nook.driver import NOOK
from calibre.devices.prs500.driver import PRS500
from calibre.devices.prs505.driver import PRS505
from calibre.devices.prs700.driver import PRS700
from calibre.devices.prs505.driver import PRS505, PRS700
from calibre.devices.android.driver import ANDROID
from calibre.devices.nokia.driver import N770
from calibre.devices.eslick.driver import ESLICK
@ -459,7 +458,6 @@ plugins += [
BEBOOK_MINI,
BLACKBERRY,
CYBOOKG3,
EB600,
ILIAD,
IREXDR1000,
JETBOOK,
@ -474,12 +472,14 @@ plugins += [
N770,
CYBOOK_OPUS,
COOL_ER,
SHINEBOOK,
ESLICK,
NUUT2,
IRIVER_STORY,
POCKETBOOK360,
GER2,
ITALICA,
SHINEBOOK,
EB600,
]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
x.__name__.endswith('MetadataReader')]

View File

@ -196,7 +196,7 @@ class InputFormatPlugin(Plugin):
def __call__(self, stream, options, file_ext, log,
accelerators, output_dir):
log('InputFormatPlugin: %s running'%self.name, end=' ')
log('InputFormatPlugin: %s running'%self.name)
if hasattr(stream, 'name'):
log('on', stream.name)

View File

@ -123,6 +123,7 @@ def debug_device_driver():
print
print
print "Don't forget to send the file /tmp/ioreg.txt as well"
print "You can view it by typing the command: open /tmp/ioreg.txt"
if iswindows:
raw_input('Press Enter to continue...')

View File

@ -101,7 +101,6 @@ class GER2(EB600):
name = 'Ganaxa GeR2 Device Interface'
gui_name = 'Ganaxa GeR2'
supported_platforms = ['windows', 'linux']
FORMATS = ['pdf']
@ -112,3 +111,15 @@ class GER2(EB600):
VENDOR_NAME = 'GANAXA'
WINDOWS_MAIN_MEN = 'GER2_________-FD'
WINDOWS_CARD_A_MEM = 'GER2_________-SD'
class ITALICA(EB600):
name = 'Italica Device Interface'
gui_name = 'Italica'
FORMATS = ['epub', 'pdf', 'txt']
VENDOR_NAME = 'ITALICA'
WINDOWS_MAIN_MEM = 'EREADER'
OSX_MAIN_MEM = 'Italica eReader Media'

View File

@ -16,7 +16,7 @@ class N770(USBMS):
gui_name = 'Nokia 770'
description = _('Communicate with the Nokia Nokia 770 internet tablet.')
author = 'John Schember'
supported_platforms = ['windows', 'linux']
supported_platforms = ['windows', 'linux', 'osx']
# Ordered list of supported formats
FORMATS = ['mobi', 'prc', 'epub', 'html', 'zip', 'fb2', 'chm', 'pdb',

View File

@ -240,8 +240,10 @@ def main():
print "Books in main memory:"
for book in dev.books():
print book
print "\nBooks on storage card:"
for book in dev.books(oncard=True): print book
print "\nBooks on storage carda:"
for book in dev.books(oncard='carda'): print book
print "\nBooks on storage cardb:"
for book in dev.books(oncard='cardb'): print book
elif command == "mkdir":
parser = OptionParser(usage="usage: %prog mkdir [options] path\nCreate a directory on the device\n\npath must begin with / or card:/")
if len(args) != 1:

View File

@ -24,7 +24,7 @@ class PRS505(CLI, Device):
name = 'PRS-300/505 Device Interface'
gui_name = 'SONY Pocket Edition'
description = _('Communicate with the Sony PRS-300/505/500 eBook reader.')
author = _('Kovid Goyal and John Schember')
author = 'Kovid Goyal and John Schember'
supported_platforms = ['windows', 'osx', 'linux']
path_sep = '/'
@ -204,3 +204,22 @@ class PRS505(CLI, Device):
self.report_progress(1.0, _('Sending metadata to device...'))
class PRS700(PRS505):
name = 'PRS-600/700 Device Interface'
description = _('Communicate with the Sony PRS-600/700 eBook reader.')
author = 'Kovid Goyal and John Schember'
gui_name = 'SONY Touch edition'
supported_platforms = ['windows', 'osx', 'linux']
BCD = [0x31a]
WINDOWS_MAIN_MEM = re.compile('PRS-((700/)|(600&))')
WINDOWS_CARD_A_MEM = re.compile(r'PRS-((700/\S+:)|(600_))MS')
WINDOWS_CARD_B_MEM = re.compile(r'PRS-((700/\S+:)|(600_))SD')
OSX_MAIN_MEM = re.compile(r'Sony PRS-((700/[^:]+)|(600)) Media')
OSX_CARD_A_MEM = re.compile(r'Sony PRS-((700/[^:]+:)|(600 ))MS Media')
OSX_CARD_B_MEM = re.compile(r'Sony PRS-((700/[^:]+:)|(600 ))SD Media')

View File

@ -1,6 +0,0 @@
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
'''
Device driver for the SONY PRS-700
'''

View File

@ -1,32 +0,0 @@
# -*- coding: utf-8 -*-
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
'''
Device driver for the SONY PRS-700
'''
from calibre.devices.prs505.driver import PRS505
import re
class PRS700(PRS505):
name = 'PRS-600/700 Device Interface'
description = _('Communicate with the Sony PRS-600/700 eBook reader.')
author = _('Kovid Goyal and John Schember')
gui_name = 'SONY Touch edition'
supported_platforms = ['windows', 'osx', 'linux']
BCD = [0x31a]
WINDOWS_MAIN_MEM = re.compile('PRS-((700/)|(600&))')
WINDOWS_CARD_A_MEM = re.compile(r'PRS-((700/\S+:)|(600_))MS')
WINDOWS_CARD_B_MEM = re.compile(r'PRS-((700/\S+:)|(600_))SD')
OSX_MAIN_MEM = re.compile(r'Sony PRS-((700/[^:]+)|(600)) Media')
OSX_CARD_A_MEM = re.compile(r'Sony PRS-((700/[^:]+:)|(600 ))MS Media')
OSX_CARD_B_MEM = re.compile(r'Sony PRS-((700/[^:]+:)|(600 ))SD Media')

View File

@ -65,8 +65,10 @@ class LinuxScanner(object):
ans.add(tuple(dev))
return ans
linux_scanner = None
linux_scanner = LinuxScanner()
if islinux:
linux_scanner = LinuxScanner()
class DeviceScanner(object):

View File

@ -56,13 +56,18 @@ class USBMS(CLI, Device):
return bl
prefix = self._card_a_prefix if oncard == 'carda' else self._card_b_prefix if oncard == 'cardb' else self._main_prefix
ebook_dir = self.EBOOK_DIR_CARD_A if oncard == 'carda' else \
ebook_dirs = self.EBOOK_DIR_CARD_A if oncard == 'carda' else \
self.EBOOK_DIR_CARD_B if oncard == 'cardb' else \
self.get_main_ebook_dir()
if isinstance(ebook_dirs, basestring):
ebook_dirs = [ebook_dirs]
for ebook_dir in ebook_dirs:
ebook_dir = os.path.join(prefix, *(ebook_dir.split('/')))
if not os.path.exists(ebook_dir): continue
# Get all books in the ebook_dir directory
if self.SUPPORTS_SUB_DIRS:
for path, dirs, files in os.walk(os.path.join(prefix, ebook_dir)):
for path, dirs, files in os.walk(ebook_dir):
# Filter out anything that isn't in the list of supported ebook types
for book_type in self.FORMATS:
match = fnmatch.filter(files, '*.%s' % (book_type))
@ -75,13 +80,12 @@ class USBMS(CLI, Device):
traceback.print_exc()
continue
else:
path = os.path.join(prefix, ebook_dir)
paths = os.listdir(path)
paths = os.listdir(ebook_dir)
for i, filename in enumerate(paths):
self.report_progress((i+1) / float(len(paths)), _('Getting list of books on device...'))
if path_to_ext(filename) in self.FORMATS:
try:
bl.append(self.__class__.book_from_path(os.path.join(path, filename)))
bl.append(self.__class__.book_from_path(os.path.join(ebook_dir, filename)))
except: # Probably a file name encoding error
import traceback
traceback.print_exc()

View File

@ -356,7 +356,10 @@ class MobiMLizer(object):
if value == getattr(self.profile, prop):
result = '100%'
else:
ems = int(round(value / self.profile.fbase))
try:
ems = int(round(float(value) / self.profile.fbase))
except:
continue
result = "%dem" % ems
istate.attrib[prop] = result
elif tag == 'hr' and asfloat(style['width']) > 0:

View File

@ -701,6 +701,7 @@ class MobiReader(object):
if self.book_header.ancient and '<html' not in self.mobi_html[:300].lower():
self.mobi_html = self.mobi_html.replace('\r ', '\n\n ')
self.mobi_html = self.mobi_html.replace('\0', '')
self.mobi_html = self.mobi_html.replace('\x1e', '') # record separator
return processed_records

View File

@ -759,6 +759,7 @@ class Manifest(object):
% (self.id, self.href, self.media_type)
def _parse_xml(self, data):
data = xml_to_unicode(data, strip_encoding_pats=True)[0]
parser = etree.XMLParser(recover=True)
try:
return etree.fromstring(data, parser=parser)
@ -1205,8 +1206,12 @@ class Manifest(object):
return elem
def to_opf2(self, parent=None):
def sort(x, y):
return cmp(x.href, y.href)
elem = element(parent, OPF('manifest'))
for item in self.items:
for item in sorted(self.items, cmp=sort):
media_type = item.media_type
if media_type in OEB_DOCS:
media_type = XHTML_MIME
@ -1434,7 +1439,6 @@ class Guide(object):
return elem
# TODO: This needs beefing up to support the interface of toc.TOC
class TOC(object):
"""Represents a hierarchical table of contents or navigation tree for
accessing arbitrary semantic sections within an OEB data model book.

View File

@ -195,7 +195,10 @@ class EbookIterator(object):
mt = self.opf.manifest.type_for_id(i.idref)
if mt is None:
mt = guess_type(spath)[0]
try:
self.spine.append(SpineItem(spath, mime_type=mt))
except:
self.log.warn('Missing spine item:', repr(spath))
cover = self.opf.cover
if self.ebook_ext in ('lit', 'mobi', 'prc', 'opf') and cover:

View File

@ -167,7 +167,7 @@ class FlowSplitter(object):
self.csp_counter = 0
base, ext = os.path.splitext(self.base)
self.base = base.replace('%', '%%')+'_split_%d'+ext
self.base = base.replace('%', '%%')+'_split_%.3d'+ext
self.trees = [self.item.data.getroottree()]
self.splitting_on_page_breaks = True

View File

@ -85,6 +85,8 @@ def _config():
help=_('Maximum number of waiting worker processes'))
c.add_opt('get_social_metadata', default=True,
help=_('Download social metadata (tags/rating/etc.)'))
c.add_opt('enforce_cpu_limit', default=True,
help=_('Limit max simultaneous jobs to number of CPUs'))
return ConfigProxy(c)

View File

@ -456,6 +456,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
self.connect(self.button_open_config_dir, SIGNAL('clicked()'),
self.open_config_dir)
self.opt_get_social_metadata.setChecked(config['get_social_metadata'])
self.opt_enforce_cpu_limit.setChecked(config['enforce_cpu_limit'])
def open_config_dir(self):
from calibre.utils.config import config_dir
@ -742,6 +743,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog):
config['upload_news_to_device'] = self.sync_news.isChecked()
config['search_as_you_type'] = self.search_as_you_type.isChecked()
config['get_social_metadata'] = self.opt_get_social_metadata.isChecked()
config['enforce_cpu_limit'] = bool(self.opt_enforce_cpu_limit.isChecked())
fmts = []
for i in range(self.viewer.count()):
if self.viewer.item(i).checkState() == Qt.Checked:

View File

@ -15,7 +15,7 @@
<string>Preferences</string>
</property>
<property name="windowIcon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/config.svg</normaloff>:/images/config.svg</iconset>
</property>
<layout class="QGridLayout">
@ -90,7 +90,7 @@
<x>0</x>
<y>0</y>
<width>524</width>
<height>680</height>
<height>683</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_7">
@ -148,7 +148,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/mimetypes/dir.svg</normaloff>:/images/mimetypes/dir.svg</iconset>
</property>
</widget>
@ -285,7 +285,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/arrow-up.svg</normaloff>:/images/arrow-up.svg</iconset>
</property>
</widget>
@ -309,7 +309,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/arrow-down.svg</normaloff>:/images/arrow-down.svg</iconset>
</property>
</widget>
@ -473,7 +473,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/arrow-up.svg</normaloff>:/images/arrow-up.svg</iconset>
</property>
</widget>
@ -497,7 +497,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/arrow-down.svg</normaloff>:/images/arrow-down.svg</iconset>
</property>
</widget>
@ -557,7 +557,7 @@
<string>&amp;Add email</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/plus.svg</normaloff>:/images/plus.svg</iconset>
</property>
<property name="iconSize">
@ -584,7 +584,7 @@
<string>&amp;Remove email</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/minus.svg</normaloff>:/images/minus.svg</iconset>
</property>
<property name="iconSize">
@ -649,27 +649,34 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="compact_button">
<property name="text">
<string>&amp;Check database integrity</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="button_osx_symlinks">
<property name="text">
<string>&amp;Install command line tools</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="button_open_config_dir">
<property name="text">
<string>Open calibre &amp;configuration directory</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="opt_enforce_cpu_limit">
<property name="text">
<string>Limit the max. simultaneous jobs to the available CPU &amp;cores</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_4">
@ -959,7 +966,7 @@
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../../../../resources/images.qrc">
<iconset resource="../../../../work/calibre/resources/images.qrc">
<normaloff>:/images/document_open.svg</normaloff>:/images/document_open.svg</iconset>
</property>
</widget>
@ -1030,7 +1037,7 @@
</customwidget>
</customwidgets>
<resources>
<include location="../../../../../resources/images.qrc"/>
<include location="../../../../work/calibre/resources/images.qrc"/>
</resources>
<connections>
<connection>

View File

@ -290,6 +290,7 @@ class Scheduler(QObject):
def recipe_download_failed(self, arg):
self.lock.lock()
try:
self.recipe_model.update_last_downloaded(arg['urn'])
self.download_queue.remove(arg['urn'])
finally:
self.lock.unlock()

View File

@ -31,7 +31,8 @@ class JobManager(QAbstractTableModel):
self.jobs = []
self.add_job = Dispatcher(self._add_job)
self.server = Server(limit=int(config['worker_limit']/2.0))
self.server = Server(limit=int(config['worker_limit']/2.0),
enforce_cpu_limit=config['enforce_cpu_limit'])
self.changed_queue = Queue()
self.timer = QTimer(self)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: calibre 0.6.27\n"
"POT-Creation-Date: 2009-12-11 15:44+MST\n"
"PO-Revision-Date: 2009-12-11 15:44+MST\n"
"Project-Id-Version: calibre 0.6.28\n"
"POT-Creation-Date: 2009-12-14 14:13+MST\n"
"PO-Revision-Date: 2009-12-14 14:13+MST\n"
"Last-Translator: Automatically generated\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
@ -26,7 +26,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:765
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:768
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:189
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:193
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
@ -63,19 +63,19 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:154
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:591
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:779
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:895
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:900
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:960
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:901
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:961
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:185
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:186
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:28
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29
#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:83
@ -96,8 +96,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:217
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:219
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:268
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:270
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:277
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:120
#: /home/kovid/work/calibre/src/calibre/gui2/add.py:127
#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21
@ -380,7 +380,6 @@ msgid "Communicate with the Blackberry smart phone."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24
#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:17
#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:16
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
@ -388,33 +387,32 @@ msgstr ""
msgid "Kovid Goyal"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:21
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22
msgid "Communicate with the Cybook Gen 3 eBook reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:86
#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17
#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30
msgid "John Schember"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:74
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:75
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:77
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:134
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:136
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:113
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:115
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:117
msgid "Transferring books to device..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:85
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:94
msgid "Communicate with the Cybook Opus eBook reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:95
#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17
#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30
msgid "John Schember"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23
msgid "Communicate with the EB600 eBook reader."
msgstr ""
@ -427,7 +425,7 @@ msgstr ""
msgid "Communicate with the IRex Iliad eBook reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22
msgid "Device Interface"
msgstr ""
@ -459,6 +457,10 @@ msgstr ""
msgid "Communicate with the Kindle DX eBook reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17
msgid "Communicate with the Nokia Nokia 770 internet tablet."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:16
msgid "The Nook"
msgstr ""
@ -483,9 +485,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:70
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:81
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:90
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:75
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:85
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:94
msgid "Getting list of books on device..."
msgstr ""
@ -493,24 +495,19 @@ msgstr ""
msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18
msgid "Kovid Goyal and John Schember"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:167
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:146
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:135
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150
msgid "Removing books from device..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:202
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:161
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:165
msgid "Sending metadata to device..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:17
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:208
msgid "Communicate with the Sony PRS-600/700 eBook reader."
msgstr ""
@ -596,13 +593,13 @@ msgstr ""
msgid "Get device information..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:127
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:123
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:131
msgid "Adding books to device metadata listing..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:155
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:154
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Removing books from device metadata listing..."
msgstr ""
@ -992,7 +989,7 @@ msgstr ""
msgid "Normally, if the input file has no cover and you don't specify one, a default cover is generated with the title, authors, etc. This option disables the generation of this cover."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:130
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:141
#: /home/kovid/work/calibre/src/calibre/ebooks/pml/pmlml.py:113
#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:101
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77
@ -1522,7 +1519,7 @@ msgid ""
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Cover"
msgstr ""
@ -1551,70 +1548,70 @@ msgstr ""
msgid "All articles"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Title Page"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Index"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Glossary"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "Acknowledgements"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "Bibliography"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Colophon"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Copyright"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Dedication"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334
msgid "Epigraph"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1334
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335
msgid "Foreword"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1335
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336
msgid "List of Illustrations"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1336
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337
msgid "List of Tables"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1337
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338
msgid "Notes"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1338
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339
msgid "Preface"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1339
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1340
msgid "Main Text"
msgstr ""
@ -2041,20 +2038,24 @@ msgstr ""
msgid "Download social metadata (tags/rating/etc.)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:89
msgid "Limit max simultaneous jobs to number of CPUs"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:403
msgid "Copied"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161
msgid "Copy"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:159
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161
msgid "Copy to Clipboard"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:389
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:391
msgid "Choose Files"
msgstr ""
@ -2279,12 +2280,12 @@ msgstr ""
#: /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:69
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:70
#: /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:509
#: /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:526
#: /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:560
#: /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:512
#: /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:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375
@ -3375,126 +3376,126 @@ msgstr ""
msgid "new email address"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:468
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:813
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1094
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
msgid "Error"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470
msgid "Failed to install command line tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
msgid "Command line tools installed"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:474
msgid "Command line tools installed in"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:474
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:475
msgid "If you move calibre.app, you have to re-install the command line tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:525
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
msgid "No valid plugin path"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:527
msgid "%s is not a valid plugin path"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:530
msgid "Choose plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:542
msgid "Plugin cannot be disabled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:542
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:543
msgid "The plugin: %s cannot be disabled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552
msgid "Plugin not customizable"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:553
msgid "Plugin: %s does not need customization"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:560
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:561
msgid "Customize"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:598
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:599
msgid "Cannot remove builtin plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:599
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:600
msgid " cannot be removed. It is a builtin plugin. Try disabling it instead."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:632
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:633
msgid "Error log:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:639
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:640
msgid "Access log:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:667
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:668
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:613
msgid "Failed to start content server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:692
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:513
msgid "Select location for books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:699
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700
msgid "Invalid size"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:700
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:701
msgid "The size %s is invalid. must be of the form widthxheight"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:757
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:754
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:759
msgid "Invalid database location"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:753
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:755
msgid "Invalid database location "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:754
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:756
msgid "<br>Must be a directory."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:758
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:760
msgid "Invalid database location.<br>Cannot write to "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:792
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:794
msgid "Checking database integrity"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:814
msgid "Failed to check database integrity"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:817
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:819
msgid "Some inconsistencies found"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:818
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:820
msgid "The following books had formats listed in the database that are not actually available. The entries for the formats have been removed. You should check them manually. This can happen if you manipulate the files in the library folder directly."
msgstr ""
@ -3578,264 +3579,268 @@ msgstr ""
msgid "&Saving books"
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:496
#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173
msgid "Preferences"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497
msgid "&Location of ebooks (The ebooks are stored in folders sorted by author and metadata is stored in the file metadata.db)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498
msgid "Browse for the new database location"
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:500
msgid "Show notification when &new version is available"
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:501
msgid "Download &social metadata (tags/ratings/etc.) by default"
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:502
msgid "Default network &timeout:"
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:503
msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504
msgid " seconds"
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:505
msgid "Choose &language (requires restart):"
msgstr ""
#: /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:506
msgid "Normal"
msgstr ""
#: /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:507
msgid "High"
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:508
msgid "Low"
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:509
msgid "Job &priority:"
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:510
msgid "Preferred &output format:"
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:511
msgid "Preferred &input format order:"
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:514
msgid "Use &Roman numerals for series number"
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:515
msgid "Enable system &tray icon (needs restart)"
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:516
msgid "Show &notifications in system tray"
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:517
msgid "Show cover &browser in a separate window (needs restart)"
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:518
msgid "Search as you type"
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:519
msgid "Automatically send downloaded &news to ebook reader"
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:520
msgid "&Delete news from library when it is automatically sent to reader"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521
msgid "&Number of covers to show in browse mode (needs restart):"
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:522
msgid "Toolbar"
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:523
msgid "Large"
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:524
msgid "Medium"
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:525
msgid "Small"
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:526
msgid "&Button size in toolbar"
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:527
msgid "Show &text in toolbar buttons"
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:528
msgid "Select visible &columns in library view"
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:531
msgid "Use internal &viewer for:"
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:532
msgid "Add an email address to which to send books"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533
msgid "&Add email"
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:534
msgid "Make &default"
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:535
msgid "&Remove email"
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:536
msgid "calibre can send your books to you (or your reader) by email"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537
msgid "&Maximum number of waiting worker processes (needs restart):"
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:538
msgid "&Check database integrity"
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:539
msgid "&Install command line tools"
msgstr ""
#: /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:540
msgid "Open calibre &configuration directory"
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:541
msgid "Limit the max. simultaneous jobs to the available CPU &cores"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
msgid "Server &port:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117
msgid "&Username:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119
msgid "&Password:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
msgid "Max. &cover size:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212
msgid "&Show password"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
msgid "Max. &OPDS items per query:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
msgid "&Start Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
msgid "St&op Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553
msgid "&Test Server"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
msgid "Run server &automatically on startup"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
msgid "View &server logs"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46
msgid ""
"<p>Remember to leave calibre running as the server only runs as long as calibre is running.\n"
"<p>Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558
msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559
msgid "Enable/&Disable plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560
msgid "&Customize plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561
msgid "&Remove plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562
msgid "Add new plugin"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563
msgid "Plugin &file:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565
msgid "&Add"
msgstr ""
@ -4685,54 +4690,54 @@ msgstr ""
msgid "Regular expression (?P<isbn>)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:52
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53
msgid "Job"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54
msgid "Status"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55
msgid "Progress"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56
msgid "Running time"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:67
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68
msgid "There are %d running jobs:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:71
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:78
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:93
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94
msgid "Unknown job"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:74
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75
msgid "There are %d waiting jobs:"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:210
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:213
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214
msgid "Cannot kill job"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212
msgid "Cannot kill jobs that communicate with the device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215
msgid "Job has already run"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:242
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:243
msgid "Unavailable"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:253
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:254
msgid " - Jobs"
msgstr ""
@ -6865,12 +6870,12 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:73
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:82
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:172
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:181
msgid "Scheduled"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:173
#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:182
msgid "Custom"
msgstr ""

View File

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-10 20:44+0000\n"
"PO-Revision-Date: 2009-12-10 21:08+0000\n"
"Last-Translator: S. Dorscht <Unknown>\n"
"POT-Creation-Date: 2009-12-11 23:27+0000\n"
"PO-Revision-Date: 2009-12-11 23:47+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-12-11 04:33+0000\n"
"X-Launchpad-Export-Date: 2009-12-13 04:35+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n"
@ -27,8 +27,8 @@ msgstr "Macht absolut gar nichts"
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:53
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:756
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:759
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:765
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:768
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:189
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
@ -463,8 +463,8 @@ msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:134
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:136
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:113
msgid "Transferring books to device..."
@ -486,7 +486,7 @@ msgstr "Kommunikation mit dem ESlick eBook Reader."
msgid "Communicate with the IRex Iliad eBook reader."
msgstr "Kommunikation mit dem IRex Iliad eBook Reader."
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23
msgid "Device Interface"
msgstr "Geräte-Schnittstellen"
@ -535,10 +535,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "Kommunikation mit dem Sony PRS-500 eBook Reader."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:103
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:114
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -557,14 +557,14 @@ msgstr "Kommunikation mit dem Sony PRS-300/505/500 eBook Reader."
msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal und John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:167
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:146
msgid "Removing books from device..."
msgstr "Bücher vom Gerät entfernen ..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:202
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:161
msgid "Sending metadata to device..."
msgstr "Metadaten ans Gerät senden ..."
@ -573,21 +573,21 @@ msgstr "Metadaten ans Gerät senden ..."
msgid "Communicate with the Sony PRS-600/700 eBook reader."
msgstr "Kommunikation mit dem Sony PRS-600/700 eBook Reader."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:299
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:371
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:308
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:380
msgid "Unable to detect the %s disk drive. Try rebooting."
msgstr ""
"Das Laufwerk %s konnte nicht gefunden werden. Versuchen Sie einen Neustart."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:439
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:448
msgid "Unable to detect the %s disk drive."
msgstr "Das %s-Laufwerk konnte nicht erkannt werden."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:532
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:541
msgid "Could not find mount helper: %s."
msgstr "Mount Helper konnte nicht gefunden werden: %s."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:544
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:553
msgid ""
"Unable to detect the %s disk drive. Your kernel is probably exporting a "
"deprecated version of SYSFS."
@ -595,29 +595,29 @@ msgstr ""
"%s Festplatte konnte nicht erkannt werden. Ihr Kernel exportiert "
"möglicherweise eine abgelehnte Version von SYSFS."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:552
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:561
msgid "Unable to mount main memory (Error code: %d)"
msgstr "Hauptspeicher konnte nicht eingehängt werden (Fehler-Code: %d)"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:689
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:691
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:698
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:700
msgid "The reader has no storage card in this slot."
msgstr "Das Gerät hat keine Speicherkarte in diesem Laufwerk."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:693
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:702
msgid "Selected slot: %s is not supported."
msgstr "Gewählter Slot: %s wird nicht unterstützt."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:724
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:733
msgid "There is insufficient free space in main memory"
msgstr "Nicht genügend freier Spreicherplatz im Hauptspeicher"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:726
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:728
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:735
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:737
msgid "There is insufficient free space on the storage card"
msgstr "Nicht genügend freier Speicherplatz auf der Speicherkarte"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:739
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:748
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:125
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1059
@ -2249,11 +2249,11 @@ msgstr ""
"Voreinstellung ist cp1252. Achtung: Diese Einstellung wird nicht von allen "
"Formaten übernommen."
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:22
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24
msgid "Do not extract images from the document"
msgstr "Bilder nicht aus dem Dokument extrahieren"
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26
msgid ""
"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 "
@ -2263,6 +2263,10 @@ msgstr ""
"soll. Gültige Werte sind Dezimalzahlen zwischen 0 und 1. Die Voreinstellung "
"ist 0.5, das ist die mittlere Zeilenlänge."
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30
msgid "Use the new PDF conversion engine."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31
msgid ""
"command ...\n"
@ -3508,7 +3512,7 @@ msgid "RB Output"
msgstr "RB-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1420
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
msgid "Choose the format to view"
msgstr "Format zur Vorschau wählen"
@ -5783,15 +5787,15 @@ msgstr "Mit Trennstrich versehen"
msgid "<b>Changes will only take effect after a restart.</b>"
msgstr "<b>Änderungen werden erst nach einem Neustart wirksam.</b>"
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:64
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70
msgid " - LRF Viewer"
msgstr " - LRF Viewer"
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
msgid "<b>No matches</b> for the search phrase <i>%s</i> were found."
msgstr "<b>Keine Treffer</b> für die Suchworte <i>%s</i> gefunden."
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:389
msgid "No matches found"
msgstr "Keine Treffer gefunden"
@ -6280,7 +6284,7 @@ msgid "Save to disk in a single directory"
msgstr "Auf Festplatte in ein einziges Verzeichnis speichern"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1522
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523
msgid "Save only %s format to disk"
msgstr "Nur das %s Format auf Festplatte speichern"
@ -6315,7 +6319,7 @@ msgid "Calibre Library"
msgstr "Calibre Bibliothek"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1665
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1666
msgid "Choose a location for your ebook library."
msgstr "Wählen Sie einen Speicherort für Ihre eBook Bibliothek."
@ -6447,7 +6451,7 @@ msgstr "Konnte Metadaten nicht laden"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1138
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1163
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1276
msgid "No books selected"
msgstr "Keine Bücher ausgewählt"
@ -6514,37 +6518,37 @@ msgstr ""
msgid "Fetching news from "
msgstr "Rufe Nachrichten ab von "
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235
msgid " fetched."
msgstr " abgerufen."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1274
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
msgid "Cannot convert"
msgstr "Konvertierung nicht möglich"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1303
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1304
msgid "Starting conversion of %d book(s)"
msgstr "Starte Konvertierung von %d Büchern"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434
msgid "No book selected"
msgstr "Kein Buch ausgewählt"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1464
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
msgid "Cannot view"
msgstr "Ansehen nicht möglich"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1432
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
msgid "Cannot open folder"
msgstr "Konnte Verzeichnis nicht öffnen"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1449
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
msgid "Multiple Books Selected"
msgstr "Mehrere Bücher ausgewählt"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1451
msgid ""
"You are attempting to open %d books. Opening too many books at once can be "
"slow and have a negative effect on the responsiveness of your computer. Once "
@ -6556,32 +6560,32 @@ msgstr ""
"Rechners haben. Einmal gestartet kann der Prozess nicht beendet werden, "
"bevor er abgeschlossen ist. Möchten Sie fortfahren?"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1466
msgid "%s has no available formats."
msgstr "%s hat keine verfügbaren Formate."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1506
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
msgid "Cannot configure"
msgstr "Konfiguration nicht möglich"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1508
msgid "Cannot configure while there are running jobs."
msgstr "Konfiguration nicht möglich während Aufträge abgearbeitet werden."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1550
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
msgid "No detailed info available"
msgstr "Es sind keine genaueren Informationen verfügbar"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1552
msgid "No detailed information is available for books on the device."
msgstr ""
"Es sind keine weitere Informationen über Bücher auf dem Gerät verfügbar"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1603
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
msgid "Error talking to device"
msgstr "Fehler in der Kommunikation zum Gerät"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1605
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
@ -6589,12 +6593,12 @@ msgstr ""
"Es trat ein Fehler in der Kommunikation mit dem Gerät auf. Bitte entfernen "
"und schließen Sie das Gerät wieder an und - oder starten Sie neu."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
msgid "Conversion Error"
msgstr "Konvertierungsfehler"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1629
msgid ""
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
"first remove the DRM using third party tools."
@ -6603,19 +6607,19 @@ msgstr ""
"href=\"%s\">DRM</a> geschütztes Buch. Sie müssen zuerst das DRM mit Hilfe "
"anderer Programme entfernen."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1647
msgid "<b>Failed</b>"
msgstr "<b>Misslungen</b>"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
msgid "Invalid library location"
msgstr "Ungültiger Ort der Bibliothek"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676
msgid "Could not access %s. Using %s as the library."
msgstr "Konnte nicht auf %s zugreifen. Verwende %s als Bibliothek."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1723
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1724
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development."
@ -6624,12 +6628,12 @@ msgstr ""
"Falls Sie es nützlich finden, sollten Sie eine Spende zur Unterstützung "
"seiner Entwicklung in Betracht ziehen."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1748
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1749
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
"Es bestehen aktive Aufträge. Sind Sie sicher, dass sie es beenden wollen?"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1751
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1752
msgid ""
" is communicating with the device!<br>\n"
" Quitting may cause corruption on the device.<br>\n"
@ -6640,11 +6644,11 @@ msgstr ""
"verursachen.<br>\n"
" Sind Sie sicher, dass sie beenden möchten?"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1755
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1756
msgid "WARNING: Active jobs"
msgstr "WARNUNG: Aktive Aufträge"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1807
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1808
msgid ""
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
"context menu of the system tray."
@ -6652,7 +6656,7 @@ msgstr ""
"wird im System Tray weiter laufen. Zum Schließen wählen Sie <b>Beenden</b> "
"im Kontextmenü des System Tray."
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1827
msgid ""
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
"href=\"%s\">%s</a></span>"
@ -6660,11 +6664,11 @@ msgstr ""
"<span style=\"color:red; font-weight:bold\">Letzte Version: <a "
"href=\"%s\">%s</a></span>"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
msgid "Update available"
msgstr "Neue Version verfügbar"
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1836
msgid ""
"%s has been updated to version %s. See the <a href=\"http://calibre-"
"ebook.com/whats-new\">new features</a>. Visit the download page?"
@ -6824,7 +6828,7 @@ msgid "Options to customize the ebook viewer"
msgstr "Einstellungen zum Anpassen des eBook Viewers"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:618
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:627
msgid "Remember last used window size"
msgstr "Zuletzt verwendete Fenstergröße merken"
@ -6975,46 +6979,46 @@ msgstr "Keine Treffer gefunden für: %s"
msgid "Loading flow..."
msgstr "Lade Ablauf..."
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:457
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:466
msgid "Laying out %s"
msgstr "Lege %s an"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:495
msgid "Manage Bookmarks"
msgstr "Lesezeichen verwalten"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:530
msgid "Loading ebook..."
msgstr "Lade eBook..."
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:538
msgid "DRM Error"
msgstr "DRM Fehler"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:530
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:539
msgid "<p>This book is protected by <a href=\"%s\">DRM</a>"
msgstr "<p>Dieses Buch ist geschützt durch <a href=\"%s\">DRM</a>"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:543
msgid "Could not open ebook"
msgstr "Konnte eBook nicht öffnen"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617
msgid "Options to control the ebook viewer"
msgstr "Einstellungen zur Kontrolle des eBook Viewers"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624
msgid ""
"If specified, viewer window will try to come to the front when started."
msgstr ""
"Falls angegeben, dann wird das Viewer Fenster beim Start im Vordergrund "
"angezeigt."
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:629
msgid "Print javascript alert and console messages to the console"
msgstr "Javascript Alarme und Konsolennachrichten auf der Konsole ausgeben"
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:635
msgid ""
"%prog [options] file\n"
"\n"
@ -8259,7 +8263,7 @@ msgstr "Geplant"
msgid "Custom"
msgstr "Angepasst"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:457
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:453
msgid ""
"%prog URL\n"
"\n"
@ -8269,13 +8273,13 @@ msgstr ""
"\n"
"URL ist z.B. http://google.com"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:460
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:456
msgid "Base directory into which URL is saved. Default is %default"
msgstr ""
"Grundverzeichnis, in das die URL gespeichert wird. Voreinstellung ist "
"%default"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:463
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459
msgid ""
"Timeout in seconds to wait for a response from the server. Default: %default "
"s"
@ -8283,7 +8287,7 @@ msgstr ""
"Timeout in Sekunden beim Warten auf eine Antwort vom Server. Voreinstellung: "
"%default s"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:466
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462
msgid ""
"Maximum number of levels to recurse i.e. depth of links to follow. Default "
"%default"
@ -8291,7 +8295,7 @@ msgstr ""
"Maximale Zahl von einbezogenen Ebenen, z.B. Tiefe der Links, die verfolgt "
"werden. Voreinstellung %default"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:469
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465
msgid ""
"The maximum number of files to download. This only applies to files from <a "
"href> tags. Default is %default"
@ -8299,7 +8303,7 @@ msgstr ""
"Höchstzahl der Dateien, die geladen werden. Dies trifft nur auf Dateien aus "
"<a href> Tags zu. Voreinstellung ist %default"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467
msgid ""
"Minimum interval in seconds between consecutive fetches. Default is %default "
"s"
@ -8307,7 +8311,7 @@ msgstr ""
"Kleinstes Intervall in Sekunden zwischen aufeinander folgenden Abrufen. "
"Voreinstellung ist %default s"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:469
msgid ""
"The character encoding for the websites you are trying to download. The "
"default is to try and guess the encoding."
@ -8315,7 +8319,7 @@ msgstr ""
"Zeichenkodierung für Webseiten, die zu laden versucht werden. In der "
"Voreinstellung wird versucht, die Kodierung zu erraten."
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471
msgid ""
"Only links that match this regular expression will be followed. This option "
"can be specified multiple times, in which case as long as a link matches any "
@ -8326,7 +8330,7 @@ msgstr ""
"sie einem regulären Ausdruck entsprechen. In der Voreinstellung werden alle "
"Links verfolgt."
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
msgid ""
"Any link that matches this regular expression will be ignored. This option "
"can be specified multiple times, in which case as long as any regexp matches "
@ -8340,11 +8344,11 @@ msgstr ""
"Links ignoriert. Falls beide --filter-regexp und --match-regexp angegeben "
"sind, wird --filter-regexp zuerst angewendet."
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
msgid "Do not download CSS stylesheets."
msgstr "CSS-Stylesheets nicht herunterladen."
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:480
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476
msgid "Show detailed output information. Useful for debugging"
msgstr "Detaillierte Ausgabeinformation anzeigen. Hilfreich zur Fehlersuche."

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-12-10 20:44+0000\n"
"PO-Revision-Date: 2009-12-10 22:36+0000\n"
"POT-Creation-Date: 2009-12-11 23:27+0000\n"
"PO-Revision-Date: 2009-12-13 20:36+0000\n"
"Last-Translator: Bingen Markes <Unknown>\n"
"Language-Team: Basque <eu@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-12-11 04:33+0000\n"
"X-Launchpad-Export-Date: 2009-12-14 04:34+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -26,8 +26,8 @@ msgstr "Ez du ezer egiten"
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:53
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:756
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:759
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:765
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:768
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:189
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:410
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
@ -387,6 +387,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:400
msgid "Add a plugin by specifying the path to the zip file containing it."
msgstr ""
"Gehigarria gehitu bera barnean duen ZIP fitxategiaren bidea adieraziz."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:402
msgid "Remove a custom plugin by name. Has no effect on builtin plugins"
@ -399,40 +400,44 @@ msgid ""
"Customize plugin. Specify name of plugin and customization string separated "
"by a comma."
msgstr ""
"Pertsonalizatu gehigarria. Adierazi gehigarriaren izena eta "
"pertsonalizaturiko katea komaren bidez bereizturik."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:406
msgid "List all installed plugins"
msgstr "Zerrendatu instalatutako pluginak"
msgstr "Zerrendatu instalatutako gehigarriak"
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:408
msgid "Enable the named plugin"
msgstr ""
msgstr "Gaitu izendaturiko gehigarria."
#: /home/kovid/work/calibre/src/calibre/customize/ui.py:410
msgid "Disable the named plugin"
msgstr ""
msgstr "Desgaitu izendaturiko gehigarria."
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13
msgid "Communicate with Android phones."
msgstr ""
msgstr "Adroid telefonoarekin komunikatu."
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:25
msgid ""
"Comma separated list of directories to send e-books to on the device. The "
"first one that exists will be used"
msgstr ""
"e-Book-ak gailura bidaltzeko komaz bitartez bereizturitako direktorio "
"zerrenda. Lehengo aurkitu eta existitzen dena erabiliko da."
#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:19
msgid "Communicate with the BeBook eBook reader."
msgstr ""
msgstr "Komunikatu BeBook eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/bebook/driver.py:95
msgid "Communicate with the BeBook Mini eBook reader."
msgstr ""
msgstr "Komunikatu BeBook Mini eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12
msgid "Communicate with the Blackberry smart phone."
msgstr ""
msgstr "Komunikatu Backberry smart telefonoarekin."
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24
@ -441,11 +446,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:88
msgid "Kovid Goyal"
msgstr ""
msgstr "Kovid Goyal"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:21
msgid "Communicate with the Cybook Gen 3 eBook reader."
msgstr ""
msgstr "Komunikatu Cybook Gen 3 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:22
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:86
@ -453,88 +458,88 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:30
msgid "John Schember"
msgstr ""
msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:74
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:134
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:136
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:113
msgid "Transferring books to device..."
msgstr ""
msgstr "Liburuak gailura transferitzen..."
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:85
msgid "Communicate with the Cybook Opus eBook reader."
msgstr ""
msgstr "Komunikatu Cybook Opus eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:23
msgid "Communicate with the EB600 eBook reader."
msgstr ""
msgstr "Komunikatu EB600 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:16
msgid "Communicate with the ESlick eBook reader."
msgstr ""
msgstr "Komunikatu ESlick eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16
msgid "Communicate with the IRex Iliad eBook reader."
msgstr ""
msgstr "Komunikatu IRex Iliad eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:22
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23
msgid "Device Interface"
msgstr ""
msgstr "Gailu-interfazea"
#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16
msgid "Communicate with the IRex Digital Reader 1000 eBook reader."
msgstr ""
msgstr "Komunikatu IRex Digital Reader 1000 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15
msgid "Communicate with the Iriver Story reader."
msgstr ""
msgstr "Komunikatu Iriver Story irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:22
msgid "Communicate with the JetBook eBook reader."
msgstr ""
msgstr "Komunikatu JetBook eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:23
msgid "James Ralston"
msgstr ""
msgstr "James Ralston"
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21
msgid "Communicate with the Kindle eBook reader."
msgstr ""
msgstr "Komunikatu Kindle eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:66
msgid "Communicate with the Kindle 2 eBook reader."
msgstr ""
msgstr "Komunikatu Kindle 2 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:76
msgid "Communicate with the Kindle DX eBook reader."
msgstr ""
msgstr "Komunikatu Kindle DX eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:16
msgid "The Nook"
msgstr ""
msgstr "Nook-a"
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:17
msgid "Communicate with the Nook eBook reader."
msgstr ""
msgstr "Komunikatu Nook eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17
msgid "Communicate with the Nuut2 eBook reader."
msgstr ""
msgstr "Komunikatu Nuut2 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:87
msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr ""
msgstr "Komunikatu Sony PRS-500 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:103
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:114
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -542,75 +547,77 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:81
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:90
msgid "Getting list of books on device..."
msgstr ""
msgstr "Liburu zerrenda gailutik eskuratzen..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr ""
msgstr "Komunikatu Sony PRS-300/505/500 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18
msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal eta John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:167
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:174
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:146
msgid "Removing books from device..."
msgstr "Gailutik liburuak kentzen..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:202
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:161
msgid "Sending metadata to device..."
msgstr "Metadatuak gailura bidaltzen..."
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:17
msgid "Communicate with the Sony PRS-600/700 eBook reader."
msgstr ""
msgstr "Komunikatu Sony PRS-600/700 eBook irakurgailuarekin."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:299
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:371
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:308
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:380
msgid "Unable to detect the %s disk drive. Try rebooting."
msgstr ""
msgstr "Ezin da %s disko unitatea detektatu. Saiatu berrabiarazten."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:439
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:448
msgid "Unable to detect the %s disk drive."
msgstr ""
msgstr "Ezin da %s disko unitatea detektatu."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:532
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:541
msgid "Could not find mount helper: %s."
msgstr ""
msgstr "Ezin da aurkitu muntatzaile laguntzailea: %s."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:544
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:553
msgid ""
"Unable to detect the %s disk drive. Your kernel is probably exporting a "
"deprecated version of SYSFS."
msgstr ""
"Ezin da %s disko unitatea detektatu. Seguruenik zure kernelak SYSFS bertsio "
"zaharkitua esportatzen dago."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:552
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:561
msgid "Unable to mount main memory (Error code: %d)"
msgstr ""
msgstr "Ezin da memoria nagusia muntatu. (Errore kodea: %d)"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:689
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:691
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:698
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:700
msgid "The reader has no storage card in this slot."
msgstr ""
msgstr "Irakurgailuak ez du memori-txartelik slot honetan."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:693
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:702
msgid "Selected slot: %s is not supported."
msgstr ""
msgstr "Aukeratutako slot-a: %s ez-onartua."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:724
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:733
msgid "There is insufficient free space in main memory"
msgstr ""
msgstr "Ez dago espazio libre nahikorik memori nagusian."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:726
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:728
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:735
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:737
msgid "There is insufficient free space on the storage card"
msgstr ""
msgstr "Ez dago espazio libre nahikorik memori-txartelan."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:739
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:748
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:232
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:125
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1059
@ -621,55 +628,55 @@ msgstr "Berriak"
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:11
msgid "Configure Device"
msgstr ""
msgstr "Konfiguratu gailua."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:18
msgid "settings for device drivers"
msgstr ""
msgstr "Gailu-kontrolatzailearen ezarpenak."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:20
msgid "Ordered list of formats the device will accept"
msgstr ""
msgstr "Gailuak onartuko dituen formatuen zerrenda ordenatua."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:22
msgid "Place files in sub directories if the device supports them"
msgstr ""
msgstr "Gailuak onartzen badu, jarri fitxategiak azpidirektorioetan."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:24
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:71
msgid "Read metadata from files on device"
msgstr ""
msgstr "Irakurri metadatuak gailuan dauden fitxategietatik."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:27
#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:73
msgid "Extra customization"
msgstr ""
msgstr "Extra pertsonalizasioa."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29
msgid "Communicate with an eBook reader."
msgstr ""
msgstr "Komunikatu eBook irakurgailu batekin."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:41
msgid "Get device information..."
msgstr ""
msgstr "Eskuratu gailuaren informazioa."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:127
msgid "Adding books to device metadata listing..."
msgstr ""
msgstr "Gailuaren metadatu zerrendara liburuak gehitzen..."
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:155
msgid "Removing books from device metadata listing..."
msgstr ""
msgstr "Gailuaren metadatu zerrendatik liburuak kentzen..."
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:196
msgid "Rendered %s"
msgstr ""
msgstr "Prozesatzen %s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:199
msgid "Failed %s"
msgstr ""
msgstr "Huts egin du: %s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:256
msgid ""
@ -677,6 +684,9 @@ msgid ""
"\n"
"%s"
msgstr ""
"Ondorengo komikia prozesatzeak huts egin du: \n"
"\n"
"%s"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:274
msgid ""
@ -684,25 +694,34 @@ msgid ""
"of less than 256 may result in blurred text on your device if you are "
"creating your comics in EPUB format."
msgstr ""
"Irudia gris-eskalara bihurtzeko koloreen zenbatekoa. Lehenetsia: %default. "
"256 baino txikiago diren balioak testu lausotuak eduki dezakete emaitza "
"bezala zure komikiak EPUB formatuan egiten bazabiltza."
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:278
msgid ""
"Disable normalize (improve contrast) color range for pictures. Default: False"
msgstr ""
"Desgaitu irudientzako kolore tartearen normalizatzea (kontrastea obetzeko). "
"Lehenetsia: Desgaitua."
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:281
msgid "Maintain picture aspect ratio. Default is to fill the screen."
msgstr ""
"Mantendu irudiaren aspektu-erlazioa. Lehenetsia dagoena pantaila guztia "
"betetzea da."
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283
msgid "Disable sharpening."
msgstr ""
msgstr "Desgaitu fokatutzea"
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:285
msgid ""
"Disable trimming of comic pages. For some comics, trimming might remove "
"content as well as borders."
msgstr ""
"Desgaitu komiki orrialdeen moztura. Komiki batzuetan, mozturak ertzekin "
"batera edukia kendu dezake."
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288
msgid "Don't split landscape images into two portrait images"
@ -1944,17 +1963,21 @@ msgid ""
"cp1252. Note: This option is not honored by all formats."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:22
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24
msgid "Do not extract images from the document"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26
msgid ""
"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."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30
msgid "Use the new PDF conversion engine."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31
msgid ""
"command ...\n"
@ -3074,7 +3097,7 @@ msgid "RB Output"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1420
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
msgid "Choose the format to view"
msgstr ""
@ -5186,15 +5209,15 @@ msgstr ""
msgid "<b>Changes will only take effect after a restart.</b>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:64
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70
msgid " - LRF Viewer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
msgid "<b>No matches</b> for the search phrase <i>%s</i> were found."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:157
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:389
msgid "No matches found"
msgstr ""
@ -5665,7 +5688,7 @@ msgid "Save to disk in a single directory"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1522
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1523
msgid "Save only %s format to disk"
msgstr ""
@ -5700,7 +5723,7 @@ msgid "Calibre Library"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:464
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1665
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1666
msgid "Choose a location for your ebook library."
msgstr ""
@ -5815,7 +5838,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1105
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1138
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1163
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1276
msgid "No books selected"
msgstr ""
@ -5881,37 +5904,37 @@ msgstr ""
msgid "Fetching news from "
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1234
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1235
msgid " fetched."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1274
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1275
msgid "Cannot convert"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1303
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1304
msgid "Starting conversion of %d book(s)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1434
msgid "No book selected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1414
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1464
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1415
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
msgid "Cannot view"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1432
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433
msgid "Cannot open folder"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1449
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
msgid "Multiple Books Selected"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1450
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1451
msgid ""
"You are attempting to open %d books. Opening too many books at once can be "
"slow and have a negative effect on the responsiveness of your computer. Once "
@ -5919,97 +5942,97 @@ msgid ""
"continue?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1466
msgid "%s has no available formats."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1506
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
msgid "Cannot configure"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1508
msgid "Cannot configure while there are running jobs."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1550
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
msgid "No detailed info available"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1551
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1552
msgid "No detailed information is available for books on the device."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1603
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
msgid "Error talking to device"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1604
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1605
msgid ""
"There was a temporary error talking to the device. Please unplug and "
"reconnect the device and or reboot."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
msgid "Conversion Error"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1628
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1629
msgid ""
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
"first remove the DRM using third party tools."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1647
msgid "<b>Failed</b>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1674
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
msgid "Invalid library location"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1675
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1676
msgid "Could not access %s. Using %s as the library."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1723
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1724
msgid ""
"is the result of the efforts of many volunteers from all over the world. If "
"you find it useful, please consider donating to support its development."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1748
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1749
msgid "There are active jobs. Are you sure you want to quit?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1751
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1752
msgid ""
" is communicating with the device!<br>\n"
" Quitting may cause corruption on the device.<br>\n"
" Are you sure you want to quit?"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1755
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1756
msgid "WARNING: Active jobs"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1807
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1808
msgid ""
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
"context menu of the system tray."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1827
msgid ""
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
"href=\"%s\">%s</a></span>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1834
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
msgid "Update available"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1835
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1836
msgid ""
"%s has been updated to version %s. See the <a href=\"http://calibre-"
"ebook.com/whats-new\">new features</a>. Visit the download page?"
@ -6164,7 +6187,7 @@ msgid "Options to customize the ebook viewer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:618
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:627
msgid "Remember last used window size"
msgstr ""
@ -6311,44 +6334,44 @@ msgstr ""
msgid "Loading flow..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:457
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:466
msgid "Laying out %s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:486
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:495
msgid "Manage Bookmarks"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:521
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:530
msgid "Loading ebook..."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:529
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:538
msgid "DRM Error"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:530
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:539
msgid "<p>This book is protected by <a href=\"%s\">DRM</a>"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:543
msgid "Could not open ebook"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:608
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:617
msgid "Options to control the ebook viewer"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:615
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624
msgid ""
"If specified, viewer window will try to come to the front when started."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:620
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:629
msgid "Print javascript alert and console messages to the console"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:626
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:635
msgid ""
"%prog [options] file\n"
"\n"
@ -7401,55 +7424,55 @@ msgstr ""
msgid "Custom"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:457
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:453
msgid ""
"%prog URL\n"
"\n"
"Where URL is for example http://google.com"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:460
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:456
msgid "Base directory into which URL is saved. Default is %default"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:463
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459
msgid ""
"Timeout in seconds to wait for a response from the server. Default: %default "
"s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:466
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462
msgid ""
"Maximum number of levels to recurse i.e. depth of links to follow. Default "
"%default"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:469
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465
msgid ""
"The maximum number of files to download. This only applies to files from <a "
"href> tags. Default is %default"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467
msgid ""
"Minimum interval in seconds between consecutive fetches. Default is %default "
"s"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:469
msgid ""
"The character encoding for the websites you are trying to download. The "
"default is to try and guess the encoding."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471
msgid ""
"Only links that match this regular expression will be followed. This option "
"can be specified multiple times, in which case as long as a link matches any "
"one regexp, it will be followed. By default all links are followed."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
msgid ""
"Any link that matches this regular expression will be ignored. This option "
"can be specified multiple times, in which case as long as any regexp matches "
@ -7458,10 +7481,10 @@ msgid ""
"applied first."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
msgid "Do not download CSS stylesheets."
msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:480
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:476
msgid "Show detailed output information. Useful for debugging"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -84,13 +84,14 @@ class CriticalError(Exception):
class Server(Thread):
def __init__(self, notify_on_job_done=lambda x: x, pool_size=None,
limit=sys.maxint):
limit=sys.maxint, enforce_cpu_limit=True):
Thread.__init__(self)
self.daemon = True
global _counter
self.id = _counter+1
_counter += 1
if enforce_cpu_limit:
limit = min(limit, cpu_count())
self.pool_size = limit if pool_size is None else pool_size
self.notify_on_job_done = notify_on_job_done

View File

@ -92,7 +92,7 @@ def get_builtin_recipe_titles():
def download_builtin_recipe(urn):
br = browser()
return br.open('http://status.calibre-ebook.com/recipe/'+urn).read()
return br.open_novisit('http://status.calibre-ebook.com/recipe/'+urn).read()
def get_builtin_recipe_by_title(title, log=None, download_recipe=False):

View File

@ -16,7 +16,7 @@ from calibre.gui2 import NONE
from calibre.utils.localization import get_language
from calibre.web.feeds.recipes.collection import \
get_builtin_recipe_collection, get_custom_recipe_collection, \
SchedulerConfig
SchedulerConfig, download_builtin_recipe
from calibre.utils.pyparsing import ParseException
class NewsTreeItem(object):
@ -129,13 +129,22 @@ class RecipeModel(QAbstractItemModel, SearchQueryParser):
self.scheduler_config = SchedulerConfig()
self.do_refresh()
def get_recipe(self, urn):
def get_builtin_recipe(self, urn, download=True):
if download:
try:
return download_builtin_recipe(urn)
except:
import traceback
traceback.print_exc()
return P('recipes/%s.recipe'%urn, data=True)
def get_recipe(self, urn, download=True):
coll = self.custom_recipe_collection if urn.startswith('custom:') \
else self.builtin_recipe_collection
for recipe in coll:
if recipe.get('id', False) == urn:
if coll is self.builtin_recipe_collection:
return P('recipes/%s.recipe'%urn[8:], data=True)
return self.get_builtin_recipe(urn[8:], download=download)
return self.db.get_feed(int(urn[len('custom:'):]))
def update_custom_recipe(self, urn, title, script):
@ -332,7 +341,7 @@ class RecipeModel(QAbstractItemModel, SearchQueryParser):
def get_to_be_downloaded_recipes(self):
ans = self.scheduler_config.get_to_be_downloaded_recipes()
ans2 = [x for x in ans if self.get_recipe(x) is not None]
ans2 = [x for x in ans if self.get_recipe(x, download=False) is not None]
for x in set(ans) - set(ans2):
self.un_schedule_recipe(x)
return ans2