Sync to trunk.

This commit is contained in:
John Schember 2009-12-02 18:29:04 -05:00
commit 073bab8468
94 changed files with 11785 additions and 6284 deletions

View File

@ -34,6 +34,9 @@
tickets: [4040] tickets: [4040]
bug fixes: bug fixes:
- title: "Fix bug that prevented saving of books from a connected device to your computer on windows, for non SONY devices"
tickets: [4080]
- title: Reorganize Dutch language news sources into Belgium and Netherlands categories - title: Reorganize Dutch language news sources into Belgium and Netherlands categories
tickets: [4098] tickets: [4098]
@ -46,12 +49,20 @@
- title: Add PDF to list of supported formats for the Kindle 2 - title: Add PDF to list of supported formats for the Kindle 2
- title: Add 0x0c01 to the list of product ids for HTC Hero (Android) driver
tickets: [4088]
- title: "LIT Input: Remove more invalid markup present in LIT files created by Microsoft Word plugins"
tickets: [4087]
- title: "LRF Input: Workaround buggy LRF files with unbalanced closing tags"
tickets: [4108]
new recipes: new recipes:
- title: The Economist (no subscription required) - title: The Economist (no subscription required)
author: Kovid Goyal author: Kovid Goyal
- title: Sports Illustrated1 - title: Sports Illustrated
author: kwetal author: kwetal
- title: Levante - title: Levante
@ -60,6 +71,9 @@
- title: ncrnext - title: ncrnext
author: kwetal author: kwetal
- title: Gulli
author: posativ
improved recipes: improved recipes:
- The Philadelphia Inquirer - The Philadelphia Inquirer
- Harpers - Harpers

View File

@ -148,13 +148,13 @@ function fetch_library_books(start, num, timeout, sort, order, search) {
$("#book_list tbody").html(display); $("#book_list tbody").html(display);
$("#book_list tbody tr").bind('mouseenter', function() { $("#book_list tbody tr").bind('mouseenter', function() {
var row = $(this); var row = $(this);
$('#book_list tbody tr:even()').css('background-color', '#eeeeee'); $('#book_list tbody tr:even').css('background-color', '#eeeeee');
$('#book_list tbody tr:odd()').css('background-color', 'white'); $('#book_list tbody tr:odd').css('background-color', 'white');
row.css('background-color', "#fff2a8"); row.css('background-color', "#fff2a8");
row.bind('mouseleave', function(){ row.bind('mouseleave', function(){
row.css('background-color', "white"); row.css('background-color', "white");
$('#book_list tbody tr:even()').css('background-color', '#eeeeee'); $('#book_list tbody tr:even').css('background-color', '#eeeeee');
row.unbind('mouseleave'); row.unbind('mouseleave');
}); });
}); });
@ -173,7 +173,7 @@ function fetch_library_books(start, num, timeout, sort, order, search) {
layout(); layout();
$('#book_list tbody tr:even()').css('background-color', '#eeeeee'); $('#book_list tbody tr:even').css('background-color', '#eeeeee');
}, },
complete : function(XMLHttpRequest, textStatus) { complete : function(XMLHttpRequest, textStatus) {
@ -262,6 +262,7 @@ function setup_sorting() {
if (sort_indicator.html() == '↑') { if (sort_indicator.html() == '↑') {
order = 'descending'; html = '↓'; order = 'descending'; html = '↓';
} }
sort_indicator.html(html); sort_indicator.html(html);
$('#book_list * .sort_indicator').css('visibility', 'hidden'); $('#book_list * .sort_indicator').css('visibility', 'hidden');
sort_indicator.css('visibility', 'visible'); sort_indicator.css('visibility', 'visible');

View File

@ -30,13 +30,13 @@ class Barrons(BasicNewsRecipe):
oldest_article = 7 oldest_article = 7
extra_css = ''' extra_css = '''
.datestamp{color:#666666; font-family:Verdana,Geneva,Kalimati,sans-serif; font-size:x-small;} .datestamp{font-family:Verdana,Geneva,Kalimati,sans-serif; font-size:x-small;}
h3{color:#FF0000; font-family:Georgia,"Times New Roman",Times,serif; } h3{font-family:Georgia,"Times New Roman",Times,serif; }
h2{font-family:Georgia,"Times New Roman",Times,serif; } h2{font-family:Georgia,"Times New Roman",Times,serif; }
h1{ font-family:Georgia,"Times New Roman",Times,serif; } h1{ font-family:Georgia,"Times New Roman",Times,serif; }
.byline{color:#AAAAAA; font-family:Verdana,Geneva,Kalimati,sans-serif; font-size:x-small;} .byline{font-family:Verdana,Geneva,Kalimati,sans-serif; font-size:x-small;}
.subhead{color:#666666; font-family:Georgia,"Times New Roman",Times,serif; font-size: small;} .subhead{font-family:Georgia,"Times New Roman",Times,serif; font-size: small;}
.articlePage{ font-family:Georgia,"Century Schoolbook","Times New Roman",Times,serif;color:#333333;} .articlePage{ font-family:Georgia,"Century Schoolbook","Times New Roman",Times,serif;}
.insettipUnit{font-size: x-small;} .insettipUnit{font-size: x-small;}
''' '''
remove_tags = [ remove_tags = [

View File

@ -19,13 +19,18 @@ class BusinessWeek(BasicNewsRecipe):
max_articles_per_feed = 10 max_articles_per_feed = 10
no_stylesheets = True no_stylesheets = True
recursions = 1
match_regexps = [r'http://www.businessweek.com/.*_page_[1-9].*']
extra_css = ''' extra_css = '''
h1{font-family :Arial,Helvetica,sans-serif; font-size:large;} h1{font-family :Arial,Helvetica,sans-serif; font-size:large;}
h2{font-family :Arial,Helvetica,sans-serif; font-size:small;color:#666666;} .news_story_title{font-family :Arial,Helvetica,sans-serif; font-size:large;font-weight:bold;}
h2{font-family :Arial,Helvetica,sans-serif; font-size:medium;color:#666666;}
h3{text-transform:uppercase;font-family :Arial,Helvetica,sans-serif; font-size:large;font-weight:bold;}
h4{font-family :Arial,Helvetica,sans-serif; font-size:small;font-weight:bold;}
p{font-family :Arial,Helvetica,sans-serif; } p{font-family :Arial,Helvetica,sans-serif; }
#lede600{font-size:x-small;} #lede600{font-size:x-small;}
#storybody{font-size:x-small;} #storybody{font-size:x-small;}
p{font-family :Arial,Helvetica,sans-serif;}
.strap{font-family :Arial,Helvetica,sans-serif; font-size:x-small; color:#064599;} .strap{font-family :Arial,Helvetica,sans-serif; font-size:x-small; color:#064599;}
.byline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} .byline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;}
.postedBy{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .postedBy{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;}
@ -34,9 +39,16 @@ class BusinessWeek(BasicNewsRecipe):
.wrapper{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} .wrapper{font-family :Arial,Helvetica,sans-serif; font-size:x-small;}
.photoCredit{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .photoCredit{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;}
.tagline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .tagline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;}
.pageCount{color:#666666;font-family :Arial,Helvetica,sans-serif; font-size:x-small;}
.note{font-family :Arial,Helvetica,sans-serif; font-size:small;color:#666666;font-style:italic;}
.highlight{font-family :Arial,Helvetica,sans-serif; font-size:small;background-color:#FFF200;}
.annotation{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;}
''' '''
remove_tags = [ dict(name='div', attrs={'id':["bw2-header","column2","wrapper-bw2-footer","wrapper-mgh-footer","inset","commentForm","commentDisplay","bwExtras","bw2-umbrella","readerComments","pageNav","leg"]}), remove_tags = [ dict(name='div', attrs={'id':["log","feedback","footer","secondarynav","secondnavbar","header","email","bw2-header","column2","wrapper-bw2-footer","wrapper-mgh-footer","inset","commentForm","commentDisplay","bwExtras","bw2-umbrella","readerComments","leg","rightcol"]}),
dict(name='div', attrs={'class':["menu",'sponsorbox smallertext',"TopNavTile","graybottom leaderboard"]}),
dict(name='img', alt ="News"),
dict(name='td', width ="1"),
] ]
feeds = [ feeds = [
@ -71,10 +83,11 @@ class BusinessWeek(BasicNewsRecipe):
return url return url
def postrocess_html(self, soup, first): def postprocess_html(self, soup, first):
for tag in soup.findAll(name=['ul','li']): for tag in soup.findAll(name=['ul','li','table','td','tr','span']):
tag.name = 'div' tag.name = 'div'
for tag in soup.findAll(name= 'div',attrs={ 'id':'pageNav'}):
tag.extract()
return soup return soup

View File

@ -33,7 +33,6 @@ class ChicagoBreakingNews(BasicNewsRecipe):
feeds = [(u'Breaking news', u'http://feeds2.feedburner.com/ChicagoBreakingNews/')] feeds = [(u'Breaking news', u'http://feeds2.feedburner.com/ChicagoBreakingNews/')]
def preprocess_html(self, soup): def preprocess_html(self, soup):
links = soup.findAll('a')
for item in soup.findAll('a'): for item in soup.findAll('a'):
if item['href'].find('http://feedads.googleadservices.com') > -1: if item['href'].find('http://feedads.googleadservices.com') > -1:
item.extract() item.extract()

View File

@ -1,7 +1,9 @@
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
from calibre.utils.threadpool import ThreadPool, makeRequests
import time import time
from datetime import datetime from datetime import datetime
from lxml import html from lxml import html
from urllib2 import urlopen
class Economist(BasicNewsRecipe): class Economist(BasicNewsRecipe):
@ -23,46 +25,55 @@ class Economist(BasicNewsRecipe):
'http://feeds.feedburner.com/economist/full_print_edition', 'http://feeds.feedburner.com/economist/full_print_edition',
raw=True) raw=True)
entries = parse(raw).entries entries = parse(raw).entries
feeds = {} pool = ThreadPool(10)
self.feed_dict = {}
requests = []
for i, item in enumerate(entries): for i, item in enumerate(entries):
from calibre.web.feeds import Article
published = time.gmtime(item.get('timestamp', time.time())) published = time.gmtime(item.get('timestamp', time.time()))
title = item.get('title', _('Untitled article')) title = item.get('title', _('Untitled article'))
link = item.get('link', None) link = item.get('link', None)
description = item.get('description', '') description = item.get('description', '')
author = item.get('author', '') author = item.get('author', '')
try: requests.append([i, link, title, description, author, published])
feedtitle, link = self.process_eco_feed_article(link) requests = makeRequests(self.process_eco_feed_article, requests, self.eco_article_found,
self.log('Found print version for article:', title) self.eco_article_failed)
except: for r in requests: pool.putRequest(r)
self.log.exception('Failed to process article:', title) pool.wait()
continue
a = Article(i, title, link, author, description, published, '') return [(t, a) for t, a in self.feed_dict.items()]
delta = datetime.utcnow() - a.utctime
if delta.days*24*3600 + delta.seconds > 24*3600*self.oldest_article:
self.log.debug('Skipping article %s (%s) from feed %s as it is too old.'%(title, a.localtime.strftime('%a, %d %b, %Y %H:%M'), title))
continue
def process_eco_feed_article(self, args):
article = dict(title=a.title, description=a.text_summary, i, url, title, description, author, published = args
date=time.strftime(self.timefmt, a.date), author=a.author, url=a.url) ret = urlopen(url)
if feedtitle not in feeds:
feeds[feedtitle] = []
feeds[feedtitle].append(article)
return [(t, a) for t, a in feeds.items()]
def process_eco_feed_article(self, url):
ret = self.browser.open(url)
raw = ret.read() raw = ret.read()
url = self.browser.geturl().replace('displaystory', 'PrinterFriendly').strip() url = ret.geturl().replace('displaystory', 'PrinterFriendly').strip()
root = html.fromstring(raw) root = html.fromstring(raw)
matches = root.xpath('//*[@class = "article-section"]') matches = root.xpath('//*[@class = "article-section"]')
feedtitle = 'Miscellaneous' feedtitle = 'Miscellaneous'
if matches: if matches:
feedtitle = html.tostring(matches[0], method='text', feedtitle = html.tostring(matches[0], method='text',
encoding=unicode) encoding=unicode)
return feedtitle, url return (i, feedtitle, url, title, description, author, published)
def eco_article_found(self, req, result):
from calibre.web.feeds import Article
i, feedtitle, link, title, description, author, published = result
self.log('Found print version for article:', title)
a = Article(i, title, link, author, description, published, '')
delta = datetime.utcnow() - a.utctime
if delta.days*24*3600 + delta.seconds > 24*3600*self.oldest_article:
self.log.debug('Skipping article %s (%s) from feed %s as it is too old.'%(title, a.localtime.strftime('%a, %d %b, %Y %H:%M'), title))
return
article = dict(title=a.title, description=a.text_summary,
date=time.strftime(self.timefmt, a.date), author=a.author, url=a.url)
if feedtitle not in self.feed_dict:
self.feed_dict[feedtitle] = []
self.feed_dict[feedtitle].append(article)
def eco_article_failed(self, req, tb):
self.log.error('Failed to download %s with error:'%req.args[0][2])
self.log.debug(tb)

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Darko Miletic <darko.miletic at gmail.com>' __copyright__ = '2008 - 2009, Darko Miletic <darko.miletic at gmail.com>'
''' '''
engadget.com engadget.com
''' '''
@ -12,20 +12,11 @@ class Engadget(BasicNewsRecipe):
title = u'Engadget' title = u'Engadget'
__author__ = 'Darko Miletic' __author__ = 'Darko Miletic'
description = 'Tech news' description = 'Tech news'
language = 'en' language = 'en'
oldest_article = 7 oldest_article = 7
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = True no_stylesheets = True
use_embedded_content = False use_embedded_content = True
keep_only_tags = [ dict(name='div', attrs={'class':'post'}) ]
remove_tags = [
dict(name='object')
,dict(name='div', attrs={'class':'postmeta'})
,dict(name='div', attrs={'class':'quigoads'})
]
feeds = [ (u'Posts', u'http://www.engadget.com/rss.xml')] feeds = [ (u'Posts', u'http://www.engadget.com/rss.xml')]

View File

@ -80,7 +80,6 @@ class GlasSrpske(BasicNewsRecipe):
for item in soup.findAll('div', attrs={'class':'gl_rub'}): for item in soup.findAll('div', attrs={'class':'gl_rub'}):
atag = item.find('a') atag = item.find('a')
ptag = item.find('p') ptag = item.find('p')
datetag = item.find('span')
url = self.INDEX + atag['href'] url = self.INDEX + atag['href']
title = self.tag_to_string(atag) title = self.tag_to_string(atag)
description = self.tag_to_string(ptag) description = self.tag_to_string(ptag)

View File

@ -0,0 +1,16 @@
from calibre.web.feeds.news import BasicNewsRecipe
class AdvancedUserRecipe1259599587(BasicNewsRecipe):
title = u'Gulli'
description = 'News from Germany'
language = 'de'
__author__ = 'posativ'
oldest_article = 7
max_articles_per_feed = 100
no_stylesheets = True
feeds = [(u'gulli:news', u'http://ticker.gulli.com/rss/')]
remove_tags = [{'class' : ['addthis_button', 'BreadCrumb']}, {'id' : ['plista0']}]
keep_only_tags = [dict(name='div', attrs={'class':'inside'})]

View File

@ -0,0 +1,57 @@
from calibre.web.feeds.news import BasicNewsRecipe
#from calibre.ebooks.BeautifulSoup import BeautifulSoup, Tag
class MoneyControlRecipe(BasicNewsRecipe):
__license__ = 'GPL v3'
__author__ = 'kwetal'
language = 'en_IN'
locale = 'en_IN'
encoding = 'iso-8859-1'
version = 1
title = u'Money Control'
publisher = u'moneycontrol.com'
category = u'News, Financial, India'
description = u'Financial news from India'
oldest_article = 7
max_articles_per_feed = 100
use_embedded_content = False
no_stylesheets = True
remove_javascript = True
feeds = []
feeds.append((u'Latest News', u'http://www.moneycontrol.com/rss/latestnews.xml'))
feeds.append((u'All Stories', u'http://www.moneycontrol.com/rss/allstories.xml'))
def print_version(self, url):
return url.replace('/stocksnews.php?', '/news_print.php?') + '&sr_no=0'
# The articles contain really horrible html. More than one <body> and <head> section, not properly closed tags, lots and lots of
# <font> tags and some weird <o:p></o:p> markup that crashes the conversion to ebook. Needs some drastic sanitizing
'''def preprocess_html(self, soup):
freshSoup = BeautifulSoup('<html><head></head><body></body></html>')
headline = soup.find('td', attrs = {'class': 'heading'})
if headline:
h1 = Tag(freshSoup, 'h1')
# Convert to string before adding it to the document!
h1.append(self.tag_to_string(headline))
freshSoup.body.append(h1)
for p in soup.findAll('p'):
if p.has_key('class'):
if p['class'] == 'MsoNormal':
# We have some weird pagebreak marker here; it will not find all of them however
continue
para = Tag(freshSoup, 'p')
# Convert to string; this will loose all formatting but also all illegal markup
para.append(self.tag_to_string(p))
freshSoup.body.append(para)
return freshSoup
'''

View File

@ -147,7 +147,6 @@ class NYTimes(BasicNewsRecipe):
# Fetch the outer table # Fetch the outer table
table = soup.find('table') table = soup.find('table')
previousTable = table previousTable = table
contentTable = None
# Find the deepest table containing the stories # Find the deepest table containing the stories
while True : while True :

View File

@ -53,8 +53,8 @@ class NYTimes(BasicNewsRecipe):
articles = {} articles = {}
key = None key = None
ans = [] ans = []
allSectionKeywords = ['The Front Page', 'International','National','Obituaries','Editorials', #allSectionKeywords = ['The Front Page', 'International','National','Obituaries','Editorials',
'New York','Business Day','Sports','Dining','Arts','Home','Styles'] #'New York','Business Day','Sports','Dining','Arts','Home','Styles']
excludeSectionKeywords = ['Dining','Styles'] excludeSectionKeywords = ['Dining','Styles']

View File

@ -71,7 +71,6 @@ class ScientificAmerican(BasicNewsRecipe):
feeds.append(('Features', features)) feeds.append(('Features', features))
section = [] section = []
found = []
title = None title = None
for x in soup.find(id='magazine-main_col1').findAll(['div', 'a']): for x in soup.find(id='magazine-main_col1').findAll(['div', 'a']):

View File

@ -72,7 +72,6 @@ class Time(BasicNewsRecipe):
return feeds return feeds
def find_articles(self, seched): def find_articles(self, seched):
articles = []
for a in seched.findNextSiblings( attrs={'class':['toc_hed','rule2']}): for a in seched.findNextSiblings( attrs={'class':['toc_hed','rule2']}):
if a.name in "div": if a.name in "div":
break break

View File

@ -0,0 +1,76 @@
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import Tag
class VrijNederlandRecipe(BasicNewsRecipe) :
__license__ = 'GPL v3'
__author__ = 'kwetal'
language = 'nl_NL'
locale = 'nl_NL'
version = 1
title = u'Vrij Nederland'
publisher = u'Weekbladpers Tijdschriften'
category = u'News, Opinion'
description = u'Weekly opinion magazine from the Netherlands'
oldest_article = 7
max_articles_per_feed = 100
use_embedded_content = False
no_stylesheets = True
remove_javascript = True
# Does not seem to work
#extra_css = '''li.calibre2 {padding-bottom: 40px}'''
conversion_options = {'publisher': publisher, 'tags': category, 'comments': description}
feeds = []
feeds.append((u'Politiek', u'http://www.vn.nl/politiek.rss'))
feeds.append((u'Buitenland', u'http://www.vn.nl/buitenland.rss'))
feeds.append((u'Economie', u'http://www.vn.nl/economie.rss'))
feeds.append((u'Justitie', u'http://www.vn.nl/justitie.rss'))
feeds.append((u'Samenleving', u'http://www.vn.nl/samenleving.rss'))
feeds.append((u'Crime', u'http://www.vn.nl/crime.rss'))
feeds.append((u'Media', u'http://www.vn.nl/media.rss'))
feeds.append((u'De Republiek der Letteren', u'http://www.vn.nl/republiek.rss'))
feeds.append((u'Max van Weezel', u'http://www.vn.nl/vanweezel.rss'))
feeds.append((u'Ko Colijn', u'http://www.vn.nl/colijn.rss'))
feeds.append((u'Kees Kraaijeveld', u'http://www.vn.nl/kraaijeveld.rss'))
feeds.append((u'Frank Kalshoven', u'http://www.vn.nl/kalshoven.rss'))
feeds.append((u'Stephan Sanders', u'http://www.vn.nl/sanders.rss'))
feeds.append((u'Micha Wertheim', u'http://www.vn.nl/wertheim.rss'))
feeds.append((u'Arnon Grunberg', u'http://www.vn.nl/grunberg.rss'))
feeds.append((u'Carel Peeters', u'http://www.vn.nl/carelpeeters.rss'))
keep_only_tags = [dict(name = 'div', attrs = {'class' : 'cl-column column-one'})]
remove_tags = []
remove_tags.append(dict(name = 'div', attrs = {'class' : 'wpg-element guest-book-overview'}))
remove_tags.append(dict(name = 'div', attrs = {'class' : 'wpg-element forum-message-form'}))
remove_tags.append(dict(name = 'div', attrs = {'class' : 'mediaterms'}))
remove_tags.append(dict(name = 'div', attrs = {'class': 'label-term'}))
remove_tags.append(dict(name = 'div', attrs = {'class': 'wpg-element Media-Collection-Element-Artikel-Lijst'}))
remove_tags.append(dict(name = 'object'))
remove_tags.append(dict(name = 'link'))
remove_tags.append(dict(name = 'meta'))
def preprocess_html(self, soup):
# Just clean up the result a little
meta = soup.find('div', attrs = {'class': 'meta'})
if meta:
link = meta.find('span', attrs = {'class': 'link'})
if link:
link.extract()
for seperator in meta.findAll('span', attrs = {'class': 'seperator'}):
seperator.extract()
# Their header is full of 'if IE6/7/8' tags. Just get rid of it altogether
theirHead = soup.head
theirHead.extract()
myHead = Tag(soup, 'head')
soup.insert(0, myHead)
return soup

View File

@ -7,33 +7,57 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import sys, os, cPickle, subprocess import sys, os, cPickle, subprocess
from operator import attrgetter
from setup import Command from setup import Command
import __builtin__
def check_for_python_errors(filename, builtins): def set_builtins(builtins):
from pyflakes import checker, ast for x in builtins:
if not hasattr(__builtin__, x):
setattr(__builtin__, x, True)
yield x
contents = open(filename, 'rb').read() class Message:
def __init__(self, filename, lineno, msg):
self.filename, self.lineno, self.msg = filename, lineno, msg
def __str__(self):
return '%s:%s: %s'%(self.filename, self.lineno, self.msg)
def check_for_python_errors(code_string, filename):
# Since compiler.parse does not reliably report syntax errors, use the
# built in compiler first to detect those.
try: try:
tree = ast.parse(contents, filename)
except:
import traceback
traceback.print_exc()
try: try:
value = sys.exc_info()[1] compile(code_string, filename, "exec")
lineno, offset, line = value[1][1:] except MemoryError:
except IndexError: # Python 2.4 will raise MemoryError if the source can't be
lineno, offset, line = 1, 0, '' # decoded.
if line.endswith("\n"): if sys.version_info[:2] == (2, 4):
line = line[:-1] raise SyntaxError(None)
raise
except (SyntaxError, IndentationError), value:
msg = value.args[0]
return [SyntaxError(filename, lineno, offset, str(value))] (lineno, offset, text) = value.lineno, value.offset, value.text
# If there's an encoding problem with the file, the text is None.
if text is None:
# Avoid using msg, since for the only known case, it contains a
# bogus message that claims the encoding the file declared was
# unknown.
msg = "%s: problem decoding source" % filename
return [Message(filename, lineno, msg)]
else: else:
w = checker.Checker(tree, filename, builtins = builtins) # Okay, it's syntactically valid. Now parse it into an ast and check
w.messages.sort(key = attrgetter('lineno')) # it.
return w.messages import compiler
checker = __import__('pyflakes.checker').checker
tree = compiler.parse(code_string)
w = checker.Checker(tree, filename)
w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno))
return [Message(x.filename, x.lineno, x.message%x.message_args) for x in
w.messages]
class Check(Command): class Check(Command):
@ -65,15 +89,18 @@ class Check(Command):
cache = {} cache = {}
if os.path.exists(self.CACHE): if os.path.exists(self.CACHE):
cache = cPickle.load(open(self.CACHE, 'rb')) cache = cPickle.load(open(self.CACHE, 'rb'))
builtins = list(set_builtins(self.BUILTINS))
for f, mtime in self.get_files(cache): for f, mtime in self.get_files(cache):
self.info('\tChecking', f) self.info('\tChecking', f)
w = check_for_python_errors(f, self.BUILTINS) w = check_for_python_errors(open(f, 'rb').read(), f)
if w: if w:
self.report_errors(w) self.report_errors(w)
cPickle.dump(cache, open(self.CACHE, 'wb'), -1) cPickle.dump(cache, open(self.CACHE, 'wb'), -1)
subprocess.call(['gvim', '-f', f]) subprocess.call(['gvim', '-f', f])
raise SystemExit(1) raise SystemExit(1)
cache[f] = mtime cache[f] = mtime
for x in builtins:
delattr(__builtin__, x)
cPickle.dump(cache, open(self.CACHE, 'wb'), -1) cPickle.dump(cache, open(self.CACHE, 'wb'), -1)
wn_path = os.path.expanduser('~/work/servers/src/calibre_servers/main') wn_path = os.path.expanduser('~/work/servers/src/calibre_servers/main')
if os.path.exists(wn_path): if os.path.exists(wn_path):
@ -85,11 +112,5 @@ class Check(Command):
def report_errors(self, errors): def report_errors(self, errors):
for err in errors: for err in errors:
if isinstance(err, SyntaxError): self.info('\t\t', str(err))
print '\t\tSyntax Error'
else:
col = getattr(err, 'col', 0) if getattr(err, 'col', 0) else 0
lineno = err.lineno if err.lineno else 0
self.info('\t\t%d:%d:'%(lineno, col),
err.message%err.message_args)

View File

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

View File

@ -35,18 +35,9 @@ Run an embedded python interpreter.
parser.add_option('--pdfreflow', default=None, parser.add_option('--pdfreflow', default=None,
help='Path to PDF file to try and reflow. Output will be placed in ' help='Path to PDF file to try and reflow. Output will be placed in '
'current directory. ') 'current directory. ')
parser.add_option('-f', '--develop-from', default=None,
help=('Develop calibre from the specified path. '
'The path should point to the src sub-directory in the '
'calibre source tree.'))
return parser return parser
def develop_from(path):
from calibre.gui2 import build_forms
print 'Compiling .ui forms...'
build_forms(path)
def migrate(old, new): def migrate(old, new):
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre.library.database import LibraryDatabase from calibre.library.database import LibraryDatabase
@ -192,8 +183,6 @@ def main(args=sys.argv):
from calibre.utils.logging import default_log from calibre.utils.logging import default_log
opts2, args = px().parse_args(['xxxx', '-vvvv', opts.pdfreflow]) opts2, args = px().parse_args(['xxxx', '-vvvv', opts.pdfreflow])
run(opts2, opts.pdfreflow, default_log) run(opts2, opts.pdfreflow, default_log)
elif opts.develop_from is not None:
develop_from(opts.develop_from)
else: else:
from calibre import ipython from calibre import ipython
ipython() ipython()

View File

@ -17,18 +17,31 @@ class ANDROID(USBMS):
# Ordered list of supported formats # Ordered list of supported formats
FORMATS = ['epub'] FORMATS = ['epub']
VENDOR_ID = [ VENDOR_ID = {
0x0bb4, 0x0bb4 : { 0x0c02 : [0x100], 0x0c01 : [0x100]},
] 0x22b8 : { 0x41d9 : [0x216]},
PRODUCT_ID = [0x0c02, 0x0c01] }
BCD = [0x100] EBOOK_DIR_MAIN = ['wordplayer/calibretransfer', 'eBooks/import', 'Books']
EBOOK_DIR_MAIN = 'wordplayer/calibretransfer' EXTRA_CUSTOMIZATION_MESSAGE = _('Comma separated list of directories to '
'send e-books to on the device. The first one that exists will '
'be used')
EXTRA_CUSTOMIZATION_DEFAULT = ', '.join(EBOOK_DIR_MAIN)
VENDOR_NAME = 'HTC' VENDOR_NAME = ['HTC', 'MOTOROLA']
WINDOWS_MAIN_MEM = 'ANDROID_PHONE' WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855']
OSX_MAIN_MEM = 'HTC Android Phone Media' OSX_MAIN_MEM = 'HTC Android Phone Media'
MAIN_MEMORY_VOLUME_LABEL = 'Android Internal Memory' MAIN_MEMORY_VOLUME_LABEL = 'Android Phone Internal Memory'
SUPPORTS_SUB_DIRS = True SUPPORTS_SUB_DIRS = True
def get_main_ebook_dir(self):
opts = self.settings()
dirs = opts.extra_customization
if not dirs:
dirs = self.EBOOK_DIR_MAIN
else:
dirs = [x.strip() for x in dirs.split(',')]
return dirs

View File

@ -88,11 +88,11 @@ class POCKETBOOK360(EB600):
gui_name = 'PocketBook 360' gui_name = 'PocketBook 360'
FORMATS = ['epub', 'fb2', 'pdf', 'djvu', 'rtf', 'chm', 'txt'] FORMATS = ['epub', 'fb2', 'prc', 'mobi', 'pdf', 'djvu', 'rtf', 'chm', 'txt']
VENDOR_NAME = 'PHILIPS' VENDOR_NAME = 'PHILIPS'
WINDOWS_MAIN_MEM = 'MASS_STORGE' WINDOWS_MAIN_MEM = 'MASS_STORGE'
WINDOWS_CARD_A_MEM = 'MASS_STORAGE' WINDOWS_CARD_A_MEM = 'MASS_STORGE'
OSX_MAIN_MEM = 'Philips Mass Storge Media' OSX_MAIN_MEM = 'Philips Mass Storge Media'
OSX_CARD_A_MEM = 'Philips Mass Storge Media' OSX_CARD_A_MEM = 'Philips Mass Storge Media'

View File

@ -5,8 +5,10 @@ Define the minimum interface that a device backend must satisfy to be used in
the GUI. A device backend must subclass the L{Device} class. See prs500.py for the GUI. A device backend must subclass the L{Device} class. See prs500.py for
a backend that implement the Device interface for the SONY PRS500 Reader. a backend that implement the Device interface for the SONY PRS500 Reader.
""" """
import os
from calibre.customize import Plugin from calibre.customize import Plugin
from calibre.constants import iswindows
class DevicePlugin(Plugin): class DevicePlugin(Plugin):
""" """
@ -21,7 +23,14 @@ class DevicePlugin(Plugin):
# Ordered list of supported formats # Ordered list of supported formats
FORMATS = ["lrf", "rtf", "pdf", "txt"] FORMATS = ["lrf", "rtf", "pdf", "txt"]
#: VENDOR_ID can be either an integer, a list of integers or a dictionary
#: If it is a dictionary, it must be a dictionary of dictionaries, of the form
#: {
#: integer_vendor_id : { product_id : [list of BCDs], ... },
#: ...
#: }
VENDOR_ID = 0x0000 VENDOR_ID = 0x0000
#: An integer or a list of integers
PRODUCT_ID = 0x0000 PRODUCT_ID = 0x0000
# BCD can be either None to not distinguish between devices based on BCD, or # BCD can be either None to not distinguish between devices based on BCD, or
# it can be a list of the BCD numbers of all devices supported by this driver. # it can be a list of the BCD numbers of all devices supported by this driver.
@ -29,6 +38,88 @@ class DevicePlugin(Plugin):
THUMBNAIL_HEIGHT = 68 # Height for thumbnails on device THUMBNAIL_HEIGHT = 68 # Height for thumbnails on device
# Whether the metadata on books can be set via the GUI. # Whether the metadata on books can be set via the GUI.
CAN_SET_METADATA = True CAN_SET_METADATA = True
#: Path separator for paths to books on device
path_sep = os.sep
@classmethod
def test_bcd_windows(cls, device_id, bcd):
if bcd is None or len(bcd) == 0:
return True
for c in bcd:
# Bug in winutil.get_usb_devices converts a to :
rev = ('rev_%4.4x'%c).replace('a', ':')
if rev in device_id:
return True
return False
@classmethod
def is_usb_connected_windows(cls, devices_on_system):
def id_iterator():
if hasattr(cls.VENDOR_ID, 'keys'):
for vid in cls.VENDOR_ID:
vend = cls.VENDOR_ID[vid]
for pid in vend:
bcd = vend[pid]
yield vid, pid, bcd
else:
vendors = cls.VENDOR_ID if hasattr(cls.VENDOR_ID, '__len__') else [cls.VENDOR_ID]
products = cls.PRODUCT_ID if hasattr(cls.PRODUCT_ID, '__len__') else [cls.PRODUCT_ID]
for vid in vendors:
for pid in products:
yield vid, pid, cls.BCD
for vendor_id, product_id, bcd in id_iterator():
vid, pid = 'vid_%4.4x'%vendor_id, 'pid_%4.4x'%product_id
vidd, pidd = 'vid_%i'%vendor_id, 'pid_%i'%product_id
for device_id in devices_on_system:
if (vid in device_id or vidd in device_id) and (pid in device_id or pidd in device_id):
if cls.test_bcd_windows(device_id, bcd) and cls.can_handle(device_id):
return True
return False
@classmethod
def test_bcd(cls, bcdDevice, bcd):
if bcd is None or len(bcd) == 0:
return True
for c in bcd:
if c == bcdDevice:
return True
return False
@classmethod
def is_usb_connected(cls, devices_on_system):
'''
Return True if a device handled by this plugin is currently connected.
:param devices_on_system: List of devices currently connected
'''
if iswindows:
return cls.is_usb_connected_windows(devices_on_system)
vendors_on_system = set([x[0] for x in devices_on_system])
vendors = cls.VENDOR_ID if hasattr(cls.VENDOR_ID, '__len__') else [cls.VENDOR_ID]
if hasattr(cls.VENDOR_ID, 'keys'):
products = []
for ven in cls.VENDOR_ID:
products.extend(cls.VENDOR_ID[ven].keys())
else:
products = cls.PRODUCT_ID if hasattr(cls.PRODUCT_ID, '__len__') else [cls.PRODUCT_ID]
for vid in vendors:
if vid in vendors_on_system:
for cvid, pid, bcd in devices_on_system:
if cvid == vid:
if pid in products:
if hasattr(cls.VENDOR_ID, 'keys'):
cbcd = cls.VENDOR_ID[vid][pid]
else:
cbcd = cls.BCD
if cls.test_bcd(bcd, cbcd) and cls.can_handle((vid,
pid, bcd)):
return True
return False
def reset(self, key='-1', log_packets=False, report_progress=None) : def reset(self, key='-1', log_packets=False, report_progress=None) :
""" """

View File

@ -26,6 +26,7 @@ class PRS505(CLI, Device):
description = _('Communicate with the Sony PRS-300/505/500 eBook reader.') 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'] supported_platforms = ['windows', 'osx', 'linux']
path_sep = '/'
FORMATS = ['epub', 'lrf', 'lrx', 'rtf', 'pdf', 'txt'] FORMATS = ['epub', 'lrf', 'lrx', 'rtf', 'pdf', 'txt']

View File

@ -67,44 +67,8 @@ class DeviceScanner(object):
'''Fetch list of connected USB devices from operating system''' '''Fetch list of connected USB devices from operating system'''
self.devices = self.scanner() self.devices = self.scanner()
def test_bcd_windows(self, device_id, bcd):
if bcd is None or len(bcd) == 0:
return True
for c in bcd:
# Bug in winutil.get_usb_devices converts a to :
rev = ('rev_%4.4x'%c).replace('a', ':')
if rev in device_id:
return True
return False
def test_bcd(self, bcdDevice, bcd):
if bcd is None or len(bcd) == 0:
return True
for c in bcd:
if c == bcdDevice:
return True
return False
def is_device_connected(self, device): def is_device_connected(self, device):
vendor_ids = device.VENDOR_ID if hasattr(device.VENDOR_ID, '__len__') else [device.VENDOR_ID] return device.is_usb_connected(self.devices)
product_ids = device.PRODUCT_ID if hasattr(device.PRODUCT_ID, '__len__') else [device.PRODUCT_ID]
if iswindows:
for vendor_id in vendor_ids:
for product_id in product_ids:
vid, pid = 'vid_%4.4x'%vendor_id, 'pid_%4.4x'%product_id
vidd, pidd = 'vid_%i'%vendor_id, 'pid_%i'%product_id
for device_id in self.devices:
if (vid in device_id or vidd in device_id) and (pid in device_id or pidd in device_id):
if self.test_bcd_windows(device_id, getattr(device, 'BCD', None)):
if device.can_handle(device_id):
return True
else:
for vendor, product, bcdDevice in self.devices:
if vendor in vendor_ids and product in product_ids:
if self.test_bcd(bcdDevice, getattr(device, 'BCD', None)):
if device.can_handle((vendor, product, bcdDevice)):
return True
return False
def main(args=sys.argv): def main(args=sys.argv):

View File

@ -211,8 +211,16 @@ class Device(DeviceConfig, DevicePlugin):
def windows_match_device(self, drive, attr): def windows_match_device(self, drive, attr):
pnp_id = str(drive.PNPDeviceID).upper() pnp_id = str(drive.PNPDeviceID).upper()
device_id = getattr(self, attr) device_id = getattr(self, attr)
if device_id is None or \
'VEN_' + str(self.VENDOR_NAME).upper() not in pnp_id: def test_vendor():
vendors = [self.VENDOR_NAME] if isinstance(self.VENDOR_NAME,
basestring) else self.VENDOR_NAME
for v in vendors:
if 'VEN_'+str(v).upper() in pnp_id:
return True
return False
if device_id is None or not test_vendor():
return False return False
if hasattr(device_id, 'search'): if hasattr(device_id, 'search'):
@ -606,7 +614,6 @@ class Device(DeviceConfig, DevicePlugin):
def eject_linux(self): def eject_linux(self):
drives = self.find_device_nodes() drives = self.find_device_nodes()
success = False
for drive in drives: for drive in drives:
if drive: if drive:
cmd = 'calibre-mount-helper' cmd = 'calibre-mount-helper'
@ -663,7 +670,8 @@ class Device(DeviceConfig, DevicePlugin):
traceback.print_exc() traceback.print_exc()
self._main_prefix = self._card_a_prefix = self._card_b_prefix = None self._main_prefix = self._card_a_prefix = self._card_b_prefix = None
def get_main_ebook_dir(self):
return self.EBOOK_DIR_MAIN
def _sanity_check(self, on_card, files): def _sanity_check(self, on_card, files):
if on_card == 'carda' and not self._card_a_prefix: if on_card == 'carda' and not self._card_a_prefix:
@ -680,8 +688,15 @@ class Device(DeviceConfig, DevicePlugin):
path = os.path.join(self._card_b_prefix, path = os.path.join(self._card_b_prefix,
*(self.EBOOK_DIR_CARD_B.split('/'))) *(self.EBOOK_DIR_CARD_B.split('/')))
else: else:
path = os.path.join(self._main_prefix, candidates = self.get_main_ebook_dir()
*(self.EBOOK_DIR_MAIN.split('/'))) if isinstance(candidates, basestring):
candidates = [candidates]
candidates = [os.path.join(self._main_prefix, *(x.split('/'))) for x
in candidates]
existing = [x for x in candidates if os.path.exists(x)]
if not existing:
existing = candidates[:1]
path = existing[0]
def get_size(obj): def get_size(obj):
if hasattr(obj, 'seek'): if hasattr(obj, 'seek'):

View File

@ -9,14 +9,22 @@ from calibre.utils.config import Config, ConfigProxy
class DeviceConfig(object): class DeviceConfig(object):
HELP_MESSAGE = _('Configure Device') HELP_MESSAGE = _('Configure Device')
EXTRA_CUSTOMIZATION_MESSAGE = None
EXTRA_CUSTOMIZATION_DEFAULT = None
@classmethod @classmethod
def _config(cls): def _config(cls):
klass = cls if isinstance(cls, type) else cls.__class__ klass = cls if isinstance(cls, type) else cls.__class__
c = Config('device_drivers_%s' % klass.__name__, _('settings for device drivers')) c = Config('device_drivers_%s' % klass.__name__, _('settings for device drivers'))
c.add_opt('format_map', default=cls.FORMATS, help=_('Ordered list of formats the device will accept')) c.add_opt('format_map', default=cls.FORMATS,
c.add_opt('use_subdirs', default=True, help=_('Place files in sub directories if the device supports them')) help=_('Ordered list of formats the device will accept'))
c.add_opt('read_metadata', default=True, help=_('Read metadata from files on device')) c.add_opt('use_subdirs', default=True,
help=_('Place files in sub directories if the device supports them'))
c.add_opt('read_metadata', default=True,
help=_('Read metadata from files on device'))
c.add_opt('extra_customization',
default=cls.EXTRA_CUSTOMIZATION_DEFAULT,
help=_('Extra customization'))
return c return c
@classmethod @classmethod
@ -27,16 +35,23 @@ class DeviceConfig(object):
def config_widget(cls): def config_widget(cls):
from calibre.gui2.device_drivers.configwidget import ConfigWidget from calibre.gui2.device_drivers.configwidget import ConfigWidget
cw = ConfigWidget(cls.settings(), cls.FORMATS, cls.SUPPORTS_SUB_DIRS, cw = ConfigWidget(cls.settings(), cls.FORMATS, cls.SUPPORTS_SUB_DIRS,
cls.MUST_READ_METADATA) cls.MUST_READ_METADATA, cls.EXTRA_CUSTOMIZATION_MESSAGE,
cls.EXTRA_CUSTOMIZATION_DEFAULT)
return cw return cw
@classmethod @classmethod
def save_settings(cls, config_widget): def save_settings(cls, config_widget):
cls._configProxy()['format_map'] = config_widget.format_map() proxy = cls._configProxy()
proxy['format_map'] = config_widget.format_map()
if cls.SUPPORTS_SUB_DIRS: if cls.SUPPORTS_SUB_DIRS:
cls._configProxy()['use_subdirs'] = config_widget.use_subdirs() proxy['use_subdirs'] = config_widget.use_subdirs()
if not cls.MUST_READ_METADATA: if not cls.MUST_READ_METADATA:
cls._configProxy()['read_metadata'] = config_widget.read_metadata() proxy['read_metadata'] = config_widget.read_metadata()
if cls.EXTRA_CUSTOMIZATION_MESSAGE:
ec = unicode(config_widget.opt_extra_customization.text()).strip()
if not ec:
ec = None
proxy['extra_customization'] = ec
@classmethod @classmethod
def settings(cls): def settings(cls):

View File

@ -312,7 +312,6 @@ class EPUBOutput(OutputFormatPlugin):
for tag in XPath('//h:center')(root): for tag in XPath('//h:center')(root):
tag.tag = XHTML('div') tag.tag = XHTML('div')
tag.set('style', 'text-align:center') tag.set('style', 'text-align:center')
# ADE can't handle &amp; in an img url # ADE can't handle &amp; in an img url
for tag in XPath('//h:img[@src]')(root): for tag in XPath('//h:img[@src]')(root):
tag.set('src', tag.get('src', '').replace('&', '')) tag.set('src', tag.get('src', '').replace('&', ''))
@ -340,6 +339,7 @@ class EPUBOutput(OutputFormatPlugin):
else: else:
self.oeb.log.warn('No stylesheet found') self.oeb.log.warn('No stylesheet found')
def workaround_sony_quirks(self): def workaround_sony_quirks(self):
''' '''
Perform toc link transforms to alleviate slow loading. Perform toc link transforms to alleviate slow loading.

View File

@ -43,8 +43,11 @@ class FB2Input(InputFormatPlugin):
from calibre.ebooks.oeb.base import XLINK_NS from calibre.ebooks.oeb.base import XLINK_NS
NAMESPACES = {'f':FB2NS, 'l':XLINK_NS} NAMESPACES = {'f':FB2NS, 'l':XLINK_NS}
log.debug('Parsing XML...') log.debug('Parsing XML...')
parser = etree.XMLParser(recover=True, no_network=True) raw = stream.read()
doc = etree.fromstring(stream.read()) try:
doc = etree.fromstring(raw)
except etree.XMLSyntaxError:
doc = etree.fromstring(raw.replace('& ', '&amp;'))
self.extract_embedded_content(doc) self.extract_embedded_content(doc)
log.debug('Converting XML to HTML...') log.debug('Converting XML to HTML...')
ss = open(P('templates/fb2.xsl'), 'rb').read() ss = open(P('templates/fb2.xsl'), 'rb').read()

View File

@ -21,4 +21,26 @@ class LITInput(InputFormatPlugin):
from calibre.ebooks.conversion.plumber import create_oebbook from calibre.ebooks.conversion.plumber import create_oebbook
return create_oebbook(log, stream, options, self, reader=LitReader) return create_oebbook(log, stream, options, self, reader=LitReader)
def postprocess_book(self, oeb, opts, log):
from calibre.ebooks.oeb.base import XHTML_NS, XPath, XHTML
for item in oeb.spine:
root = item.data
if not hasattr(root, 'xpath'): continue
body = XPath('//h:body')(root)
if body:
body = body[0]
if len(body) == 1 and body[0].tag == XHTML('pre'):
pre = body[0]
from calibre.ebooks.txt.processor import convert_basic
from lxml import etree
import copy
html = convert_basic(pre.text).replace('<html>',
'<html xmlns="%s">'%XHTML_NS)
root = etree.fromstring(html)
body = XPath('//h:body')(root)
pre.tag = XHTML('div')
pre.text = ''
for elem in body:
ne = copy.deepcopy(elem)
pre.append(ne)

View File

@ -866,6 +866,10 @@ class LitContainer(object):
atoms = self._litfile.get_atoms(entry) atoms = self._litfile.get_atoms(entry)
unbin = UnBinary(raw, name, manifest, HTML_MAP, atoms) unbin = UnBinary(raw, name, manifest, HTML_MAP, atoms)
content = HTML_DECL + str(unbin) content = HTML_DECL + str(unbin)
tags = ('personname', 'place', 'city', 'country-region')
pat = r'(?i)</{0,1}st1:(%s)>'%('|'.join(tags))
content = re.sub(pat, '', content)
content = re.sub(r'<(/{0,1})form>', r'<\1div>', content)
else: else:
internal = '/'.join(('/data', entry.internal)) internal = '/'.join(('/data', entry.internal))
content = self._litfile.get_file(internal) content = self._litfile.get_file(internal)

View File

@ -106,7 +106,7 @@ def process_file(lrfpath, opts, logger=None):
os.makedirs(opts.out) os.makedirs(opts.out)
document = LRFDocument(open(lrfpath, 'rb')) document = LRFDocument(open(lrfpath, 'rb'))
conv = LRFConverter(document, opts, logger) LRFConverter(document, opts, logger)
def main(args=sys.argv): def main(args=sys.argv):

View File

@ -872,8 +872,9 @@ class Text(LRFStream):
if isinstance(c, basestring): if isinstance(c, basestring):
s += c s += c
elif c is None: elif c is None:
p = open_containers.pop() if open_containers:
s += u'</%s>'%(p.name,) p = open_containers.pop()
s += u'</%s>'%(p.name,)
else: else:
s += unicode(c) s += unicode(c)
if not c.self_closing: if not c.self_closing:

View File

@ -2207,7 +2207,7 @@ class JumpButton(LrsObject, LrsContainer):
def toElement(self, se): def toElement(self, se):
b = self.lrsObjectElement("Button") b = self.lrsObjectElement("Button")
pb = SubElement(b, "PushButton") pb = SubElement(b, "PushButton")
jt = SubElement(pb, "JumpTo", SubElement(pb, "JumpTo",
refpage=str(self.textBlock.parent.objId), refpage=str(self.textBlock.parent.objId),
refobj=str(self.textBlock.objId)) refobj=str(self.textBlock.objId))
return b return b

View File

@ -323,7 +323,7 @@ class MobiReader(object):
self.log.warning('Malformed markup, parsing using BeautifulSoup') self.log.warning('Malformed markup, parsing using BeautifulSoup')
try: try:
root = soupparser.fromstring(self.processed_html) root = soupparser.fromstring(self.processed_html)
except Exception, err: except Exception:
self.log.warning('MOBI markup appears to contain random bytes. Stripping.') self.log.warning('MOBI markup appears to contain random bytes. Stripping.')
self.processed_html = self.remove_random_bytes(self.processed_html) self.processed_html = self.remove_random_bytes(self.processed_html)
root = soupparser.fromstring(self.processed_html) root = soupparser.fromstring(self.processed_html)

View File

@ -510,7 +510,7 @@ class MobiWriter(object):
self._oeb.log.warning('_generate_flat_indexed_navpoints: Failed to generate index') self._oeb.log.warning('_generate_flat_indexed_navpoints: Failed to generate index')
# Zero out self._HTMLRecords, return False # Zero out self._HTMLRecords, return False
self._HTMLRecords = [] self._HTMLRecords = []
last_name = None #last_name = None
return False return False
previousOffset = offset previousOffset = offset
@ -545,7 +545,7 @@ class MobiWriter(object):
if self.opts.verbose > 3 : self._oeb.logger.info(" node %03d: %-15.15s... spans HTML records %03d - %03d \t offset: 0x%06X length: 0x%06X" % \ if self.opts.verbose > 3 : self._oeb.logger.info(" node %03d: %-15.15s... spans HTML records %03d - %03d \t offset: 0x%06X length: 0x%06X" % \
(myIndex, child.title if child.title.strip() > "" else "(missing)", myStartingRecord, myStartingRecord, offset, length) ) (myIndex, child.title if child.title.strip() > "" else "(missing)", myStartingRecord, myStartingRecord, offset, length) )
last_name = "%04X" % myIndex #last_name = "%04X" % myIndex
myIndex += 1 myIndex += 1
# Successfully parsed the entries # Successfully parsed the entries
@ -625,7 +625,7 @@ class MobiWriter(object):
self._oeb.log.warning('_generate_indexed_navpoints: Failed to generate index') self._oeb.log.warning('_generate_indexed_navpoints: Failed to generate index')
# Zero out self._HTMLRecords, return False # Zero out self._HTMLRecords, return False
self._HTMLRecords = [] self._HTMLRecords = []
last_name = None #last_name = None
return False return False
previousOffset = offset previousOffset = offset
@ -659,7 +659,7 @@ class MobiWriter(object):
# *** This should check currentSectionNumber, because content could start late # *** This should check currentSectionNumber, because content could start late
if thisRecord > 0: if thisRecord > 0:
sectionChangesInThisRecord = True sectionChangesInThisRecord = True
sectionChangesInRecordNumber = thisRecord #sectionChangesInRecordNumber = thisRecord
self._currentSectionIndex += 1 self._currentSectionIndex += 1
self._HTMLRecords[thisRecord].nextSectionNumber = self._currentSectionIndex self._HTMLRecords[thisRecord].nextSectionNumber = self._currentSectionIndex
# The following node opens the nextSection # The following node opens the nextSection
@ -717,7 +717,7 @@ class MobiWriter(object):
if self.opts.verbose > 3 : self._oeb.logger.info(" node: %03d %-10.10s %-15.15s... spans HTML records %03d-%03d \t offset: 0x%06X length: 0x%06X" % \ if self.opts.verbose > 3 : self._oeb.logger.info(" node: %03d %-10.10s %-15.15s... spans HTML records %03d-%03d \t offset: 0x%06X length: 0x%06X" % \
(myIndex, self._ctoc_map[i]['klass'], child.title if child.title.strip() > "" else "(missing)", thisRecord, thisRecord, offset, length) ) (myIndex, self._ctoc_map[i]['klass'], child.title if child.title.strip() > "" else "(missing)", thisRecord, thisRecord, offset, length) )
last_name = "%04X" % myIndex #last_name = "%04X" % myIndex
myIndex += 1 myIndex += 1
# Successfully parsed the entries # Successfully parsed the entries
@ -1999,7 +1999,7 @@ class MobiWriter(object):
self._articleCount = 0 self._articleCount = 0
self._chapterCount = 0 self._chapterCount = 0
first = True #first = True
if self._conforming_periodical_toc : if self._conforming_periodical_toc :
self._oeb.logger.info('Generating structured CTOC ...') self._oeb.logger.info('Generating structured CTOC ...')
@ -2007,7 +2007,7 @@ class MobiWriter(object):
if self.opts.verbose > 2 : if self.opts.verbose > 2 :
self._oeb.logger.info(" %s" % child) self._oeb.logger.info(" %s" % child)
self._add_structured_ctoc_node(child, self._ctoc) self._add_structured_ctoc_node(child, self._ctoc)
first = False #first = False
else : else :
self._oeb.logger.info('Generating flat CTOC ...') self._oeb.logger.info('Generating flat CTOC ...')
@ -2025,7 +2025,6 @@ class MobiWriter(object):
# Test to see if this child's offset is the same as the previous child's # Test to see if this child's offset is the same as the previous child's
# offset, skip it # offset, skip it
h = child.href h = child.href
first = False
if h is None: if h is None:
self._oeb.logger.warn(' Ignoring TOC entry with no href:', self._oeb.logger.warn(' Ignoring TOC entry with no href:',
@ -2345,7 +2344,7 @@ class MobiWriter(object):
self._oeb.logger.info( "Writing NCXEntries for mobiType 0x%03X" % myDoc.mobiType) self._oeb.logger.info( "Writing NCXEntries for mobiType 0x%03X" % myDoc.mobiType)
sectionParent = myDoc.documentStructure.sectionParents[0] sectionParent = myDoc.documentStructure.sectionParents[0]
articleCount = len(sectionParent.articles) #articleCount = len(sectionParent.articles)
# Write opening periodical 0xDF entry # Write opening periodical 0xDF entry
index = 0 index = 0
@ -2361,7 +2360,7 @@ class MobiWriter(object):
while sectionCount <= lastSection : while sectionCount <= lastSection :
# section # section
sectionParent = myDoc.documentStructure.sectionParents[sectionCount - 1] sectionParent = myDoc.documentStructure.sectionParents[sectionCount - 1]
articleCount = len(sectionParent.articles) #articleCount = len(sectionParent.articles)
#index += 1 #index += 1
offset = sectionParent.startAddress offset = sectionParent.startAddress
length = sectionParent.sectionLength length = sectionParent.sectionLength

View File

@ -799,6 +799,7 @@ class Manifest(object):
try: try:
data = etree.fromstring(data) data = etree.fromstring(data)
except etree.XMLSyntaxError, err: except etree.XMLSyntaxError, err:
self.oeb.log.exception('Initial parse failed:')
repl = lambda m: ENTITYDEFS.get(m.group(1), m.group(0)) repl = lambda m: ENTITYDEFS.get(m.group(1), m.group(0))
data = ENTITY_RE.sub(repl, data) data = ENTITY_RE.sub(repl, data)
try: try:
@ -843,6 +844,7 @@ class Manifest(object):
# Force into the XHTML namespace # Force into the XHTML namespace
if not namespace(data.tag): if not namespace(data.tag):
self.oeb.log.warn('Forcing', self.href, 'into XHTML namespace')
data.attrib['xmlns'] = XHTML_NS data.attrib['xmlns'] = XHTML_NS
data = etree.tostring(data, encoding=unicode) data = etree.tostring(data, encoding=unicode)
@ -859,6 +861,10 @@ class Manifest(object):
data = re.compile(r'<!--.*?-->', re.DOTALL).sub('', data = re.compile(r'<!--.*?-->', re.DOTALL).sub('',
data) data)
data = re.sub(r'<meta\s+[^>]+?>', '', data) data = re.sub(r'<meta\s+[^>]+?>', '', data)
data = data.replace(
"<?xml version='1.0' encoding='utf-8'?><o:p></o:p>",
'')
data = data.replace("<?xml version='1.0' encoding='utf-8'??>", '')
data = etree.fromstring(data) data = etree.fromstring(data)
elif namespace(data.tag) != XHTML_NS: elif namespace(data.tag) != XHTML_NS:
# OEB_DOC_NS, but possibly others # OEB_DOC_NS, but possibly others

View File

@ -168,7 +168,6 @@ class OEBReader(object):
manifest = self.oeb.manifest manifest = self.oeb.manifest
known = set(manifest.hrefs) known = set(manifest.hrefs)
unchecked = set(manifest.values()) unchecked = set(manifest.values())
bad = []
while unchecked: while unchecked:
new = set() new = set()
for item in unchecked: for item in unchecked:

View File

@ -103,7 +103,7 @@ def run(opts, pathtopdf, log):
pdfreflow.reflow(data) pdfreflow.reflow(data)
index = os.path.join(os.getcwdu(), 'index.xml') index = os.path.join(os.getcwdu(), 'index.xml')
xml = open(index, 'rb').read() xml = open(index, 'rb').read()
#pdfdoc = PDFDocument(xml, opts, log) PDFDocument(xml, opts, log)
def option_parser(): def option_parser():
from optparse import OptionParser from optparse import OptionParser

View File

@ -20,7 +20,7 @@ def is_valid_pdf(pdf_path):
try: try:
with open(os.path.abspath(pdf_path), 'rb') as pdf_file: with open(os.path.abspath(pdf_path), 'rb') as pdf_file:
pdf = PdfFileReader(pdf_file) PdfFileReader(pdf_file)
except: except:
return False return False
return True return True

View File

@ -596,3 +596,6 @@ def build_forms(srcdir, info=None):
open(compiled_form, 'wb').write(dat) open(compiled_form, 'wb').write(dat)
_df = os.environ.get('CALIBRE_DEVELOP_FROM', None)
if _df and os.path.exists(_df):
build_forms(_df)

View File

@ -247,7 +247,7 @@ class DeviceManager(Thread):
def _save_books(self, paths, target): def _save_books(self, paths, target):
'''Copy books from device to disk''' '''Copy books from device to disk'''
for path in paths: for path in paths:
name = path.rpartition('/')[2] name = path.rpartition(getattr(self.device, 'path_sep', '/'))[2]
dest = os.path.join(target, name) dest = os.path.join(target, name)
if os.path.abspath(dest) != os.path.abspath(path): if os.path.abspath(dest) != os.path.abspath(path):
f = open(dest, 'wb') f = open(dest, 'wb')
@ -609,7 +609,6 @@ class DeviceGUI(object):
def emails_sent(self, results, remove=[]): def emails_sent(self, results, remove=[]):
errors, good = [], [] errors, good = [], []
for jobname, exception, tb in results: for jobname, exception, tb in results:
id = jobname.partition(':')[0]
title = jobname.partition(':')[-1] title = jobname.partition(':')[-1]
if exception is not None: if exception is not None:
errors.append([title, exception, tb]) errors.append([title, exception, tb])

View File

@ -11,7 +11,8 @@ from calibre.gui2.device_drivers.configwidget_ui import Ui_ConfigWidget
class ConfigWidget(QWidget, Ui_ConfigWidget): class ConfigWidget(QWidget, Ui_ConfigWidget):
def __init__(self, settings, all_formats, supports_subdirs, def __init__(self, settings, all_formats, supports_subdirs,
must_read_metadata): must_read_metadata, extra_customization_message,
extra_customization_value):
QWidget.__init__(self) QWidget.__init__(self)
Ui_ConfigWidget.__init__(self) Ui_ConfigWidget.__init__(self)
@ -38,6 +39,14 @@ class ConfigWidget(QWidget, Ui_ConfigWidget):
self.opt_read_metadata.setChecked(self.settings.read_metadata) self.opt_read_metadata.setChecked(self.settings.read_metadata)
else: else:
self.opt_read_metadata.hide() self.opt_read_metadata.hide()
if extra_customization_message:
self.extra_customization_label.setText(extra_customization_message)
if extra_customization_value:
self.opt_extra_customization.setText(extra_customization_value)
else:
self.extra_customization_label.setVisible(False)
self.opt_extra_customization.setVisible(False)
def up_column(self): def up_column(self):
idx = self.columns.currentRow() idx = self.columns.currentRow()

View File

@ -73,23 +73,39 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QCheckBox" name="opt_use_subdirs">
<property name="text">
<string>Use sub directories</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="opt_read_metadata">
<property name="text">
<string>Read metadata from files on device</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QCheckBox" name="opt_read_metadata">
<property name="text">
<string>Read metadata from files on device</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="opt_use_subdirs">
<property name="text">
<string>Use sub directories</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="extra_customization_label">
<property name="text">
<string>Extra customization</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="buddy">
<cstring>opt_extra_customization</cstring>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLineEdit" name="opt_extra_customization"/>
</item>
</layout> </layout>
</widget> </widget>
<resources> <resources>

View File

@ -135,7 +135,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
set_isbndb_key(key) set_isbndb_key(key)
else: else:
key = None key = None
title = author = publisher = isbn = pubdate = None title = author = publisher = isbn = None
if self.isbn: if self.isbn:
isbn = self.isbn isbn = self.isbn
if self.title: if self.title:

View File

@ -50,7 +50,7 @@ class TagEditor(QDialog, Ui_TagEditor):
confirms, deletes = [], [] confirms, deletes = [], []
items = self.available_tags.selectedItems() if item is None else [item] items = self.available_tags.selectedItems() if item is None else [item]
if not items: if not items:
d = error_dialog(self, 'No tags selected', 'You must select at least one tag from the list of Available tags.').exec_() error_dialog(self, 'No tags selected', 'You must select at least one tag from the list of Available tags.').exec_()
return return
for item in items: for item in items:
if self.db.is_tag_used(qstring_to_unicode(item.text())): if self.db.is_tag_used(qstring_to_unicode(item.text())):

View File

@ -125,7 +125,6 @@ class JobManager(QAbstractTableModel):
def _update(self): def _update(self):
# Update running time # Update running time
rows = set([])
for i, j in enumerate(self.jobs): for i, j in enumerate(self.jobs):
if j.run_state == j.RUNNING: if j.run_state == j.RUNNING:
idx = self.index(i, 3) idx = self.index(i, 3)

View File

@ -186,7 +186,7 @@ class TextBlock(object):
try: try:
self.populate(tb.content) self.populate(tb.content)
self.end_line() self.end_line()
except TextBlock.HeightExceeded, err: except TextBlock.HeightExceeded:
pass pass
#logger.warning('TextBlock height exceeded, skipping line:\n%s'%(err,)) #logger.warning('TextBlock height exceeded, skipping line:\n%s'%(err,))

File diff suppressed because it is too large Load Diff

View File

@ -141,6 +141,7 @@ class TagsModel(QAbstractItemModel):
data=self.categories[i], category_icon=self.cmap[i]) data=self.categories[i], category_icon=self.cmap[i])
for tag in data[r]: for tag in data[r]:
t = TagTreeItem(parent=c, data=tag, icon_map=self.icon_map) t = TagTreeItem(parent=c, data=tag, icon_map=self.icon_map)
t
self.db.add_listener(self.database_changed) self.db.add_listener(self.database_changed)
self.connect(self, SIGNAL('need_refresh()'), self.refresh, self.connect(self, SIGNAL('need_refresh()'), self.refresh,
@ -229,7 +230,6 @@ class TagsModel(QAbstractItemModel):
def reset_all_states(self): def reset_all_states(self):
for i in xrange(self.rowCount(QModelIndex())): for i in xrange(self.rowCount(QModelIndex())):
category_index = self.index(i, 0, QModelIndex()) category_index = self.index(i, 0, QModelIndex())
category_item = category_index.internalPointer()
for j in xrange(self.rowCount(category_index)): for j in xrange(self.rowCount(category_index)):
tag_index = self.index(j, 0, category_index) tag_index = self.index(j, 0, category_index)
tag_item = tag_index.internalPointer() tag_item = tag_index.internalPointer()

View File

@ -95,10 +95,6 @@ def convert_single_ebook(parent, db, book_ids, auto_conversion=False, out_format
return jobs, changed, bad return jobs, changed, bad
def convert_bulk_ebook(parent, queue, db, book_ids, out_format=None, args=[]): def convert_bulk_ebook(parent, queue, db, book_ids, out_format=None, args=[]):
changed = False
jobs = []
bad = []
total = len(book_ids) total = len(book_ids)
if total == 0: if total == 0:
return None, None, None return None, None, None

View File

@ -437,7 +437,7 @@ def move_library(oldloc, newloc, parent, callback_on_complete):
# Try to load existing library at new location # Try to load existing library at new location
try: try:
ndb = LibraryDatabase2(newloc) LibraryDatabase2(newloc)
except Exception, err: except Exception, err:
det = traceback.format_exc() det = traceback.format_exc()
error_dialog(parent, _('Invalid database'), error_dialog(parent, _('Invalid database'),

View File

@ -889,10 +889,8 @@ class LibraryDatabase2(LibraryDatabase):
def formats(self, index, index_is_id=False): def formats(self, index, index_is_id=False):
''' Return available formats as a comma separated list or None if there are no available formats ''' ''' Return available formats as a comma separated list or None if there are no available formats '''
id = index if index_is_id else self.id(index) id = index if index_is_id else self.id(index)
path = os.path.join(self.library_path, self.path(id, index_is_id=True))
try: try:
formats = self.conn.get('SELECT format FROM data WHERE book=?', (id,)) formats = self.conn.get('SELECT format FROM data WHERE book=?', (id,))
name = self.conn.get('SELECT name FROM data WHERE book=?', (id,), all=False)
formats = map(lambda x:x[0], formats) formats = map(lambda x:x[0], formats)
except: except:
return None return None
@ -910,7 +908,10 @@ class LibraryDatabase2(LibraryDatabase):
def format_abspath(self, index, format, index_is_id=False): def format_abspath(self, index, format, index_is_id=False):
'Return absolute path to the ebook file of format `format`' 'Return absolute path to the ebook file of format `format`'
id = index if index_is_id else self.id(index) id = index if index_is_id else self.id(index)
name = self.conn.get('SELECT name FROM data WHERE book=? AND format=?', (id, format), all=False) try:
name = self.conn.get('SELECT name FROM data WHERE book=? AND format=?', (id, format), all=False)
except:
return None
if name: if name:
path = os.path.join(self.library_path, self.path(id, index_is_id=True)) path = os.path.join(self.library_path, self.path(id, index_is_id=True))
format = ('.' + format.lower()) if format else '' format = ('.' + format.lower()) if format else ''
@ -1813,11 +1814,9 @@ books_series_link feeds
else: else:
actual_formats = [x.lower() for x in actual_formats.split(',')] actual_formats = [x.lower() for x in actual_formats.split(',')]
mismatch = False
for fmt in formats: for fmt in formats:
if fmt in actual_formats: if fmt in actual_formats:
continue continue
mismatch = True
if id not in bad: if id not in bad:
bad[id] = [] bad[id] = []
bad[id].append(fmt) bad[id].append(fmt)

View File

@ -636,10 +636,6 @@ class LibraryServer(object):
'type="application/atom+xml" href="/stanza/?%s"/>\n' 'type="application/atom+xml" href="/stanza/?%s"/>\n'
) % '&amp;'.join(q) ) % '&amp;'.join(q)
author_list=[]
tag_list=[]
series_list=[]
for record in nrecord_list: for record in nrecord_list:
r = record[FIELD_MAP['formats']] r = record[FIELD_MAP['formats']]
r = r.upper() if r else '' r = r.upper() if r else ''

View File

@ -388,7 +388,7 @@ class PostInstall:
finally: finally:
os.chdir(cwd) os.chdir(cwd)
shutil.rmtree(tdir) shutil.rmtree(tdir)
except Exception, err: except Exception:
if self.opts.fatal_errors: if self.opts.fatal_errors:
raise raise
self.task_failed('Setting up desktop integration failed') self.task_failed('Setting up desktop integration failed')

View File

@ -127,7 +127,6 @@ def generate_ebook_convert_help(preamble, info):
input and the output formats, the various combinations are listed below: input and the output formats, the various combinations are listed below:
''') ''')
sections = []
toc = {} toc = {}
sec_templ = textwrap.dedent('''\ sec_templ = textwrap.dedent('''\
.. include:: ../global.rst .. include:: ../global.rst
@ -141,7 +140,6 @@ def generate_ebook_convert_help(preamble, info):
''') ''')
for i, ip in enumerate(input_format_plugins()): for i, ip in enumerate(input_format_plugins()):
path = os.path.join('cli', 'ebook-convert-%d.rst'%i)
sraw = sec_templ.format(ip.name) sraw = sec_templ.format(ip.name)
toc[ip.name] = 'ebook-convert-%d'%i toc[ip.name] = 'ebook-convert-%d'%i
for op in output_format_plugins(): for op in output_format_plugins():

View File

@ -94,11 +94,8 @@ the previously checked out calibre code directory, for example::
cd C:\Users\kovid\work\calibre cd C:\Users\kovid\work\calibre
calibre is the directory that contains the src and resources sub directories. Then, run the following command:: calibre is the directory that contains the src and resources sub directories.
calibre-debug --develop-from src
This assumes that the location of the calibre install (typically ``C:\Program Files\calibre``) is in your PATH.
The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory. The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory.
So, following the example above, it would be ``C:\Users\kovid\work\calibre\src``. A short So, following the example above, it would be ``C:\Users\kovid\work\calibre\src``. A short
`guide <http://docs.python.org/using/windows.html#excursus-setting-environment-variables>`_ to setting environment `guide <http://docs.python.org/using/windows.html#excursus-setting-environment-variables>`_ to setting environment
@ -117,8 +114,6 @@ in your favorite editor and add the line::
print "Hello, world!" print "Hello, world!"
near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``. near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
Note that if you make changes to any .ui files (these files define the |app| Graphical User Interface), you have to re-run the
``calibre-debug --develop-from src`` command, which will compile the .ui files, so that your changes show up.
OS X development environment OS X development environment
------------------------------ ------------------------------
@ -128,11 +123,8 @@ the previously checked out calibre code directory, for example::
cd /Users/kovid/work/calibre cd /Users/kovid/work/calibre
calibre is the directory that contains the src and resources sub directories. Then, run the following command:: calibre is the directory that contains the src and resources sub directories. Ensure you have installed the |app| commandline tools via Preferences->Advanced in the |app| GUI.
calibre-debug --develop-from src
This assumes that you have installed the |app| command line tools. This can be done via Preferences->Advanced in the |app| GUI.
The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory. The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory.
So, following the example above, it would be ``/Users/kovid/work/calibre/src``. Apple So, following the example above, it would be ``/Users/kovid/work/calibre/src``. Apple
`documentation <http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/EnvironmentVars.html#//apple_ref/doc/uid/20002093-BCIJIJBH>`_ `documentation <http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/EnvironmentVars.html#//apple_ref/doc/uid/20002093-BCIJIJBH>`_
@ -151,8 +143,6 @@ in your favorite editor and add the line::
print "Hello, world!" print "Hello, world!"
near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``. near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
Note that if you make changes to any .ui files (these files define the |app| Graphical User Interface), you have to re-run the
``calibre-debug --develop-from src`` command, which will compile the .ui files, so that your changes show up.
Linux development environment Linux development environment
------------------------------ ------------------------------
@ -166,9 +156,7 @@ Install the |app| using the binary installer. The opena terminal and change to
cd /home/kovid/work/calibre cd /home/kovid/work/calibre
calibre is the directory that contains the src and resources sub directories. Then, run the following command:: calibre is the directory that contains the src and resources sub directories.
calibre-debug --develop-from src
The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory. The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path to the src directory.
So, following the example above, it would be ``/home/kovid/work/calibre/src``. How to set environment variables depends on So, following the example above, it would be ``/home/kovid/work/calibre/src``. How to set environment variables depends on
@ -187,7 +175,4 @@ in your favorite editor and add the line::
print "Hello, world!" print "Hello, world!"
near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``. near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
Note that if you make changes to any .ui files (these files define the |app| Graphical User Interface), you have to re-run the
``calibre-debug --develop-from src`` command, which will compile the .ui files, so that your changes show up.

View File

@ -262,7 +262,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
shortname = shortname[:-2] shortname = shortname[:-2]
id = '%s.%s' % (id, shortname) id = '%s.%s' % (id, shortname)
else: else:
id = descr = None id = None
if id: if id:
item = ' '*12 + '<keyword name="%s" id="%s" ref="%s"/>' % ( item = ' '*12 + '<keyword name="%s" id="%s" ref="%s"/>' % (

View File

@ -1,80 +0,0 @@
'''
Trac Macro to generate an end use Changelog from the svn logs.
'''
import re, collections, time, os
from bzrlib import log as blog, branch
from cStringIO import StringIO
from trac.wiki.formatter import Formatter
from trac.wiki.macros import WikiMacroBase
from trac.util import Markup
BZR_PATH = '/usr/local/calibre'
class ChangelogFormatter(blog.LogFormatter):
supports_tags = True
supports_merge_revisions = False
_show_advice = False
def __init__(self, num_of_versions=20):
self.num_of_versions = num_of_versions
self.messages = collections.deque()
self.entries = []
self.current_entry = None
def log_revision(self, r):
if len(self.entries) > self.num_of_versions-1:
return
msg = r.rev.message
match = re.match(r'version\s+(\d+\.\d+.\d+)', msg)
if match:
if self.current_entry is not None:
self.entries.append((self.current_entry, set(self.messages)))
timestamp = r.rev.timezone + r.rev.timestamp
self.current_entry = match.group(1) + time.strftime(' (%d %b, %Y)', time.gmtime(timestamp))
self.messages = collections.deque()
else:
if re.search(r'[a-zA-Z]', msg) and len(msg.strip()) > 5:
if 'translation' not in msg and not msg.startswith('IGN'):
self.messages.append(msg.strip())
def to_wiki_txt(self):
txt = ['= Changelog =\n[[PageOutline]]']
for entry in self.entries:
txt.append(u'----\n== Version '+entry[0]+' ==')
if entry[0].strip().startswith('0.6.0'):
txt.append(u'For a list of new features in 0.6.0 see http://calibre.kovidgoyal.net/new_in_6')
else:
for msg in entry[1]:
txt.append(u' * ' + msg)
return (u'\n'.join(txt)).encode('ascii', 'replace')
def bzr_log_to_txt():
path = BZR_PATH
if not os.path.exists(path):
path = '/home/kovid/work/calibre'
b = branch.Branch.open(path)
lf = ChangelogFormatter()
blog.show_log(b, lf)
return lf.to_wiki_txt()
class ChangeLogMacro(WikiMacroBase):
def expand_macro(self, formatter, name, args):
txt = bzr_log_to_txt().encode('ascii', 'xmlcharrefreplace')
out = StringIO()
Formatter(formatter.env, formatter.context).format(txt, out)
return Markup(out.getvalue().decode('utf8'))
if __name__ == '__main__':
print bzr_log_to_txt().encode('utf-8')

View File

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

View File

@ -1,405 +0,0 @@
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
__appname__ = 'calibre'
import re, textwrap
DEPENDENCIES = [
#(Generic, version, gentoo, ubuntu, fedora)
('python', '2.6', None, None, None),
('Python Imaging Library', '1.1.6', 'imaging', 'python-imaging', 'python-imaging'),
('libusb', '0.1.12', None, None, None),
('Qt', '4.5.1', 'qt', 'libqt4-core libqt4-gui', 'qt4'),
('PyQt', '4.6.1', 'PyQt4', 'python-qt4', 'PyQt4'),
('python-mechanize', '0.1.11', 'dev-python/mechanize', 'python-mechanize', 'python-mechanize'),
('ImageMagick', '6.3.5', 'imagemagick', 'imagemagick', 'ImageMagick'),
('xdg-utils', '1.0.2', 'xdg-utils', 'xdg-utils', 'xdg-utils'),
('lxml', '2.1.5', 'lxml', 'python-lxml', 'python-lxml'),
('python-dateutil', '1.4.1', 'python-dateutil', 'python-dateutil', 'python-dateutil'),
('BeautifulSoup', '3.0.5', 'beautifulsoup', 'python-beautifulsoup', 'python-BeautifulSoup'),
('dnspython', '1.6.0', 'dnspython', 'dnspython', 'dnspython', 'dnspython'),
('poppler', '0.12.0', 'poppler', 'poppler', 'poppler', 'poppler'),
('podofo', '0.7', 'podofo', 'podofo', 'podofo', 'podofo'),
('libwmf', '0.2.8', 'libwmf', 'libwmf', 'libwmf', 'libwmf'),
]
STATUS = 'http://status.calibre-ebook.com/dist'
class CoolDistro:
def __init__(self, name, title, prefix=''):
self.title = title
url = prefix + '/chrome/dl/images/%s_logo.png'
self.img = url%name
def get_linux_data(version='1.0.0'):
data = {'version':version, 'app':__appname__}
data['title'] = 'Download calibre for linux'
data['supported'] = []
for name, title in [
('debian', 'Debian Sid'),
('exherbo', 'Exherbo'),
('foresight', 'Foresight 2.1'),
('gentoo', 'Gentoo'),
('ubuntu', 'Ubuntu Jaunty Jackalope'),
('linux_mint', 'Linux Mint Gloria'),
]:
data['supported'].append(CoolDistro(name, title,
prefix='http://calibre.kovidgoyal.net'))
data['dependencies'] = DEPENDENCIES
return data
if __name__ == '__main__':
import os
from calibre.utils.genshi.template import MarkupTemplate
import cherrypy
class Test:
def index(self):
raw = open(os.path.dirname(os.path.abspath(__file__))+'/templates/linux.html').read()
return MarkupTemplate(raw).generate(**get_linux_data()).render('xhtml')
index.exposed = True
t = Test()
t.index()
cherrypy.quickstart(t)
else:
from pkg_resources import resource_filename
from trac.core import Component, implements
from trac.web.chrome import INavigationContributor, ITemplateProvider, add_stylesheet
from trac.web.main import IRequestHandler
from trac.util import Markup
DOWNLOAD_DIR = '/var/www/calibre.kovidgoyal.net/htdocs/downloads'
MOBILEREAD = 'https://dev.mobileread.com/dist/kovid/calibre/'
#MOBILEREAD = 'http://calibre.kovidgoyal.net/downloads/'
class OS(dict):
"""Dictionary with a default value for unknown keys."""
def __init__(self, dict):
self.update(dict)
if not dict.has_key('img'):
self['img'] = self['name']
class Download(Component):
implements(INavigationContributor, IRequestHandler, ITemplateProvider)
request_pat = re.compile(r'\/download$|\/download_\S+')
# INavigationContributor methods
def get_active_navigation_item(self, req):
return 'download'
def get_navigation_items(self, req):
yield 'mainnav', 'download', Markup('<a href="/download">Get %s</a>'%(__appname__,))
def get_templates_dirs(self):
return [resource_filename(__name__, 'templates')]
def get_htdocs_dirs(self):
return [('dl', resource_filename(__name__, 'htdocs'))]
# IRequestHandler methods
def match_request(self, req):
return self.__class__.request_pat.match(req.path_info)
def process_request(self, req):
add_stylesheet(req, 'dl/css/download.css')
if req.path_info == '/download':
return self.top_level(req)
elif req.path_info == '/download_linux_binary_installer':
req.send(LINUX_INSTALLER.replace('%version', self.version_from_filename()), 'text/x-python')
else:
match = re.match(r'\/download_(\S+)', req.path_info)
if match:
os = match.group(1)
if os == 'windows':
return self.windows(req)
elif os == 'osx':
return self.osx(req)
elif os == 'linux':
return self.linux(req)
def top_level(self, req):
operating_systems = [
OS({'name' : 'windows', 'title' : 'Windows'}),
OS({'name' : 'osx', 'title' : 'OS X'}),
OS({'name' : 'linux', 'title' : 'Linux'}),
]
data = dict(title='Get ' + __appname__,
operating_systems=operating_systems, width=200,
font_size='xx-large', top_level=True)
return 'download.html', data, None
def version_from_filename(self):
try:
return open(DOWNLOAD_DIR+'/latest_version', 'rb').read().strip()
except:
return '0.0.0'
def windows(self, req):
version = self.version_from_filename()
file = '%s-%s.msi'%(__appname__, version,)
data = dict(version = version, name='windows',
installer_name='Windows installer',
title='Download %s for windows'%(__appname__),
compatibility=('%(a)s works on Windows XP, Vista and 7.'
'If you are upgrading from a version older than 0.6.17, '
'please uninstall %(a)s first.')%dict(a=__appname__,),
path=STATUS+'/win32', app=__appname__,
note=Markup(\
'''
<p>If you are updating from a version of calibre older than 0.6.12 on
<b>Windows XP</b>, first uninstall calibre, then delete the C:\Program
Files\calibre folder (the location may be different if you previously
installed calibre elsewhere) and only then install the new version of
calibre.</p><p><br /></p>
<p>If you are using the <b>SONY PRS-500</b> and %(appname)s does not detect your reader, read on:</p>
<blockquote>
<p>
If you are using 64-bit windows, you're out of luck.
</p>
<p>
There may be a conflict with the USB driver from SONY. In windows, you cannot install two drivers
for one device. In order to resolve the conflict:
<ol>
<li>Start Device Manager by clicking Start->Run, typing devmgmt.msc and pressing enter.</li>
<li>Uninstall all PRS500 related drivers. You will find them in two locations:
<ul>
<li>Under "Libusb-Win32"</li>
<li>Under "Universal Serial ..." (... depends on the version of windows)</li>
</ul>
You can uninstall a driver by right clicking on it and selecting uninstall.
</li>
<li>Once the drivers have been uninstalled, find the file prs500.inf (it will be in the
driver folder in the folder in which you installed %(appname)s. Right click on it and
select Install.</li>
</ol>
</p>
</blockquote>
'''%dict(appname=__appname__)))
return 'binary.html', data, None
def osx(self, req):
version = self.version_from_filename()
file = 'calibre-%s.dmg'%(version,)
data = dict(version = version, name='osx',
installer_name='OS X universal dmg',
title='Download %s for OS X'%(__appname__),
compatibility='%s works on OS X Tiger, Leopard, and Snow Leopard.'%(__appname__,),
path=STATUS+'/osx32', app=__appname__,
note=Markup(\
u'''
<ol>
<li>To install the command line tools, go to Preferences-&gt;Advanced</li>
<li>The app cannot be run from within the dmg. You must drag it to a folder on your filesystem (The Desktop, Applications, wherever).</li>
<li>In order for localization of the user interface in your language, select your language in the preferences (by pressing u\2318+P) and select your language.</li>
</ol>
'''))
return 'binary.html', data, None
def linux(self, req):
data = get_linux_data(version=self.version_from_filename())
return 'linux.html', data, None
LINUX_INSTALLER = textwrap.dedent(r'''
import sys, os, shutil, tarfile, subprocess, tempfile, urllib2, re, stat
MOBILEREAD='https://dev.mobileread.com/dist/kovid/calibre/'
#MOBILEREAD='http://calibre.kovidgoyal.net/downloads/'
class TerminalController:
BOL = '' #: Move the cursor to the beginning of the line
UP = '' #: Move the cursor up one line
DOWN = '' #: Move the cursor down one line
LEFT = '' #: Move the cursor left one char
RIGHT = '' #: Move the cursor right one char
# Deletion:
CLEAR_SCREEN = '' #: Clear the screen and move to home position
CLEAR_EOL = '' #: Clear to the end of the line.
CLEAR_BOL = '' #: Clear to the beginning of the line.
CLEAR_EOS = '' #: Clear to the end of the screen
# Output modes:
BOLD = '' #: Turn on bold mode
BLINK = '' #: Turn on blink mode
DIM = '' #: Turn on half-bright mode
REVERSE = '' #: Turn on reverse-video mode
NORMAL = '' #: Turn off all modes
# Cursor display:
HIDE_CURSOR = '' #: Make the cursor invisible
SHOW_CURSOR = '' #: Make the cursor visible
# Terminal size:
COLS = None #: Width of the terminal (None for unknown)
LINES = None #: Height of the terminal (None for unknown)
# Foreground colors:
BLACK = BLUE = GREEN = CYAN = RED = MAGENTA = YELLOW = WHITE = ''
# Background colors:
BG_BLACK = BG_BLUE = BG_GREEN = BG_CYAN = ''
BG_RED = BG_MAGENTA = BG_YELLOW = BG_WHITE = ''
_STRING_CAPABILITIES = """
BOL=cr UP=cuu1 DOWN=cud1 LEFT=cub1 RIGHT=cuf1
CLEAR_SCREEN=clear CLEAR_EOL=el CLEAR_BOL=el1 CLEAR_EOS=ed BOLD=bold
BLINK=blink DIM=dim REVERSE=rev UNDERLINE=smul NORMAL=sgr0
HIDE_CURSOR=cinvis SHOW_CURSOR=cnorm""".split()
_COLORS = """BLACK BLUE GREEN CYAN RED MAGENTA YELLOW WHITE""".split()
_ANSICOLORS = "BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE".split()
def __init__(self, term_stream=sys.stdout):
# Curses isn't available on all platforms
try: import curses
except: return
# If the stream isn't a tty, then assume it has no capabilities.
if not hasattr(term_stream, 'isatty') or not term_stream.isatty(): return
# Check the terminal type. If we fail, then assume that the
# terminal has no capabilities.
try: curses.setupterm()
except: return
# Look up numeric capabilities.
self.COLS = curses.tigetnum('cols')
self.LINES = curses.tigetnum('lines')
# Look up string capabilities.
for capability in self._STRING_CAPABILITIES:
(attrib, cap_name) = capability.split('=')
setattr(self, attrib, self._tigetstr(cap_name) or '')
# Colors
set_fg = self._tigetstr('setf')
if set_fg:
for i,color in zip(range(len(self._COLORS)), self._COLORS):
setattr(self, color, curses.tparm(set_fg, i) or '')
set_fg_ansi = self._tigetstr('setaf')
if set_fg_ansi:
for i,color in zip(range(len(self._ANSICOLORS)), self._ANSICOLORS):
setattr(self, color, curses.tparm(set_fg_ansi, i) or '')
set_bg = self._tigetstr('setb')
if set_bg:
for i,color in zip(range(len(self._COLORS)), self._COLORS):
setattr(self, 'BG_'+color, curses.tparm(set_bg, i) or '')
set_bg_ansi = self._tigetstr('setab')
if set_bg_ansi:
for i,color in zip(range(len(self._ANSICOLORS)), self._ANSICOLORS):
setattr(self, 'BG_'+color, curses.tparm(set_bg_ansi, i) or '')
def _tigetstr(self, cap_name):
# String capabilities can include "delays" of the form "$<2>".
# For any modern terminal, we should be able to just ignore
# these, so strip them out.
import curses
cap = curses.tigetstr(cap_name) or ''
return re.sub(r'\$<\d+>[/*]?', '', cap)
def render(self, template):
return re.sub(r'\$\$|\${\w+}', self._render_sub, template)
def _render_sub(self, match):
s = match.group()
if s == '$$': return s
else: return getattr(self, s[2:-1])
class ProgressBar:
BAR = '%3d%% ${GREEN}[${BOLD}%s%s${NORMAL}${GREEN}]${NORMAL}\n'
HEADER = '${BOLD}${CYAN}%s${NORMAL}\n\n'
def __init__(self, term, header):
self.term = term
if not (self.term.CLEAR_EOL and self.term.UP and self.term.BOL):
raise ValueError("Terminal isn't capable enough -- you "
"should use a simpler progress dispaly.")
self.width = self.term.COLS or 75
self.bar = term.render(self.BAR)
self.header = self.term.render(self.HEADER % header.center(self.width))
self.cleared = 1 #: true if we haven't drawn the bar yet.
def update(self, percent, message=''):
if isinstance(message, unicode):
message = message.encode('utf-8', 'ignore')
if self.cleared:
sys.stdout.write(self.header)
self.cleared = 0
n = int((self.width-10)*percent)
msg = message.center(self.width)
sys.stdout.write(
self.term.BOL + self.term.UP + self.term.CLEAR_EOL +
(self.bar % (100*percent, '='*n, '-'*(self.width-10-n))) +
self.term.CLEAR_EOL + msg)
sys.stdout.flush()
def clear(self):
if not self.cleared:
sys.stdout.write(self.term.BOL + self.term.CLEAR_EOL +
self.term.UP + self.term.CLEAR_EOL +
self.term.UP + self.term.CLEAR_EOL)
self.cleared = 1
def download_tarball():
try:
pb = ProgressBar(TerminalController(sys.stdout), 'Downloading calibre...')
except ValueError:
print 'Downloading calibre...'
pb = None
local = 'calibre-test.tar.bz2'
src = open(local) if os.access(local, os.R_OK) else urllib2.urlopen(MOBILEREAD+'calibre-%version-i686.tar.bz2')
if hasattr(src, 'info'):
size = int(src.info()['content-length'])
else:
src.seek(0, 2)
size = src.tell()
src.seek(0)
f = tempfile.NamedTemporaryFile()
while f.tell() < size:
f.write(src.read(4*1024))
percent = f.tell()/float(size)
if pb is not None:
pb.update(percent)
else:
print '%d%%, '%int(percent*100),
f.seek(0)
return f
def extract_tarball(tar, destdir):
print 'Extracting application files...'
if hasattr(tar, 'read'):
subprocess.check_call(['tar', 'xjf', tar.name, '-C', destdir])
else:
subprocess.check_call(['tar', 'xjf', tar, '-C', destdir])
def main():
defdir = '/opt/calibre'
destdir = raw_input('Enter the installation directory for calibre (Its contents will be deleted!)[%s]: '%defdir).strip()
if not destdir:
destdir = defdir
destdir = os.path.abspath(destdir)
if os.path.exists(destdir):
shutil.rmtree(destdir)
os.makedirs(destdir)
f = download_tarball()
print 'Extracting files to %s ...'%destdir
extract_tarball(f, destdir)
mh = os.path.join(destdir, 'calibre-mount-helper')
if os.geteuid() == 0:
os.chown(mh, 0, 0)
os.chmod(mh,
stat.S_ISUID|stat.S_ISGID|stat.S_IRUSR|stat.S_IWUSR|stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH)
else:
print 'WARNING: Not running as root. Cannot install mount helper.',
print 'Device automounting may not work.'
pi = os.path.join(destdir, 'calibre_postinstall')
subprocess.call(pi, shell=True)
return 0
''')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

View File

@ -1,40 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="layout.html" />
<head>
<title>$title</title>
</head>
<body>
<div id="ctxtnav" class="nav"></div>
<div id="content" class="binary">
<h1>$title</h1>
<p>$compatibility</p>
<p>
<a style="border: 0px" href="$path">
<img width="50" height="50" style="border:1px red solid" src="${href.chrome('/dl/images/%s_logo.png'%(name,))}" /> $installer_name
</a> (Version: $version <a href="/wiki/Changelog">Changelog</a>)
</p>
While you wait for the download to complete, please consider donating to support the development
of ${app}. If the above link does not work, the files are also available from
<a href="https://sourceforge.net/projects/calibre/">sourceforge</a>.
<div>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick" />
<input type="hidden" name="hosted_button_id" value="3029289" />
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Donate to support calibre development" />
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
</form>
<br />
</div>
<h2>Note</h2>
<div class="note">$note</div>
</div>
</body>
</html>

View File

@ -1,41 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="layout.html" />
<head>
<title>$title</title>
</head>
<body>
<div id="ctxtnav" class="nav"></div>
<p py:if="not top_level">If you have a 64bit computer, or an outdated operating system, the distribution
specific installation may not work for you. In that case, first try the binary installer.
If that also does not work, your only recourse is to try to install from source. In order
to do that you will have to install all the dependencies as well as the -dev package of PyQt4.
</p>
<div id="content" class="download">
<h1>$title</h1>
<center>
<table cellspacing="40px">
<tr>
<td style="text-align:center; font-size: ${font_size}" py:for="os in operating_systems">
<a href="download_${os['name']}" style="text-decoration:none; border:0;">
<img width="${width}" height="${width+20}" src="${href.chrome('/dl/images/%s_logo.png'%(os['img'],))}" />
</a>
<a href="download_${os['name']}" style="text-decoration:none; border:0">
<br />
${os['title']}
</a>
</td>
</tr>
</table>
<br />
</center>
</div>
</body>
</html>

View File

@ -1,165 +0,0 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="layout.html" />
<head>
<title>${title}</title>
<style type="text/css">
table tr th.distro_type {
font-family: monospace;
font-weight: bold;
font-size: larger;
vertical-align:middle;
text-align: center;
border-bottom: solid 1pt black;
}
.right {
margin-left:2em;
border-left: solid 1pt black;
}
table#install_info {
border-collapse: collapse;
border-width: 1pt;
border-style: solid;
table-layout: fixed;
width: 95%;
background: #F7F7F0 none repeat scroll 0 0;
}
table#dependencies {
border-collapse: collapse;
border-width: 0pt;
font-family:monospace;
}
.tdata {vertical-align: top;}
</style>
</head>
<body>
<div id="ctxtnav" class="nav"></div>
<div id="content" class="download">
<h1>${title}</h1>
<p>
The latest release of ${app} is ${version}. See the
<a href="/wiki/Changelog">Changelog</a> for a list of new features.
</p>
<p>
${app} is available in the software repositories of the following
supported linux distributions:
<table id="install_info">
<col width="150" /><col width="*" />
<tr>
<th class="left distro_type">Supported<br/>distributions</th>
<th class="right distro_type">Unsupported distributions</th>
</tr>
<tr class="tdata">
<td class="left" style="overflow-y:scroll">
<div py:for="distro in supported"
style="text-align:center;margin-top:2ex;">
<div>
<img width="64px" height="64px"
src="${distro.img}" alt="${distro.title}" />
</div>
${distro.title}
</div>
</td>
<td class="right">
<div style="margin-left:2em">
<h3>Binary install</h3>
<p>
${app} has a binary installer that has been
tested on a number of distributions on both
32-bit and 64-bit x86 machines. To install,
copy paste the following command into a terminal
and press Enter:
</p>
<pre class="wiki">
sudo python -c "import urllib2; exec urllib2.urlopen('http://status.calibre-ebook.com/linux_installer').read(); main()"
</pre>
<h4>Note</h4>
<ul>
<li>
When running the command line utilities,
they will segfault after completion. This can
be ignored.
</li>
<li>
You must have xdg-utils installed
on your system before running the installer.
</li>
</ul>
<h3>Source install</h3>
<p>
<ol>
<li>
Make sure your system has python &ge; ${dependencies[0][1]}
</li>
<li>
Install the various dependencies listed below
</li>
<li>
Run the following commands in a terminal:
</li>
</ol>
<pre class="wiki">
wget -O- http://status.calibre-ebook.com/dist/src | tar xvz
cd calibre*
sudo python setup.py install
</pre>
Note that if your distribution does not have a
correctly compiled libunrar.so, ${app} will not
support rar files. In order to compile ${app} successfully
poppler headers must include XPdf headers. That is, poppler
must have been configured with --enable-xpdf-headers. Also,
some distributions have buggy libpng headers. See
<a href="https://bugs.launchpad.net/ubuntu/+source/libpng/+bug/218409">here</a>
for example.
</p>
</div>
</td>
</tr>
</table>
</p>
<p>
While you wait for the download to complete, please consider
donating to support the development of ${app}.
</p>
<div>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick" />
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHbwYJKoZIhvcNAQcEoIIHYDCCB1wCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBn7jneGiSLVO8rcDrBtOUXL+HftY+CiC47hTntwICio6qqpLKezIryyG8tKcjY58Rcocur/kDwljEutIafVG7XRA7BJL9eZdHAZsZdX04f4dApzkWwR9w6GQhj0kwmO2ZNE878UcgGZBve4qQKWM8bf2pMY7vJwCNoo6ozpIi3VTELMAkGBSsOAwIaBQAwgewGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIBTALt7s1gJmAgcjEAwUMRYeIdIOE/yi0Y5vrVKBFxOUCbqTx/lu3Rk4EHsODZXLHT+BDA5WSWYO3AXfv2Lmlv1kJ7jWrjUVirYoQ5M4qdIhY9DtvPioIMMRoTJmYM9JKH8n2TWcjJ1XIzIuDP4zn8/Ya9hap3RHOrj2RBj89g7iSuFRsjoA0PYZgtWAKwR7g3LLpjRachn041JO55BEd3YWUgorNQeo3WEHgowLFfTWgFFePkm8OoWA1klWkYp4S07IhX5NaRc8OegkdshpkiIHGAKCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA4MDQzMDE1MzkyMlowIwYJKoZIhvcNAQkEMRYEFJSI9/zWx7TUlKPY7kLjnvzB1h6sMA0GCSqGSIb3DQEBAQUABIGAikZNCmQdkWPdfmYnGqOb1f65ViaK0zjHf50azvsigWQLlhHqJ3PgB+jEJH3JU9Pm9M4wgiK23Bg2oIGuIsAfQkYO9mw/HjtDtOQHqXyZZbrM32YGtNWUD4ynakLYnaz7OnPl40aTPD4iDApgsGcj1oMdmw7KA2E9J0l2J9iJXF4=-----END PKCS7-----" />
</form>
</div>
<hr/>
<h3>Note</h3>
<p>
If your kernel is compiled with CONFIG_SYSFS_DEPRECATED device detection may not work.
</p>
<hr/>
<h3>Dependencies</h3>
${app} has the following dependencies (the listed version is the minimum version)
<br/><br/>
<table id="dependencies">
<tr>
<th class="distro_type" style="margin-right:2em">Package</th>
<th class="distro_type">Version</th>
</tr>
<tr class="dependency" py:for="dep in dependencies">
<td style="margin-right:2em">${dep[0]}</td><td>${dep[1]}</td>
</tr>
</table>
<h3>Current calibre versions available in various distros</h3>
<div id="osw_calibre"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script src="http://static.oswatershed.org/js/package_badge.js" type="text/javascript"></script>
<script>$(document).ready(function(){ package_badge("calibre", "#osw_calibre"); });</script>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-26 20:00+0000\n" "POT-Creation-Date: 2009-11-30 20:45+0000\n"
"PO-Revision-Date: 2009-11-26 00:09+0000\n" "PO-Revision-Date: 2009-11-30 02:37+0000\n"
"Last-Translator: Jon <jon@linde.net>\n" "Last-Translator: Jon <jon@linde.net>\n"
"Language-Team: Danish <da@li.org>\n" "Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-11-27 04:47+0000\n" "X-Launchpad-Export-Date: 2009-12-01 04:38+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -68,9 +68,9 @@ msgstr "Gør absolut ingenting"
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /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/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:889
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:954
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /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/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -132,7 +132,7 @@ msgstr "Gør absolut ingenting"
#: /home/kovid/work/calibre/src/calibre/library/server.py:649 #: /home/kovid/work/calibre/src/calibre/library/server.py:649
#: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:721
#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/library/server.py:768
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
@ -444,8 +444,8 @@ msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 #: /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:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
msgid "Transferring books to device..." msgid "Transferring books to device..."
@ -467,7 +467,7 @@ msgstr "Kommuniker med ESlick eBogs læser"
msgid "Communicate with the IRex Iliad eBook reader." msgid "Communicate with the IRex Iliad eBook reader."
msgstr "Kommuniker med IRex Iliad e-bogslæseren." msgstr "Kommuniker med IRex Iliad e-bogslæseren."
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:21
msgid "Device Interface" msgid "Device Interface"
msgstr "Enhedsgrænseflade" msgstr "Enhedsgrænseflade"
@ -508,10 +508,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "Kommuniker med Sony PRS-500 e-bogslæseren." msgstr "Kommuniker med Sony PRS-500 e-bogslæseren."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 #: /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:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -522,22 +522,22 @@ msgid "Getting list of books on device..."
msgstr "Henter liste over bøger på enheden..." msgstr "Henter liste over bøger på enheden..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505 eBook reader." msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr "Kommuniker med Sony PRS-300/505 e-bogslæseren." msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18
msgid "Kovid Goyal and John Schember" msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal og John Schember" msgstr "Kovid Goyal og John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
msgid "Removing books from device..." msgid "Removing books from device..."
msgstr "Fjerner bøger fra enhed..." msgstr "Fjerner bøger fra enhed..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Sending metadata to device..." msgid "Sending metadata to device..."
msgstr "Sender metadata til enhed..." msgstr "Sender metadata til enhed..."
@ -1805,7 +1805,7 @@ msgid ""
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317
msgid "Cover" msgid "Cover"
msgstr "" msgstr ""
@ -1837,70 +1837,70 @@ msgstr ""
msgid "All articles" msgid "All articles"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318
msgid "Title Page" msgid "Title Page"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents" msgid "Table of Contents"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320
msgid "Index" msgid "Index"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
msgid "Glossary" msgid "Glossary"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
msgid "Acknowledgements" msgid "Acknowledgements"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Bibliography" msgid "Bibliography"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Colophon" msgid "Colophon"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Copyright" msgid "Copyright"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Dedication" msgid "Dedication"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Epigraph" msgid "Epigraph"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Foreword" msgid "Foreword"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "List of Illustrations" msgid "List of Illustrations"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "List of Tables" msgid "List of Tables"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Preface" msgid "Preface"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Main Text" msgid "Main Text"
msgstr "" msgstr ""
@ -7229,6 +7229,14 @@ msgstr ""
msgid "English (IND)" msgid "English (IND)"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
msgid "Dutch (NL)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
msgid "Dutch (BE)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53
msgid "URL must have the scheme sftp" msgid "URL must have the scheme sftp"
msgstr "" msgstr ""
@ -7285,75 +7293,75 @@ msgstr ""
msgid "Unknown News Source" msgid "Unknown News Source"
msgstr "Ukendt nyhedskilde" msgstr "Ukendt nyhedskilde"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:510
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:593
msgid "Download finished" msgid "Download finished"
msgstr "Download færdig" msgstr "Download færdig"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595
msgid "Failed to download the following articles:" msgid "Failed to download the following articles:"
msgstr "Kunne ikke downloade følgende artikler:" msgstr "Kunne ikke downloade følgende artikler:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:601
msgid "Failed to download parts of the following articles:" msgid "Failed to download parts of the following articles:"
msgstr "Kunne ikke downloade dele af følgende artikler:" msgstr "Kunne ikke downloade dele af følgende artikler:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:603
msgid " from " msgid " from "
msgstr " fra " msgstr " fra "
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605
msgid "\tFailed links:" msgid "\tFailed links:"
msgstr "\tMislykkede links:" msgstr "\tMislykkede links:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:686
msgid "Could not fetch article. Run with -vv to see the reason" msgid "Could not fetch article. Run with -vv to see the reason"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
msgid "Fetching feeds..." msgid "Fetching feeds..."
msgstr "Henter feeds..." msgstr "Henter feeds..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
msgid "Got feeds from index page" msgid "Got feeds from index page"
msgstr "Fik feeds fra indekssiden" msgstr "Fik feeds fra indekssiden"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718
msgid "Trying to download cover..." msgid "Trying to download cover..."
msgstr "Prøver at downloade omslag..." msgstr "Prøver at downloade omslag..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:776
msgid "Starting download [%d thread(s)]..." msgid "Starting download [%d thread(s)]..."
msgstr "Starter download [%d tråd(e)]..." msgstr "Starter download [%d tråd(e)]..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:792
msgid "Feeds downloaded to %s" msgid "Feeds downloaded to %s"
msgstr "Feeds er hentet til %s" msgstr "Feeds er hentet til %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
msgid "Could not download cover: %s" msgid "Could not download cover: %s"
msgstr "Kunne ikke hente omslaget: %s" msgstr "Kunne ikke hente omslaget: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809
msgid "Downloading cover from %s" msgid "Downloading cover from %s"
msgstr "Downloader omslag fra %s" msgstr "Downloader omslag fra %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935
msgid "Untitled Article" msgid "Untitled Article"
msgstr "Unavngiven artikel" msgstr "Unavngiven artikel"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1006
msgid "Article downloaded: %s" msgid "Article downloaded: %s"
msgstr "Artikel hentet: %s" msgstr "Artikel hentet: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017
msgid "Article download failed: %s" msgid "Article download failed: %s"
msgstr "Hentning af artikel mislykkedes: %s" msgstr "Hentning af artikel mislykkedes: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1034
msgid "Fetching feed" msgid "Fetching feed"
msgstr "Henter feed" msgstr "Henter feed"
@ -8618,3 +8626,6 @@ msgstr "Vis detaljeret output information. Nyttig til fejlfinding"
#~ msgid "Hungarian" #~ msgid "Hungarian"
#~ msgstr "Ungarsk" #~ msgstr "Ungarsk"
#~ msgid "Communicate with the Sony PRS-300/505 eBook reader."
#~ msgstr "Kommuniker med Sony PRS-300/505 e-bogslæseren."

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: de\n" "Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-26 20:00+0000\n" "POT-Creation-Date: 2009-11-30 20:45+0000\n"
"PO-Revision-Date: 2009-11-26 21:31+0000\n" "PO-Revision-Date: 2009-11-30 22:02+0000\n"
"Last-Translator: S. Dorscht <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n" "Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-11-27 04:47+0000\n" "X-Launchpad-Export-Date: 2009-12-01 04:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -69,9 +69,9 @@ msgstr "Macht absolut gar nichts"
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /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/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:889
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:954
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /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/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -133,7 +133,7 @@ msgstr "Macht absolut gar nichts"
#: /home/kovid/work/calibre/src/calibre/library/server.py:649 #: /home/kovid/work/calibre/src/calibre/library/server.py:649
#: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:721
#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/library/server.py:768
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
@ -449,8 +449,8 @@ msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 #: /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:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
msgid "Transferring books to device..." msgid "Transferring books to device..."
@ -472,7 +472,7 @@ msgstr "Kommunikation mit dem ESlick eBook Reader."
msgid "Communicate with the IRex Iliad eBook reader." msgid "Communicate with the IRex Iliad eBook reader."
msgstr "Kommunikation mit dem IRex Iliad eBook Reader." msgstr "Kommunikation mit dem IRex Iliad eBook Reader."
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:21
msgid "Device Interface" msgid "Device Interface"
msgstr "Geräte-Schnittstellen" msgstr "Geräte-Schnittstellen"
@ -513,10 +513,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "Kommunikation mit dem 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/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 #: /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:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -527,22 +527,22 @@ msgid "Getting list of books on device..."
msgstr "Die Liste der Bücher auf dem Gerät beziehen ..." msgstr "Die Liste der Bücher auf dem Gerät beziehen ..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505 eBook reader." msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr "Kommunikation mit dem Sony PRS-300/505 eBook Reader." msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18
msgid "Kovid Goyal and John Schember" msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal und John Schember" msgstr "Kovid Goyal und John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
msgid "Removing books from device..." msgid "Removing books from device..."
msgstr "Bücher vom Gerät entfernen ..." msgstr "Bücher vom Gerät entfernen ..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Sending metadata to device..." msgid "Sending metadata to device..."
msgstr "Metadaten ans Gerät senden ..." msgstr "Metadaten ans Gerät senden ..."
@ -785,21 +785,21 @@ msgstr ""
"input_file ist die Eingabe und output_file ist die Ausgabe. Beide müssen als " "input_file ist die Eingabe und output_file ist die Ausgabe. Beide müssen als "
"die ersten zwei Argumente des Befehls angegeben werden.\n" "die ersten zwei Argumente des Befehls angegeben werden.\n"
"\n" "\n"
"Das Ausgabe eBook Format wird aus der Dateiendung von output_file erraten. " "Das Ausgabe-eBook-Format wird aus der Dateiendung von output_file erraten. "
"output_file kann auch das spezielle Format .EXT sein, wobei EXT die " "output_file kann auch das spezielle Format .EXT sein, wobei EXT die "
"Dateiendung der Ausgabedatei ist. In diesem Fall wird der Name der " "Dateiendung der Ausgabe-Datei ist. In diesem Fall wird der Name der Ausgabe-"
"Ausgabedatei von der Eingabedatei abgeleitet. Beachten Sie, dass die " "Datei von der Eingabe-Datei abgeleitet. Beachten Sie, dass die Dateinamen "
"Dateinamen nicht mit einem Anführungszeichen beginnen dürfen. Schlussendlich " "nicht mit einem Anführungszeichen beginnen dürfen. Schlussendlich wird eine "
"wird eine Ausgabedatei ohne Dateiendung als ein Verzeichnis behandelt, in " "Ausgabe-Datei ohne Dateiendung als ein Verzeichnis behandelt, in das ein "
"das ein \"open ebook\" (OEB) bestehend aus HTML Dateien geschrieben wird. " "\"open ebook\" (OEB) bestehend aus HTML-Dateien geschrieben wird. Diese "
"Diese Dateien sind die Dateien, die normalerweise an das Ausgabe Plugin " "Dateien sind die Dateien, die normalerweise an das Ausgabe-Plugin "
"weitergereicht werden.\n" "weitergereicht werden.\n"
"\n" "\n"
"Nach der Angabe von Eingabe- und Ausgabedatei kann die Konvertierung durch " "Nach der Angabe von Eingabe- und Ausgabe-Datei kann die Konvertierung durch "
"die Angabe von verschiedenen Optionen angepasst werden. Die verfügbaren " "die Angabe von verschiedenen Optionen angepasst werden. Die verfügbaren "
"Optionen hängen ab von den Eingabe- und Ausgabedateitypen. Für eine Hilfe " "Optionen hängen ab von den Eingabe- und Ausgabe-Dateitypen. Für eine Hilfe "
"dazu geben Sie die Eingabe- und Ausgabedateien an und verwenden Sie dann die " "dazu geben Sie die Eingabe- und Ausgabe-Dateien an und verwenden Sie dann "
"Otion -h.\n" "die Option -h.\n"
"\n" "\n"
"Eine vollständige Dokumentation des Konvertierungssystems finden Sie unter\n" "Eine vollständige Dokumentation des Konvertierungssystems finden Sie unter\n"
@ -888,9 +888,9 @@ msgid ""
"cases, an output profile is required to produce documents that will work on " "cases, an output profile is required to produce documents that will work on "
"a device. For example EPUB on the SONY reader. Choices are:" "a device. For example EPUB on the SONY reader. Choices are:"
msgstr "" msgstr ""
"Geben Sie das Ausgabe Profil an. Das Ausgabe Profil schreibt der " "Geben Sie das Ausgabe-Profil an. Das Ausgabe-Profil schreibt der "
"Konvertierung vor, wie sie das erstellte Dokument für das angegebene Gerät " "Konvertierung vor, wie sie das erstellte Dokument für das angegebene Gerät "
"optimieren kann. In bestimmten Fällen ist ein Ausgabe Profil zur Erstellung " "optimieren kann. In bestimmten Fällen ist ein Ausgabe-Profil zur Erstellung "
"einer auf dem Gerät funktionierenden Datei nötig. Zum Beispiel EPUB auf dem " "einer auf dem Gerät funktionierenden Datei nötig. Zum Beispiel EPUB auf dem "
"SONY Reader. Wählbar ist:" "SONY Reader. Wählbar ist:"
@ -904,7 +904,7 @@ msgstr ""
"Die Bezugsschriftgröße in Punkt. Alle Schriftgrößen im erstellen eBook " "Die Bezugsschriftgröße in Punkt. Alle Schriftgrößen im erstellen eBook "
"werden basieren auf dieser Größe skaliert. Mit einer größeren Schriftgröße " "werden basieren auf dieser Größe skaliert. Mit einer größeren Schriftgröße "
"erhalten Sie eine größere Schrift in der Ausgabe und umgekehrt. Laut " "erhalten Sie eine größere Schrift in der Ausgabe und umgekehrt. Laut "
"Voreinstellung basiert die Bezugsschriftgröße auf dem gewählten Ausgabe " "Voreinstellung basiert die Bezugsschriftgröße auf dem gewählten Ausgabe-"
"Profil." "Profil."
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:139
@ -920,7 +920,7 @@ msgstr ""
"für die Größen xx-small bis xx-large mit der letzten Größe für riesige " "für die Größen xx-small bis xx-large mit der letzten Größe für riesige "
"Schriften. Der Schriftskalierungs-Algorithmus verwendet diese Größen für die " "Schriften. Der Schriftskalierungs-Algorithmus verwendet diese Größen für die "
"intelligente Skalierung von Schriften. Voreinstellung ist die Verwendung " "intelligente Skalierung von Schriften. Voreinstellung ist die Verwendung "
"einer Zuordnung auf der Grundlage des gewählten Ausgabe Profils." "einer Zuordnung auf der Grundlage des gewählten Ausgabe-Profils."
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:151
msgid "Disable all rescaling of font sizes." msgid "Disable all rescaling of font sizes."
@ -1102,7 +1102,7 @@ msgid ""
msgstr "" msgstr ""
"Blocksatz in der Ausgabe nicht erzwingen. Ob der Text dann im Blocksatz " "Blocksatz in der Ausgabe nicht erzwingen. Ob der Text dann im Blocksatz "
"angezeigt wird oder nicht, hängt davon ab, ob das eBook-Format oder der " "angezeigt wird oder nicht, hängt davon ab, ob das eBook-Format oder der "
"Reader-Blocksatz unterstützen." "Reader Blocksatz unterstützen."
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:308 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:308
msgid "" msgid ""
@ -1319,12 +1319,12 @@ msgid ""
"if your source file contains a very large number of page breaks, you should " "if your source file contains a very large number of page breaks, you should "
"turn off splitting on page breaks." "turn off splitting on page breaks."
msgstr "" msgstr ""
"Das Aufteilen bei Seitenwechseln ausschalten. Normalerweise werden " "Das Aufteilen bei Seitenwechseln ausschalten. Normalerweise werden Eingabe-"
"eingehende Dateien automatisch bei jedem Seitenwechsel in zwei Dateien " "Dateien automatisch bei jedem Seitenwechsel in zwei Dateien aufgeteilt. "
"aufgeteilt. Damit erhält man in der Ausgabe ein eBook, das schneller mit " "Damit erhält man in der Ausgabe ein eBook, das schneller mit weniger "
"weniger Resourcen analysiert werden kann. Das Aufteilen ist jedoch langsam " "Resourcen analysiert werden kann. Das Aufteilen ist jedoch langsam und falls "
"und falls die Ausgangsdatei sehr viele Seitenwechsel enthält, sollten Sie " "die Ausgangsdatei sehr viele Seitenwechsel enthält, sollten Sie das "
"das Aufteilen bei Seitenwechseln ausschalten." "Aufteilen bei Seitenwechseln ausschalten."
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:74 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:74
msgid "" msgid ""
@ -1343,7 +1343,7 @@ msgid ""
"default cover is generated with the title, authors, etc. This option " "default cover is generated with the title, authors, etc. This option "
"disables the generation of this cover." "disables the generation of this cover."
msgstr "" msgstr ""
"Normalerweise wird, falls die Eingabe Datei kein Umschlagbild hat und Sie " "Normalerweise wird, falls die Eingabe-Datei kein Umschlagbild hat und Sie "
"keines angeben, ein voreingestelltes Umschlagbild mit Titel, Autoren, usw. " "keines angeben, ein voreingestelltes Umschlagbild mit Titel, Autoren, usw. "
"erstellt. Diese Einstellung schaltet die Erstellung dieses Umschlagbildes " "erstellt. Diese Einstellung schaltet die Erstellung dieses Umschlagbildes "
"aus." "aus."
@ -1392,7 +1392,7 @@ msgid ""
"can result in various nasty side effects in the rest of of the conversion " "can result in various nasty side effects in the rest of of the conversion "
"pipeline." "pipeline."
msgstr "" msgstr ""
"Normalerweise ordnet dieses Eingabe Plugin alle Eingabe Dateien in eine " "Normalerweise ordnet dieses Eingabe-Plugin alle Eingabe-Dateien in eine "
"standardisierte Ordnerhierarchie um. Verwenden Sie diese Einstellung nur, " "standardisierte Ordnerhierarchie um. Verwenden Sie diese Einstellung nur, "
"wenn Sie wissen, was Sie tun, denn es kann verschiedene nervige " "wenn Sie wissen, was Sie tun, denn es kann verschiedene nervige "
"Nebenwirkungen beim Rest des Konvertierungsprozesses zur Folge haben." "Nebenwirkungen beim Rest des Konvertierungsprozesses zur Folge haben."
@ -1508,7 +1508,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137
msgid "Output LRS file" msgid "Output LRS file"
msgstr "Ausgabe LRS Datei" msgstr "Ausgabe-LRS-Datei"
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139
msgid "Do not save embedded image and font files to disk" msgid "Do not save embedded image and font files to disk"
@ -2011,7 +2011,7 @@ msgstr ""
"abrufen\n" "abrufen\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317
msgid "Cover" msgid "Cover"
msgstr "Umschlagbild" msgstr "Umschlagbild"
@ -2044,70 +2044,70 @@ msgstr "Komprimierung der Datei Inhalte ausschalten."
msgid "All articles" msgid "All articles"
msgstr "Alle Artikel" msgstr "Alle Artikel"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318
msgid "Title Page" msgid "Title Page"
msgstr "Titelseite" msgstr "Titelseite"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents" msgid "Table of Contents"
msgstr "Inhaltsverzeichnis" msgstr "Inhaltsverzeichnis"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320
msgid "Index" msgid "Index"
msgstr "Index" msgstr "Index"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
msgid "Glossary" msgid "Glossary"
msgstr "Glossar" msgstr "Glossar"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
msgid "Acknowledgements" msgid "Acknowledgements"
msgstr "Danksagung" msgstr "Danksagung"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Bibliography" msgid "Bibliography"
msgstr "Literaturverzeichnis" msgstr "Literaturverzeichnis"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Colophon" msgid "Colophon"
msgstr "Schlussschrift" msgstr "Schlussschrift"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Copyright" msgid "Copyright"
msgstr "Copyright" msgstr "Copyright"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Dedication" msgid "Dedication"
msgstr "Widmung" msgstr "Widmung"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Epigraph" msgid "Epigraph"
msgstr "Epigraph" msgstr "Epigraph"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Foreword" msgid "Foreword"
msgstr "Vorwort" msgstr "Vorwort"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "List of Illustrations" msgid "List of Illustrations"
msgstr "Abbildungsverzeichnis" msgstr "Abbildungsverzeichnis"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "List of Tables" msgid "List of Tables"
msgstr "Tabellenverzeichnis" msgstr "Tabellenverzeichnis"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Notes" msgid "Notes"
msgstr "Anmerkungen" msgstr "Anmerkungen"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Preface" msgid "Preface"
msgstr "Vorwort" msgstr "Vorwort"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Main Text" msgid "Main Text"
msgstr "Haupttext" msgstr "Haupttext"
@ -2122,11 +2122,12 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:62
msgid "Output file. Default is derived from input filename." msgid "Output file. Default is derived from input filename."
msgstr "Ausgabedatei. Voreinstellung stammt aus dem Namen der Eingabedatei." msgstr ""
"Ausgabe-Datei. Die Voreinstellung stammt aus dem Namen der Eingabe-Datei."
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:64
msgid "Produce more human-readable XML output." msgid "Produce more human-readable XML output."
msgstr "Erstelle besser menschlich-lesbare XML Ausgabe." msgstr "Erstelle besser menschlich lesbare XML-Ausgabe."
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/factory.py:66
msgid "Useful for debugging." msgid "Useful for debugging."
@ -2217,7 +2218,7 @@ msgid ""
"Specify the character encoding of the output document. The default is " "Specify the character encoding of the output document. The default is "
"cp1252. Note: This option is not honored by all formats." "cp1252. Note: This option is not honored by all formats."
msgstr "" msgstr ""
"Geben Sie die Zeichenkodierung für das Ausgabe Dokument an. Die " "Geben Sie die Zeichenkodierung für das Ausgabe-Dokument an. Die "
"Voreinstellung ist cp1252. Achtung: Diese Einstellung wird nicht von allen " "Voreinstellung ist cp1252. Achtung: Diese Einstellung wird nicht von allen "
"Formaten übernommen." "Formaten übernommen."
@ -2276,7 +2277,7 @@ msgstr ""
msgid "" msgid ""
"Path to output file. By default a file is created in the current directory." "Path to output file. By default a file is created in the current directory."
msgstr "" msgstr ""
"Pfad zur Ausgabedatei. Die Datei wird im aktuellen Verzeichnis erstellt " "Pfad zur Ausgabe-Datei. Die Datei wird im aktuellen Verzeichnis erstellt "
"(Voreinstellung)." "(Voreinstellung)."
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:41 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:41
@ -2473,8 +2474,8 @@ msgid ""
"The size of the paper. This size will be overridden when an output profile " "The size of the paper. This size will be overridden when an output profile "
"is used. Default is letter. Choices are %s" "is used. Default is letter. Choices are %s"
msgstr "" msgstr ""
"Größe der Seite. Diese Größe wird überschrieben, wenn ein Ausgabe Profil " "Größe der Seite. Diese Größe wird überschrieben, wenn ein Ausgabe-Profil "
"verwendet wird. Voreinstellung ist letter. Wählbar ist %s" "verwendet wird. Voreinstellung ist Letter. Wählbar ist %s"
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40
msgid "" msgid ""
@ -2499,7 +2500,7 @@ msgstr ""
msgid "" msgid ""
"Specify the character encoding of the output document. The default is cp1252." "Specify the character encoding of the output document. The default is cp1252."
msgstr "" msgstr ""
"Geben Sie die Zeichenkodierung des Ausgabe Dokuments an. Voreinstellung ist " "Geben Sie die Zeichenkodierung des Ausgabe-Dokuments an. Voreinstellung ist "
"cp1252." "cp1252."
#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:183
@ -2514,7 +2515,7 @@ msgstr ""
msgid "" msgid ""
"Specify the character encoding of the output document. The default is utf-8." "Specify the character encoding of the output document. The default is utf-8."
msgstr "" msgstr ""
"Geben Sie die Zeichenkodierung für das Ausgabe Dokument an. Die " "Geben Sie die Zeichenkodierung für das Ausgabe-Dokument an. Die "
"Voreinstellung ist utf-8." "Voreinstellung ist utf-8."
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27
@ -2532,7 +2533,7 @@ msgid ""
"Run the text input through the markdown pre-processor. To learn more about " "Run the text input through the markdown pre-processor. To learn more about "
"markdown see" "markdown see"
msgstr "" msgstr ""
"Texteingabe durch die Markdown Vorverarbeitung laufen lassen. Mehr über " "Texteingabe durch die Markdown-Vorverarbeitung laufen lassen. Mehr über "
"Markdown erfahren Sie unter" "Markdown erfahren Sie unter"
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24
@ -2551,7 +2552,7 @@ msgid ""
"Specify the character encoding of the output document. The default is utf-8. " "Specify the character encoding of the output document. The default is utf-8. "
"Note: This option is not honored by all formats." "Note: This option is not honored by all formats."
msgstr "" msgstr ""
"Geben Sie die Zeichenkodierung des Ausgabedokuments an. Die Voreinstellung " "Geben Sie die Zeichenkodierung des Ausgabe-Dokuments an. Die Voreinstellung "
"ist utf-8. Achtung: Diese Einstellung wird nicht von allen Formaten " "ist utf-8. Achtung: Diese Einstellung wird nicht von allen Formaten "
"übernommen." "übernommen."
@ -2793,11 +2794,11 @@ msgstr "Auf einmal konvertieren"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185
msgid "Options specific to the output format." msgid "Options specific to the output format."
msgstr "Einstellungen für das Ausgabeformat." msgstr "Einstellungen für das Ausgabe-Format."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15
msgid "Comic Input" msgid "Comic Input"
msgstr "Comic Eingabe" msgstr "Comic-Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
@ -2908,7 +2909,7 @@ msgstr "&Comic Verarbeitung ausschalten"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111
msgid "&Output format:" msgid "&Output format:"
msgstr "Ausgabef&ormat:" msgstr "Ausgabe-F&ormat:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19
msgid "Debug" msgid "Debug"
@ -2991,7 +2992,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15
msgid "EPUB Output" msgid "EPUB Output"
msgstr "EPUB Ausgabe" msgstr "EPUB-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
@ -3022,7 +3023,7 @@ msgstr "Kein voreingestelltes &Cover"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12
msgid "FB2 Input" msgid "FB2 Input"
msgstr "FB2 Eingabe" msgstr "FB2-Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29
msgid "Do not insert a &Table of Contents at the beginning of the book." msgid "Do not insert a &Table of Contents at the beginning of the book."
@ -3030,7 +3031,7 @@ msgstr "Kein Inhal&tsverzeichnis am Anfang des Buches einfügen."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14
msgid "FB2 Output" msgid "FB2 Output"
msgstr "FB2 Ausgabe" msgstr "FB2-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37
@ -3060,15 +3061,15 @@ msgid ""
"works.</p>" "works.</p>"
msgstr "" msgstr ""
"<p>Dieser Assistent hilft, die richtige Schriftgröße für Ihre Bedürfnisse zu " "<p>Dieser Assistent hilft, die richtige Schriftgröße für Ihre Bedürfnisse zu "
"wählen. Geben Sie die Basis-Schriftgröße des Eingabe Dokuments an und geben " "wählen. Geben Sie die Basis-Schriftgröße des Eingabe-Dokuments an und geben "
"eine Eingabe Schriftgröße an. Der Assistent zeigt durch den " "eine Eingabe-Schriftgröße an. Der Assistent zeigt durch den "
"Schriftskalierungs-Algorithmus an, auf welche Schriftgröße sie abgebildet " "Schriftskalierungs-Algorithmus an, auf welche Schriftgröße sie abgebildet "
"wird. Sie können den Algorithmus anpassen, indem Sie die Ausgabe Basis-" "wird. Sie können den Algorithmus anpassen, indem Sie die Ausgabe-Basis-"
"Schriftgröße und den Schriftschlüssel unten verändern. Wenn die Werte für " "Schriftgröße und den Schriftschlüssel unten verändern. Wenn die Werte für "
"Sie passend sind, klicken Sie auf OK.</p>\n" "Sie passend sind, klicken Sie auf OK.</p>\n"
"<p>Voreingestellt wird Calibre, falls die Ausgabe Basis-Schriftgröße gleich " "<p>Voreingestellt wird Calibre, falls die Ausgabe-Basis-Schriftgröße gleich "
"null ist und/oder keine Schriftgrößenschlüssel angegeben wird, die Werte des " "null ist und/oder keine Schriftgrößenschlüssel angegeben wird, die Werte des "
"aktuellen Ausgabe Profils verwenden. </p>\n" "aktuellen Ausgabe-Profils verwenden. </p>\n"
"<p>Sehen Sie sich das englischsprachige <a " "<p>Sehen Sie sich das englischsprachige <a "
"href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-" "href=\"http://calibre.kovidgoyal.net/user_manual/conversion.html#font-size-"
"rescaling\">Benutzerhandbuch</a> für eine Diskussion, wie die Schriftgrößen-" "rescaling\">Benutzerhandbuch</a> für eine Diskussion, wie die Schriftgrößen-"
@ -3076,7 +3077,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103
msgid "&Output document" msgid "&Output document"
msgstr "Ausgabe D&okument" msgstr "Ausgabe-D&okument"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104
#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109
@ -3151,7 +3152,7 @@ msgstr "Zeilen&höhe:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119
msgid "Input character &encoding:" msgid "Input character &encoding:"
msgstr "Eingabe Z&eichenkodierung:" msgstr "Eingabe-Z&eichenkodierung:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120
msgid "Remove &spacing between paragraphs" msgid "Remove &spacing between paragraphs"
@ -3187,7 +3188,7 @@ msgstr "Extra &CSS"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19
msgid "LRF Output" msgid "LRF Output"
msgstr "LRF Ausgabe" msgstr "LRF-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116
msgid "Enable &autorotation of wide images" msgid "Enable &autorotation of wide images"
@ -3248,7 +3249,7 @@ msgid ""
"Set the metadata. The output file will contain as much of this metadata as " "Set the metadata. The output file will contain as much of this metadata as "
"possible." "possible."
msgstr "" msgstr ""
"Metadaten eingeben. Die Ausgabedatei wird möglichst viel dieser Metadaten " "Metadaten eingeben. Die Ausgabe-Datei wird möglichst viel dieser Metadaten "
"enthalten." "enthalten."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:152 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:152
@ -3373,7 +3374,7 @@ msgstr "Buch "
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:15
msgid "MOBI Output" msgid "MOBI Output"
msgstr "MOBI Ausgabe" msgstr "MOBI-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:45
msgid "&Title for Table of Contents:" msgid "&Title for Table of Contents:"
@ -3401,7 +3402,7 @@ msgstr "Seiteneinrichtung"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:111
msgid "&Output profile:" msgid "&Output profile:"
msgstr "Ausgabe Pr&ofil:" msgstr "Ausgabe-Pr&ofil:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112 #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:112
msgid "Profile description" msgid "Profile description"
@ -3433,7 +3434,7 @@ msgstr "&Unten:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12
msgid "PDB Input" msgid "PDB Input"
msgstr "PDB Eingabe" msgstr "PDB-Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:39
@ -3455,7 +3456,7 @@ msgstr "&Format:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12
msgid "PDF Input" msgid "PDF Input"
msgstr "PDF Eingabe" msgstr "PDF-Eingabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39
msgid "Line &Un-Wrapping Factor:" msgid "Line &Un-Wrapping Factor:"
@ -3467,7 +3468,7 @@ msgstr "Keine B&ilder"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17
msgid "PDF Output" msgid "PDF Output"
msgstr "PDF Ausgabe" msgstr "PDF-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40
msgid "&Paper Size:" msgid "&Paper Size:"
@ -3479,7 +3480,7 @@ msgstr "&Orientierung:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14
msgid "RB Output" msgid "RB Output"
msgstr "RB Ausgabe" msgstr "RB-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:1411 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1411
@ -3522,7 +3523,7 @@ msgstr "Konvertieren"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196
msgid "Options specific to the input format." msgid "Options specific to the input format."
msgstr "Einstellungen für das Eingabeformat." msgstr "Einstellungen für das Eingabe-Format."
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:61
@ -3606,7 +3607,7 @@ msgstr "&Metadaten als erste Seite des Buchs einfügen"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63
msgid "&Preprocess input file to possibly improve structure detection" msgid "&Preprocess input file to possibly improve structure detection"
msgstr "" msgstr ""
"Eingabedatei zur möglichen Verbesserung der Struktur Erkennung " "Eingabe-Datei zur möglichen Verbesserung der Struktur-Erkennung "
"vorverar&beiten" "vorverar&beiten"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64
@ -3683,7 +3684,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16
msgid "TXT Output" msgid "TXT Output"
msgstr "TXT Ausgabe" msgstr "TXT-Ausgabe"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:52
msgid "&Line ending style:" msgid "&Line ending style:"
@ -4439,7 +4440,7 @@ msgstr "Auftrags&priorität:"
#: /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:507
msgid "Preferred &output format:" msgid "Preferred &output format:"
msgstr "Bev&orzugtes Ausgabeformat:" msgstr "Bev&orzugtes Ausgabe-Format:"
#: /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:508
msgid "Preferred &input format order:" msgid "Preferred &input format order:"
@ -7396,7 +7397,7 @@ msgstr ""
"eine durch Kommata getrennte Liste von Feldern sein.\n" "eine durch Kommata getrennte Liste von Feldern sein.\n"
"Verfügbare Felder: %s\n" "Verfügbare Felder: %s\n"
"Voreinstellung: %%default. Das Feld \"all\" kann für die Auswahl aller " "Voreinstellung: %%default. Das Feld \"all\" kann für die Auswahl aller "
"Felder verwendet werden. Funktioniert nur mit dem Ausgabeformat Text." "Felder verwendet werden. Funktioniert nur mit dem Ausgabe-Format Text."
#: /home/kovid/work/calibre/src/calibre/library/cli.py:211 #: /home/kovid/work/calibre/src/calibre/library/cli.py:211
msgid "" msgid ""
@ -7892,7 +7893,7 @@ msgstr "Sprache, in der die Benutzer-Oberfläche dargestellt wird"
#: /home/kovid/work/calibre/src/calibre/utils/config.py:639 #: /home/kovid/work/calibre/src/calibre/utils/config.py:639
msgid "The default output format for ebook conversions." msgid "The default output format for ebook conversions."
msgstr "Das voreingestellte Ausgabeformat für eBook Konvertierungen." msgstr "Das voreingestellte Ausgabe-Format für eBook Konvertierungen."
#: /home/kovid/work/calibre/src/calibre/utils/config.py:643 #: /home/kovid/work/calibre/src/calibre/utils/config.py:643
msgid "Ordered list of formats to prefer for input." msgid "Ordered list of formats to prefer for input."
@ -7958,6 +7959,14 @@ msgstr "Englisch (CA)"
msgid "English (IND)" msgid "English (IND)"
msgstr "Englisch (IND)" msgstr "Englisch (IND)"
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
msgid "Dutch (NL)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
msgid "Dutch (BE)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53
msgid "URL must have the scheme sftp" msgid "URL must have the scheme sftp"
msgstr "URL muss dem sftp Schema entsprechen" msgstr "URL muss dem sftp Schema entsprechen"
@ -8014,77 +8023,77 @@ msgstr ""
msgid "Unknown News Source" msgid "Unknown News Source"
msgstr "Nachrichtenquelle unbekannt" msgstr "Nachrichtenquelle unbekannt"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:510
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" msgstr ""
"Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort." "Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:593
msgid "Download finished" msgid "Download finished"
msgstr "Download beendet" msgstr "Download beendet"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595
msgid "Failed to download the following articles:" msgid "Failed to download the following articles:"
msgstr "Der Download der folgenden Artikel schlug fehl:" msgstr "Der Download der folgenden Artikel schlug fehl:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:601
msgid "Failed to download parts of the following articles:" msgid "Failed to download parts of the following articles:"
msgstr "Der Download von Teilen der folgenden Artikel schlug fehl:" msgstr "Der Download von Teilen der folgenden Artikel schlug fehl:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:603
msgid " from " msgid " from "
msgstr " von " msgstr " von "
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605
msgid "\tFailed links:" msgid "\tFailed links:"
msgstr "\tFehlgeschlagene Verknüpfungen:" msgstr "\tFehlgeschlagene Verknüpfungen:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:686
msgid "Could not fetch article. Run with -vv to see the reason" msgid "Could not fetch article. Run with -vv to see the reason"
msgstr "" msgstr ""
"Konnte Artikel nicht abrufen. Mit -vv starten, um den Grund dafür zu sehen" "Konnte Artikel nicht abrufen. Mit -vv starten, um den Grund dafür zu sehen"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
msgid "Fetching feeds..." msgid "Fetching feeds..."
msgstr "Rufe Feeds ab..." msgstr "Rufe Feeds ab..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
msgid "Got feeds from index page" msgid "Got feeds from index page"
msgstr "Feeds der Index-Seite erhalten" msgstr "Feeds der Index-Seite erhalten"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718
msgid "Trying to download cover..." msgid "Trying to download cover..."
msgstr "Umschlagbild versuchen heruterzuladen ..." msgstr "Umschlagbild versuchen heruterzuladen ..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:776
msgid "Starting download [%d thread(s)]..." msgid "Starting download [%d thread(s)]..."
msgstr "Download von [%d Thread(s)] starten ..." msgstr "Download von [%d Thread(s)] starten ..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:792
msgid "Feeds downloaded to %s" msgid "Feeds downloaded to %s"
msgstr "Feeds wurden nach %s heruntergeladen" msgstr "Feeds wurden nach %s heruntergeladen"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
msgid "Could not download cover: %s" msgid "Could not download cover: %s"
msgstr "Umschlagbild konnte nicht heruntergeladen werden: %s" msgstr "Umschlagbild konnte nicht heruntergeladen werden: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809
msgid "Downloading cover from %s" msgid "Downloading cover from %s"
msgstr "Umschlagbild von %s herunterladen" msgstr "Umschlagbild von %s herunterladen"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935
msgid "Untitled Article" msgid "Untitled Article"
msgstr "Artikel ohne Titel" msgstr "Artikel ohne Titel"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1006
msgid "Article downloaded: %s" msgid "Article downloaded: %s"
msgstr "Artikel heruntergeladen: %s" msgstr "Artikel heruntergeladen: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017
msgid "Article download failed: %s" msgid "Article download failed: %s"
msgstr "Herunterladen der Artikel schlug fehl: %s" msgstr "Herunterladen der Artikel schlug fehl: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1034
msgid "Fetching feed" msgid "Fetching feed"
msgstr "Feed abrufen" msgstr "Feed abrufen"
@ -10274,3 +10283,6 @@ msgstr "Detaillierte Ausgabeinformation anzeigen. Hilfreich zur Fehlersuche."
#~ msgid "sr-Latn-RS" #~ msgid "sr-Latn-RS"
#~ msgstr "sr-Latn-RS" #~ msgstr "sr-Latn-RS"
#~ msgid "Communicate with the Sony PRS-300/505 eBook reader."
#~ msgstr "Kommunikation mit dem Sony PRS-300/505 eBook Reader."

View File

@ -10,14 +10,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: es\n" "Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-26 20:00+0000\n" "POT-Creation-Date: 2009-11-30 20:45+0000\n"
"PO-Revision-Date: 2009-11-27 15:00+0000\n" "PO-Revision-Date: 2009-12-01 16:56+0000\n"
"Last-Translator: kilikolo <Unknown>\n" "Last-Translator: Jellby <Unknown>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-11-28 04:55+0000\n" "X-Launchpad-Export-Date: 2009-12-02 04:53+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -71,9 +71,9 @@ msgstr "No hacer nada en absoluto"
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /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/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:889
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:954
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /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/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -135,7 +135,7 @@ msgstr "No hacer nada en absoluto"
#: /home/kovid/work/calibre/src/calibre/library/server.py:649 #: /home/kovid/work/calibre/src/calibre/library/server.py:649
#: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:721
#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/library/server.py:768
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
@ -452,8 +452,8 @@ msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 #: /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:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
msgid "Transferring books to device..." msgid "Transferring books to device..."
@ -475,7 +475,7 @@ msgstr "Comunicar con el lector ESlick"
msgid "Communicate with the IRex Iliad eBook reader." msgid "Communicate with the IRex Iliad eBook reader."
msgstr "Comunicar con el lector IRex Iliad." msgstr "Comunicar con el lector IRex Iliad."
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:21
msgid "Device Interface" msgid "Device Interface"
msgstr "Interfaz del dispositivo" msgstr "Interfaz del dispositivo"
@ -516,10 +516,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "Comunicar con el lector Sony PRS-500" msgstr "Comunicar con el lector Sony PRS-500"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 #: /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:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -530,22 +530,22 @@ msgid "Getting list of books on device..."
msgstr "Obteniendo la lista de libros en el dispositivo ..." msgstr "Obteniendo la lista de libros en el dispositivo ..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505 eBook reader." msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr "Comunicar con los lectores Sony PRS-300/505" msgstr "Comunicar con el lector Sony PRS-300/505/500"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
#: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18 #: /home/kovid/work/calibre/src/calibre/devices/prs700/driver.py:18
msgid "Kovid Goyal and John Schember" msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal y John Schember" msgstr "Kovid Goyal y John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
msgid "Removing books from device..." msgid "Removing books from device..."
msgstr "Eliminando libros del dispositivo..." msgstr "Eliminando libros del dispositivo..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Sending metadata to device..." msgid "Sending metadata to device..."
msgstr "Enviando metadatos al dispositivo..." msgstr "Enviando metadatos al dispositivo..."
@ -1986,7 +1986,7 @@ msgstr ""
"LibraryThing.com\n" "LibraryThing.com\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317
msgid "Cover" msgid "Cover"
msgstr "Portada" msgstr "Portada"
@ -2021,70 +2021,70 @@ msgstr "Desactivar la compresión del fichero."
msgid "All articles" msgid "All articles"
msgstr "Todos los artículos" msgstr "Todos los artículos"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318
msgid "Title Page" msgid "Title Page"
msgstr "Página de título" msgstr "Página de título"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents" msgid "Table of Contents"
msgstr "Índice" msgstr "Índice"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320
msgid "Index" msgid "Index"
msgstr "Índice analítico" msgstr "Índice analítico"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
msgid "Glossary" msgid "Glossary"
msgstr "Glosario" msgstr "Glosario"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
msgid "Acknowledgements" msgid "Acknowledgements"
msgstr "Agradecimientos" msgstr "Agradecimientos"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Bibliography" msgid "Bibliography"
msgstr "Bibliografía" msgstr "Bibliografía"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Colophon" msgid "Colophon"
msgstr "Colofón" msgstr "Colofón"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Copyright" msgid "Copyright"
msgstr "Copyright" msgstr "Copyright"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Dedication" msgid "Dedication"
msgstr "Dedicatoria" msgstr "Dedicatoria"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Epigraph" msgid "Epigraph"
msgstr "Epígrafe" msgstr "Epígrafe"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Foreword" msgid "Foreword"
msgstr "Prólogo" msgstr "Prólogo"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "List of Illustrations" msgid "List of Illustrations"
msgstr "Lista de ilustraciones" msgstr "Lista de ilustraciones"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "List of Tables" msgid "List of Tables"
msgstr "Lista de tablas" msgstr "Lista de tablas"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Notes" msgid "Notes"
msgstr "Notas" msgstr "Notas"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Preface" msgid "Preface"
msgstr "Prefacio" msgstr "Prefacio"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Main Text" msgid "Main Text"
msgstr "Texto principal" msgstr "Texto principal"
@ -3128,7 +3128,7 @@ msgstr "tamaño de la identación:"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122
msgid " em" msgid " em"
msgstr "" msgstr " em"
#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123
msgid "Insert &blank line" msgid "Insert &blank line"
@ -7917,6 +7917,14 @@ msgstr "Inglés (Canadá)"
msgid "English (IND)" msgid "English (IND)"
msgstr "Inglés (India)" msgstr "Inglés (India)"
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
msgid "Dutch (NL)"
msgstr "Neerlandés (NL)"
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
msgid "Dutch (BE)"
msgstr "Neerlandés (BE)"
#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53
msgid "URL must have the scheme sftp" msgid "URL must have the scheme sftp"
msgstr "La URL debe tener el esquema sftp" msgstr "La URL debe tener el esquema sftp"
@ -7974,76 +7982,76 @@ msgstr ""
msgid "Unknown News Source" msgid "Unknown News Source"
msgstr "Fuente de noticias desconocida" msgstr "Fuente de noticias desconocida"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:510
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "La receta \"%s\" necesita usuario y contraseña." msgstr "La receta \"%s\" necesita usuario y contraseña."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:593
msgid "Download finished" msgid "Download finished"
msgstr "Descarga finalizada" msgstr "Descarga finalizada"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595
msgid "Failed to download the following articles:" msgid "Failed to download the following articles:"
msgstr "Fallo al descargar los siguientes artículos:" msgstr "Fallo al descargar los siguientes artículos:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:601
msgid "Failed to download parts of the following articles:" msgid "Failed to download parts of the following articles:"
msgstr "Fallo al descargar partes de los siguientes artículos" msgstr "Fallo al descargar partes de los siguientes artículos"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:603
msgid " from " msgid " from "
msgstr " de " msgstr " de "
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605
msgid "\tFailed links:" msgid "\tFailed links:"
msgstr "\tEnlaces fallidos:" msgstr "\tEnlaces fallidos:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:686
msgid "Could not fetch article. Run with -vv to see the reason" msgid "Could not fetch article. Run with -vv to see the reason"
msgstr "" msgstr ""
"No se pudo obtener el artículo. Ejecute calibre con -vv para ver el motivo" "No se pudo obtener el artículo. Ejecute calibre con -vv para ver el motivo"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
msgid "Fetching feeds..." msgid "Fetching feeds..."
msgstr "Obteniendo canales de noticias..." msgstr "Obteniendo canales de noticias..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
msgid "Got feeds from index page" msgid "Got feeds from index page"
msgstr "Se obtivieron canales de noticias de la página principal" msgstr "Se obtivieron canales de noticias de la página principal"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718
msgid "Trying to download cover..." msgid "Trying to download cover..."
msgstr "Intentando descargar la portada..." msgstr "Intentando descargar la portada..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:776
msgid "Starting download [%d thread(s)]..." msgid "Starting download [%d thread(s)]..."
msgstr "Iniciando la descarga [%d proceso(s)]" msgstr "Iniciando la descarga [%d proceso(s)]"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:792
msgid "Feeds downloaded to %s" msgid "Feeds downloaded to %s"
msgstr "Canales de noticias descargados en %s" msgstr "Canales de noticias descargados en %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
msgid "Could not download cover: %s" msgid "Could not download cover: %s"
msgstr "No se pudo descargar la portada: %s" msgstr "No se pudo descargar la portada: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809
msgid "Downloading cover from %s" msgid "Downloading cover from %s"
msgstr "Descargando la portada desde %s" msgstr "Descargando la portada desde %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935
msgid "Untitled Article" msgid "Untitled Article"
msgstr "Artículo sin título" msgstr "Artículo sin título"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1006
msgid "Article downloaded: %s" msgid "Article downloaded: %s"
msgstr "Artículo descargado: %s" msgstr "Artículo descargado: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017
msgid "Article download failed: %s" msgid "Article download failed: %s"
msgstr "Falló la descarga del artículo: %s" msgstr "Falló la descarga del artículo: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1034
msgid "Fetching feed" msgid "Fetching feed"
msgstr "Obteniendo canal de noticias" msgstr "Obteniendo canal de noticias"
@ -10032,3 +10040,6 @@ msgstr "Mostrar información de salida detallada. Útil para la depuración"
#~ "Con esta opción se interpreta que cada línea con sangría inicial (una " #~ "Con esta opción se interpreta que cada línea con sangría inicial (una "
#~ "tabulación o 2 o más espacios) representa un párrafo. Los párrafos terminan " #~ "tabulación o 2 o más espacios) representa un párrafo. Los párrafos terminan "
#~ "cuando se alcanza la siguiente línea con sangría inicial." #~ "cuando se alcanza la siguiente línea con sangría inicial."
#~ msgid "Communicate with the Sony PRS-300/505 eBook reader."
#~ msgstr "Comunicar con los lectores Sony PRS-300/505"

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

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-26 20:00+0000\n" "POT-Creation-Date: 2009-11-30 20:45+0000\n"
"PO-Revision-Date: 2009-11-26 09:23+0000\n" "PO-Revision-Date: 2009-11-30 02:38+0000\n"
"Last-Translator: lafis <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Korean <ko@li.org>\n" "Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-11-27 04:47+0000\n" "X-Launchpad-Export-Date: 2009-12-01 04:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -68,9 +68,9 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /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/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:889
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:954
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /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/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -132,7 +132,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/library/server.py:649 #: /home/kovid/work/calibre/src/calibre/library/server.py:649
#: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:721
#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/library/server.py:768
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
@ -419,8 +419,8 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 #: /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:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
msgid "Transferring books to device..." msgid "Transferring books to device..."
@ -442,7 +442,7 @@ msgstr ""
msgid "Communicate with the IRex Iliad eBook reader." msgid "Communicate with the IRex Iliad eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:21
msgid "Device Interface" msgid "Device Interface"
msgstr "" msgstr ""
@ -483,10 +483,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 #: /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:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -497,7 +497,7 @@ msgid "Getting list of books on device..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505 eBook reader." msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
@ -505,14 +505,14 @@ msgstr ""
msgid "Kovid Goyal and John Schember" msgid "Kovid Goyal and John Schember"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
msgid "Removing books from device..." msgid "Removing books from device..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Sending metadata to device..." msgid "Sending metadata to device..."
msgstr "" msgstr ""
@ -1699,7 +1699,7 @@ msgid ""
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317
msgid "Cover" msgid "Cover"
msgstr "" msgstr ""
@ -1730,70 +1730,70 @@ msgstr ""
msgid "All articles" msgid "All articles"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318
msgid "Title Page" msgid "Title Page"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents" msgid "Table of Contents"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320
msgid "Index" msgid "Index"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
msgid "Glossary" msgid "Glossary"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
msgid "Acknowledgements" msgid "Acknowledgements"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Bibliography" msgid "Bibliography"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Colophon" msgid "Colophon"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Copyright" msgid "Copyright"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Dedication" msgid "Dedication"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Epigraph" msgid "Epigraph"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Foreword" msgid "Foreword"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "List of Illustrations" msgid "List of Illustrations"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "List of Tables" msgid "List of Tables"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Preface" msgid "Preface"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Main Text" msgid "Main Text"
msgstr "" msgstr ""
@ -7064,6 +7064,14 @@ msgstr ""
msgid "English (IND)" msgid "English (IND)"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
msgid "Dutch (NL)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
msgid "Dutch (BE)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53
msgid "URL must have the scheme sftp" msgid "URL must have the scheme sftp"
msgstr "" msgstr ""
@ -7116,75 +7124,75 @@ msgstr ""
msgid "Unknown News Source" msgid "Unknown News Source"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:510
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:593
msgid "Download finished" msgid "Download finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595
msgid "Failed to download the following articles:" msgid "Failed to download the following articles:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:601
msgid "Failed to download parts of the following articles:" msgid "Failed to download parts of the following articles:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:603
msgid " from " msgid " from "
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605
msgid "\tFailed links:" msgid "\tFailed links:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:686
msgid "Could not fetch article. Run with -vv to see the reason" msgid "Could not fetch article. Run with -vv to see the reason"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
msgid "Fetching feeds..." msgid "Fetching feeds..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
msgid "Got feeds from index page" msgid "Got feeds from index page"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718
msgid "Trying to download cover..." msgid "Trying to download cover..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:776
msgid "Starting download [%d thread(s)]..." msgid "Starting download [%d thread(s)]..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:792
msgid "Feeds downloaded to %s" msgid "Feeds downloaded to %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
msgid "Could not download cover: %s" msgid "Could not download cover: %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809
msgid "Downloading cover from %s" msgid "Downloading cover from %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935
msgid "Untitled Article" msgid "Untitled Article"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1006
msgid "Article downloaded: %s" msgid "Article downloaded: %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017
msgid "Article download failed: %s" msgid "Article download failed: %s"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1034
msgid "Fetching feed" msgid "Fetching feed"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre\n" "Project-Id-Version: calibre\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-26 20:00+0000\n" "POT-Creation-Date: 2009-11-30 20:45+0000\n"
"PO-Revision-Date: 2009-11-27 11:00+0000\n" "PO-Revision-Date: 2009-11-30 02:42+0000\n"
"Last-Translator: Bartosz Kaszubowski <gosimek@gmail.com>\n" "Last-Translator: Bartosz Kaszubowski <gosimek@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-11-28 04:55+0000\n" "X-Launchpad-Export-Date: 2009-12-01 04:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n" "X-Generator: Launchpad (build Unknown)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
@ -68,9 +68,9 @@ msgstr "Ta opcja nic nie zmienia"
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:778
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /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/odt/input.py:51
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:886 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:889
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:891 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:894
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:951 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:954
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /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/reader.py:139
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:105
@ -132,7 +132,7 @@ msgstr "Ta opcja nic nie zmienia"
#: /home/kovid/work/calibre/src/calibre/library/server.py:649 #: /home/kovid/work/calibre/src/calibre/library/server.py:649
#: /home/kovid/work/calibre/src/calibre/library/server.py:721 #: /home/kovid/work/calibre/src/calibre/library/server.py:721
#: /home/kovid/work/calibre/src/calibre/library/server.py:768 #: /home/kovid/work/calibre/src/calibre/library/server.py:768
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
@ -432,8 +432,8 @@ msgstr "John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/cybookg3/driver.py:76 #: /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:76
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:78
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:130 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:131
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:132 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:133
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:109
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:111
msgid "Transferring books to device..." msgid "Transferring books to device..."
@ -455,7 +455,7 @@ msgstr ""
msgid "Communicate with the IRex Iliad eBook reader." msgid "Communicate with the IRex Iliad eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/interface.py:20 #: /home/kovid/work/calibre/src/calibre/devices/interface.py:21
msgid "Device Interface" msgid "Device Interface"
msgstr "Interfejs urządzenia" msgstr "Interfejs urządzenia"
@ -496,10 +496,10 @@ msgid "Communicate with the Sony PRS-500 eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 #: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:93 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:94
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:97
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:99 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:111
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:49 #: /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:52
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:55
@ -510,7 +510,7 @@ msgid "Getting list of books on device..."
msgstr "Pobieranie listy książek znajdujących się na urządzeniu" msgstr "Pobieranie listy książek znajdujących się na urządzeniu"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26
msgid "Communicate with the Sony PRS-300/505 eBook reader." msgid "Communicate with the Sony PRS-300/505/500 eBook reader."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:27
@ -518,14 +518,14 @@ msgstr ""
msgid "Kovid Goyal and John Schember" msgid "Kovid Goyal and John Schember"
msgstr "Kovid Goyal i John Schember" msgstr "Kovid Goyal i John Schember"
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:163 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:164
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:170 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:171
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:129
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
msgid "Removing books from device..." msgid "Removing books from device..."
msgstr "Usuwanie książek z urządzenia..." msgstr "Usuwanie książek z urządzenia..."
#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:198 #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:199
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:159
msgid "Sending metadata to device..." msgid "Sending metadata to device..."
msgstr "Przesyłanie danych meta do urządzenia..." msgstr "Przesyłanie danych meta do urządzenia..."
@ -1778,7 +1778,7 @@ msgid ""
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1083
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1314 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317
msgid "Cover" msgid "Cover"
msgstr "Okładka" msgstr "Okładka"
@ -1811,70 +1811,70 @@ msgstr "Nie kompresuj zawartości pliku."
msgid "All articles" msgid "All articles"
msgstr "Wszystkie artykuły" msgstr "Wszystkie artykuły"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1315 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318
msgid "Title Page" msgid "Title Page"
msgstr "Strona tytułowa" msgstr "Strona tytułowa"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1316 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:51
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:168
msgid "Table of Contents" msgid "Table of Contents"
msgstr "Spis treści" msgstr "Spis treści"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1317 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320
msgid "Index" msgid "Index"
msgstr "Spis" msgstr "Spis"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1318 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321
msgid "Glossary" msgid "Glossary"
msgstr "Słowniczek" msgstr "Słowniczek"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1319 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322
msgid "Acknowledgements" msgid "Acknowledgements"
msgstr "Podziękowania" msgstr "Podziękowania"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1320 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323
msgid "Bibliography" msgid "Bibliography"
msgstr "Bibliografia" msgstr "Bibliografia"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1321 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324
msgid "Colophon" msgid "Colophon"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1322 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325
msgid "Copyright" msgid "Copyright"
msgstr "Prawa autorskie" msgstr "Prawa autorskie"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1323 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326
msgid "Dedication" msgid "Dedication"
msgstr "Dedykacja" msgstr "Dedykacja"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1324 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327
msgid "Epigraph" msgid "Epigraph"
msgstr "Epigraf" msgstr "Epigraf"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1325 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328
msgid "Foreword" msgid "Foreword"
msgstr "Przedsłowie" msgstr "Przedsłowie"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1326 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329
msgid "List of Illustrations" msgid "List of Illustrations"
msgstr "Lista ilustracji" msgstr "Lista ilustracji"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1327 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330
msgid "List of Tables" msgid "List of Tables"
msgstr "Lista tabel" msgstr "Lista tabel"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1328 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1331
msgid "Notes" msgid "Notes"
msgstr "Notatki" msgstr "Notatki"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1329 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1332
msgid "Preface" msgid "Preface"
msgstr "Wstęp" msgstr "Wstęp"
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1330 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1333
msgid "Main Text" msgid "Main Text"
msgstr "Tekst główny" msgstr "Tekst główny"
@ -7218,6 +7218,14 @@ msgstr "angielski (Kanada)"
msgid "English (IND)" msgid "English (IND)"
msgstr "angielski (Indie)" msgstr "angielski (Indie)"
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
msgid "Dutch (NL)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
msgid "Dutch (BE)"
msgstr ""
#: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53
msgid "URL must have the scheme sftp" msgid "URL must have the scheme sftp"
msgstr "" msgstr ""
@ -7270,75 +7278,75 @@ msgstr "Hasło dla stron wymagających zalogowania to przeglądania zawartości.
msgid "Unknown News Source" msgid "Unknown News Source"
msgstr "Nieznane źródło informacji" msgstr "Nieznane źródło informacji"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:507 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:510
msgid "The \"%s\" recipe needs a username and password." msgid "The \"%s\" recipe needs a username and password."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:590 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:593
msgid "Download finished" msgid "Download finished"
msgstr "Pobranie zakończone" msgstr "Pobranie zakończone"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:592 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595
msgid "Failed to download the following articles:" msgid "Failed to download the following articles:"
msgstr "Nie udało się pobrać następujących artykułów:" msgstr "Nie udało się pobrać następujących artykułów:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:598 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:601
msgid "Failed to download parts of the following articles:" msgid "Failed to download parts of the following articles:"
msgstr "Nie udało się pobrać części następujących artykułów:" msgstr "Nie udało się pobrać części następujących artykułów:"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:600 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:603
msgid " from " msgid " from "
msgstr " z " msgstr " z "
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:602 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:605
msgid "\tFailed links:" msgid "\tFailed links:"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:683 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:686
msgid "Could not fetch article. Run with -vv to see the reason" msgid "Could not fetch article. Run with -vv to see the reason"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
msgid "Fetching feeds..." msgid "Fetching feeds..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:709 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
msgid "Got feeds from index page" msgid "Got feeds from index page"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:718
msgid "Trying to download cover..." msgid "Trying to download cover..."
msgstr "Próbuję pobrać okładkę..." msgstr "Próbuję pobrać okładkę..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:769 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:776
msgid "Starting download [%d thread(s)]..." msgid "Starting download [%d thread(s)]..."
msgstr "Rozpoczynam pobieranie [%d wątek(ków)]..." msgstr "Rozpoczynam pobieranie [%d wątek(ków)]..."
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:785 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:792
msgid "Feeds downloaded to %s" msgid "Feeds downloaded to %s"
msgstr "Źródła pobrano do %s" msgstr "Źródła pobrano do %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:795 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
msgid "Could not download cover: %s" msgid "Could not download cover: %s"
msgstr "Nie można pobrać okładki: %s" msgstr "Nie można pobrać okładki: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:809
msgid "Downloading cover from %s" msgid "Downloading cover from %s"
msgstr "Pobieranie okładki z %s" msgstr "Pobieranie okładki z %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:928 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935
msgid "Untitled Article" msgid "Untitled Article"
msgstr "Artykuł bez tytułu" msgstr "Artykuł bez tytułu"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:999 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1006
msgid "Article downloaded: %s" msgid "Article downloaded: %s"
msgstr "Artykuł pobrany: %s" msgstr "Artykuł pobrany: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017
msgid "Article download failed: %s" msgid "Article download failed: %s"
msgstr "Pobieranie artykułu nie powiodło się: %s" msgstr "Pobieranie artykułu nie powiodło się: %s"
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1027 #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1034
msgid "Fetching feed" msgid "Fetching feed"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1544,7 +1544,7 @@ class Zeroconf(object):
# This is a quick test to see if we can parse the packets we generate # This is a quick test to see if we can parse the packets we generate
#temp = DNSIncoming(out.packet()) #temp = DNSIncoming(out.packet())
try: try:
bytes_sent = self.socket.sendto(out.packet(), 0, (addr, port)) self.socket.sendto(out.packet(), 0, (addr, port))
except: except:
# Ignore this, it may be a temporary loss of network connection # Ignore this, it may be a temporary loss of network connection
pass pass

View File

@ -65,7 +65,6 @@ def set_translators():
# CALIBRE_OVERRIDE_LANG=de_DE.utf8 program # CALIBRE_OVERRIDE_LANG=de_DE.utf8 program
lang = get_lang() lang = get_lang()
if lang: if lang:
translations = available_translations()
buf = iso639 = None buf = iso639 = None
if os.access(lang+'.po', os.R_OK): if os.access(lang+'.po', os.R_OK):
from calibre.translations.msgfmt import make from calibre.translations.msgfmt import make

View File

@ -11,7 +11,7 @@ from calibre.constants import iswindows
def find_executable(): def find_executable():
name = 'sigil' + ('.exe' if iswindows else '') name = 'sigil' + ('.exe' if iswindows else '')
path = find_executable_in_path(name) find_executable_in_path(name)
#if path is None and iswindows: #if path is None and iswindows:
# path = search_program_files() # path = search_program_files()

View File

@ -79,7 +79,6 @@ def save_soup(soup, target):
html = unicode(soup) html = unicode(soup)
with open(target, 'wb') as f: with open(target, 'wb') as f:
idx = html.find('hoping')
f.write(html.encode('utf-8')) f.write(html.encode('utf-8'))
class response(str): class response(str):
@ -259,7 +258,7 @@ class RecursiveFetcher(object):
continue continue
try: try:
data = self.fetch_url(iurl) data = self.fetch_url(iurl)
except Exception, err: except Exception:
self.log.exception('Could not fetch stylesheet %s'% iurl) self.log.exception('Could not fetch stylesheet %s'% iurl)
continue continue
stylepath = os.path.join(diskpath, 'style'+str(c)+'.css') stylepath = os.path.join(diskpath, 'style'+str(c)+'.css')
@ -282,7 +281,7 @@ class RecursiveFetcher(object):
continue continue
try: try:
data = self.fetch_url(iurl) data = self.fetch_url(iurl)
except Exception, err: except Exception:
self.log.exception('Could not fetch stylesheet %s'% iurl) self.log.exception('Could not fetch stylesheet %s'% iurl)
continue continue
c += 1 c += 1
@ -314,7 +313,7 @@ class RecursiveFetcher(object):
continue continue
try: try:
data = self.fetch_url(iurl) data = self.fetch_url(iurl)
except Exception, err: except Exception:
self.log.exception('Could not fetch image %s'% iurl) self.log.exception('Could not fetch image %s'% iurl)
continue continue
c += 1 c += 1
@ -443,7 +442,7 @@ class RecursiveFetcher(object):
save_soup(soup, res) save_soup(soup, res)
self.localize_link(tag, 'href', res) self.localize_link(tag, 'href', res)
except Exception, err: except Exception:
self.failed_links.append((iurl, traceback.format_exc())) self.failed_links.append((iurl, traceback.format_exc()))
self.log.exception('Could not fetch link', iurl) self.log.exception('Could not fetch link', iurl)
finally: finally: