Merge + correct log warning in Bibtex catalog

This commit is contained in:
Sengian 2011-05-11 22:45:19 +02:00
commit b143be8c2c
142 changed files with 4993 additions and 4137 deletions

View File

@ -30,3 +30,4 @@ nbproject/
.project .project
.pydevproject .pydevproject
.settings/ .settings/
*.DS_Store

View File

@ -19,6 +19,13 @@
# new recipes: # new recipes:
# - title: # - title:
- version: 0.8.0
date: 2010-05-06
new features:
- title: "Go to http://calibre-ebook.com/new-in/eight to see what's new in 0.8.0"
type: major
- version: 0.7.59 - version: 0.7.59
date: 2011-04-30 date: 2011-04-30

View File

@ -12,7 +12,6 @@ class AdvancedUserRecipe1301860159(BasicNewsRecipe):
max_articles_per_feed = 100 max_articles_per_feed = 100
no_stylesheets = True no_stylesheets = True
use_embedded_content = False use_embedded_content = False
language = 'en_EN'
remove_javascript = True remove_javascript = True
keep_only_tags = [dict(name='div', attrs={'class':'modSectionTd2'})] keep_only_tags = [dict(name='div', attrs={'class':'modSectionTd2'})]
remove_tags = [dict(name='a'),dict(name='hr')] remove_tags = [dict(name='a'),dict(name='hr')]

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = u'2010, Tomasz Dlugosz <tomek3d@gmail.com>' __copyright__ = u'2010-2011, Tomasz Dlugosz <tomek3d@gmail.com>'
''' '''
frazpc.pl frazpc.pl
''' '''
@ -19,17 +19,20 @@ class FrazPC(BasicNewsRecipe):
use_embedded_content = False use_embedded_content = False
no_stylesheets = True no_stylesheets = True
feeds = [(u'Aktualno\u015bci', u'http://www.frazpc.pl/feed'), (u'Recenzje', u'http://www.frazpc.pl/kat/recenzje-2/feed') ] feeds = [
(u'Aktualno\u015bci', u'http://www.frazpc.pl/feed/aktualnosci'),
keep_only_tags = [dict(name='div', attrs={'id':'FRAZ_CONTENT'})] (u'Artyku\u0142y', u'http://www.frazpc.pl/feed/artykuly')
remove_tags = [dict(name='p', attrs={'class':'gray tagsP fs11'})]
preprocess_regexps = [
(re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in
[(r'<div id="post-[0-9]*"', lambda match: '<div id="FRAZ_CONTENT"'),
(r'href="/f/news/', lambda match: 'href="http://www.frazpc.pl/f/news/'),
(r' &nbsp; <a href="http://www.frazpc.pl/[^>]*?">(Skomentuj|Komentarz(e)?\([0-9]*\))</a>&nbsp; \|', lambda match: '')]
] ]
keep_only_tags = [dict(name='div', attrs={'class':'article'})]
remove_tags = [
dict(name='div', attrs={'class':'title-wrapper'}),
dict(name='p', attrs={'class':'tags'}),
dict(name='p', attrs={'class':'article-links'}),
dict(name='div', attrs={'class':'comments_box'})
]
preprocess_regexps = [(re.compile(r'\| <a href="#comments">Komentarze \([0-9]*\)</a>'), lambda match: '')]
remove_attributes = [ 'width', 'height' ] remove_attributes = [ 'width', 'height' ]

View File

@ -21,14 +21,19 @@ class Fronda(BasicNewsRecipe):
feeds = [(u'Infformacje', u'http://fronda.pl/news/feed')] feeds = [(u'Infformacje', u'http://fronda.pl/news/feed')]
keep_only_tags = [dict(name='h1', attrs={'class':'big'}), keep_only_tags = [dict(name='h2', attrs={'class':'news_title'}),
dict(name='ul', attrs={'class':'about clear'}), dict(name='div', attrs={'class':'naglowek_tresc'}),
dict(name='div', attrs={'class':'content'})] dict(name='div', attrs={'id':'czytaj'}) ]
remove_tags = [dict(name='a', attrs={'class':'print'})]
preprocess_regexps = [ preprocess_regexps = [
(re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in
[ (r'<a href="#" class="print">Drukuj</a>', lambda match: ''), [ (r'<p><a href="http://fronda.pl/sklepy">.*</a></p>', lambda match: ''),
(r'<p><a href="http://fronda.pl/sklepy">.*</a></p>', lambda match: ''),
(r'<p><a href="http://fronda.pl/pasaz">.*</a></p>', lambda match: ''), (r'<p><a href="http://fronda.pl/pasaz">.*</a></p>', lambda match: ''),
(r'<h3><strong>W.* lektury.*</a></p></div>', lambda match: '</div>'), (r'<h3><strong>W.* lektury.*</a></p></div>', lambda match: '</div>'),
(r'<h3>Zobacz t.*?</div>', lambda match: '</div>') ] (r'<h3>Zobacz t.*?</div>', lambda match: '</div>'),
(r'<p[^>]*>&nbsp;</p>', lambda match: ''),
(r'<p><span style=".*?"><br /></span></p> ', lambda match: ''),
(r'<a style=\'float:right;margin-top:3px;\' href="http://www.facebook.com/share.php?.*?</a>', lambda match: '')]
] ]

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
recipes/icons/ziuaveche.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

View File

@ -0,0 +1,36 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Seongkyoun Yoo <Seongkyoun.yoo at gmail.com>'
'''
Profile to download KoreaHerald
'''
from calibre.web.feeds.news import BasicNewsRecipe
class KoreaHerald(BasicNewsRecipe):
title = u'KoreaHerald'
language = 'en'
description = u'Korea Herald News articles'
__author__ = 'Seongkyoun Yoo'
oldest_article = 10
recursions = 3
max_articles_per_feed = 10
no_stylesheets = True
keep_only_tags = [
dict(id=['contentLeft', '_article'])
]
remove_tags = [
dict(name='iframe'),
dict(name='div', attrs={'class':['left','htit2', 'navigation','banner_txt','banner_img']}),
dict(name='ul', attrs={'class':['link_icon', 'flow_icon','detailTextAD110113']}),
]
feeds = [
('All News','http://www.koreaherald.com/rss/020000000000.xml'),
('National','http://www.koreaherald.com/rss/020100000000.xml'),
('Business','http://www.koreaherald.com/rss/020200000000.xml'),
('Life&Style','http://www.koreaherald.com/rss/020300000000.xml'),
('Entertainment','http://www.koreaherald.com/rss/020400000000.xml'),
('Sports','http://www.koreaherald.com/rss/020500000000.xml'),
('Opinion','http://www.koreaherald.com/rss/020600000000.xml'),
('English Cafe','http://www.koreaherald.com/rss/021000000000.xml'),
]

View File

@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = u'2011, '
'''
replicavedetelor.ro
'''
from calibre.web.feeds.news import BasicNewsRecipe
class ReplicaVedetelor(BasicNewsRecipe):
title = u'Replica Vedetelor'
__author__ = u'Silviu Cotoara'
description = u'Ofer\u0103 vedetelor dreptul la replic\u0103'
publisher = 'Replica Vedetelor'
oldest_article = 5
language = 'ro'
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
category = 'Ziare,Reviste,Vedete'
encoding = 'utf-8'
cover_url = 'http://www.webart-software.eu/_pics/lucrari_referinta/medium/84/1-Replica-Vedetelor.jpg'
conversion_options = {
'comments' : description
,'tags' : category
,'language' : language
,'publisher' : publisher
}
keep_only_tags = [
dict(name='div', attrs={'id':'zona-continut'})
]
remove_tags = [
dict(name='ul', attrs={'id':['lista-imagini']})
, dict(name='form', attrs={'id':['f-trimite-unui-prieten']})
]
remove_tags_after = [
dict(name='form', attrs={'id':['f-trimite-unui-prieten']})
]
feeds = [
(u'Feeds', u'http://www.replicavedetelor.ro/feed')
]
def preprocess_html(self, soup):
return self.adeify_images(soup)

View File

@ -2,7 +2,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
class RzeczpospolitaRecipe(BasicNewsRecipe): class RzeczpospolitaRecipe(BasicNewsRecipe):
__license__ = 'GPL v3' __license__ = 'GPL v3'
__author__ = 'kwetal' __author__ = u'kwetal and Tomasz Dlugosz'
language = 'pl' language = 'pl'
version = 1 version = 1
@ -38,6 +38,8 @@ class RzeczpospolitaRecipe(BasicNewsRecipe):
remove_tags.append(dict(name = 'div', attrs = {'class' : 'clr'})) remove_tags.append(dict(name = 'div', attrs = {'class' : 'clr'}))
remove_tags.append(dict(name = 'div', attrs = {'id' : 'share_bottom'})) remove_tags.append(dict(name = 'div', attrs = {'id' : 'share_bottom'}))
remove_tags.append(dict(name = 'div', attrs = {'id' : 'copyright_law'})) remove_tags.append(dict(name = 'div', attrs = {'id' : 'copyright_law'}))
remove_tags.append(dict(name = 'div', attrs = {'class' : 'more'}))
remove_tags.append(dict(name = 'div', attrs = {'class' : 'editorPicks'}))
extra_css = ''' extra_css = '''
body {font-family: verdana, arial, helvetica, geneva, sans-serif ;} body {font-family: verdana, arial, helvetica, geneva, sans-serif ;}
@ -48,6 +50,13 @@ class RzeczpospolitaRecipe(BasicNewsRecipe):
.fot{font-size: x-small; color: #666666;} .fot{font-size: x-small; color: #666666;}
''' '''
def skip_ad_pages(self, soup):
if ('advertisement' in soup.find('title').string.lower()):
href = soup.find('a').get('href')
return self.index_to_soup(href, raw=True)
else:
return None
def print_version(self, url): def print_version(self, url):
start, sep, rest = url.rpartition('/') start, sep, rest = url.rpartition('/')
forget, sep, index = rest.rpartition(',') forget, sep, index = rest.rpartition(',')

View File

@ -1,33 +1,33 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__license__ = 'GPL v3'
__copyright__ = '2009, Gerhard Aigner <gerhard.aigner at gmail.com>'
import re
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
class TelepolisNews(BasicNewsRecipe): class TelepolisNews(BasicNewsRecipe):
title = u'Telepolis (News+Artikel)' title = u'Telepolis (News+Artikel)'
__author__ = 'Gerhard Aigner' __author__ = 'syntaxis'
publisher = 'Heise Zeitschriften Verlag GmbH & Co KG' publisher = 'Heise Zeitschriften Verlag GmbH & Co KG'
description = 'News from telepolis' description = 'News from Telepolis'
category = 'news' category = 'news'
oldest_article = 7 oldest_article = 7
max_articles_per_feed = 100 max_articles_per_feed = 100
recursion = 0 recursion = 0
no_stylesheets = True no_stylesheets = True
encoding = "utf-8" encoding = "utf-8"
language = 'de_AT' language = 'de'
use_embedded_content =False
remove_empty_feeds = True remove_empty_feeds = True
preprocess_regexps = [(re.compile(r'<a[^>]*>', re.DOTALL|re.IGNORECASE), lambda match: ''),
(re.compile(r'</a>', re.DOTALL|re.IGNORECASE), lambda match: ''),]
keep_only_tags = [dict(name = 'td',attrs={'class':'bloghead'}),dict(name = 'td',attrs={'class':'blogfliess'})]
remove_tags = [dict(name='img'), dict(name='td',attrs={'class':'blogbottom'}), dict(name='td',attrs={'class':'forum'})] keep_only_tags = [dict(name = 'div',attrs={'class':'head'}),dict(name = 'div',attrs={'class':'leftbox'}),dict(name='td',attrs={'class':'strict'})]
remove_tags = [ dict(name='td',attrs={'class':'blogbottom'}),
dict(name='div',attrs={'class':'forum'}), dict(name='div',attrs={'class':'social'}),dict(name='div',attrs={'class':'blog-letter p-news'}),
dict(name='div',attrs={'class':'blog-sub'}),dict(name='div',attrs={'class':'version-div'}),dict(name='div',attrs={'id':'breadcrumb'})
,dict(attrs={'class':'tp-url'}),dict(attrs={'class':'blog-name entry_'}) ]
remove_tags_after = [dict(name='span', attrs={'class':['breadcrumb']})]
feeds = [(u'News', u'http://www.heise.de/tp/news-atom.xml')] feeds = [(u'News', u'http://www.heise.de/tp/news-atom.xml')]
@ -39,15 +39,8 @@ class TelepolisNews(BasicNewsRecipe):
html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"'
def get_article_url(self, article):
'''if the linked article is of kind artikel don't take it'''
if (article.link.count('artikel') > 1) :
return None
return article.link
def preprocess_html(self, soup): def preprocess_html(self, soup):
mtag = '<meta http-equiv="Content-Type" content="text/html; charset=' + self.encoding + '">' mtag = '<meta http-equiv="Content-Type" content="text/html; charset=' + self.encoding + '">'
soup.head.insert(0,mtag) soup.head.insert(0,mtag)
return soup return soup

View File

@ -10,6 +10,8 @@ import re
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
class Time(BasicNewsRecipe): class Time(BasicNewsRecipe):
recipe_disabled = ('This recipe has been disabled as TIME no longer'
' publish complete articles on the web.')
title = u'Time' title = u'Time'
__author__ = 'Kovid Goyal and Sujata Raman' __author__ = 'Kovid Goyal and Sujata Raman'
description = 'Weekly magazine' description = 'Weekly magazine'

View File

@ -7,13 +7,11 @@ usatoday.com
''' '''
from calibre.web.feeds.news import BasicNewsRecipe from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup, NavigableString, Tag
import re
class USAToday(BasicNewsRecipe): class USAToday(BasicNewsRecipe):
title = 'USA Today' title = 'USA Today'
__author__ = 'GRiker' __author__ = 'Kovid Goyal'
oldest_article = 1 oldest_article = 1
timefmt = '' timefmt = ''
max_articles_per_feed = 20 max_articles_per_feed = 20
@ -31,7 +29,6 @@ class USAToday(BasicNewsRecipe):
margin-bottom: 0em; \ margin-bottom: 0em; \
font-size: smaller;}\n \ font-size: smaller;}\n \
.articleBody {text-align: left;}\n ' .articleBody {text-align: left;}\n '
conversion_options = { 'linearize_tables' : True }
#simultaneous_downloads = 1 #simultaneous_downloads = 1
feeds = [ feeds = [
('Top Headlines', 'http://rssfeeds.usatoday.com/usatoday-NewsTopStories'), ('Top Headlines', 'http://rssfeeds.usatoday.com/usatoday-NewsTopStories'),
@ -47,63 +44,26 @@ class USAToday(BasicNewsRecipe):
('Most Popular', 'http://rssfeeds.usatoday.com/Usatoday-MostViewedArticles'), ('Most Popular', 'http://rssfeeds.usatoday.com/Usatoday-MostViewedArticles'),
('Offbeat News', 'http://rssfeeds.usatoday.com/UsatodaycomOffbeat-TopStories'), ('Offbeat News', 'http://rssfeeds.usatoday.com/UsatodaycomOffbeat-TopStories'),
] ]
keep_only_tags = [dict(attrs={'class':[ keep_only_tags = [dict(attrs={'class':'story'})]
'byLine', remove_tags = [
'inside-copy', dict(attrs={'class':[
'inside-head', 'share',
'inside-head2', 'reprints',
'item', 'inline-h3',
'item-block', 'info-extras',
'photo-container', 'ppy-outer',
]}), 'ppy-caption',
dict(id=[
'applyMainStoryPhoto',
'permalink',
])]
remove_tags = [dict(attrs={'class':[
'comments', 'comments',
'jump', 'jump',
'pagetools', 'pagetools',
'post-attributes', 'post-attributes',
'tags', 'tags',
'bottom-tools',
'sponsoredlinks',
]}), ]}),
dict(id=[])] dict(id=['pluck']),
]
#feeds = [('Most Popular', 'http://rssfeeds.usatoday.com/Usatoday-MostViewedArticles')]
def dump_hex(self, src, length=16):
''' Diagnostic '''
FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
N=0; result=''
while src:
s,src = src[:length],src[length:]
hexa = ' '.join(["%02X"%ord(x) for x in s])
s = s.translate(FILTER)
result += "%04X %-*s %s\n" % (N, length*3, hexa, s)
N+=length
print result
def fixChars(self,string):
# Replace lsquo (\x91)
fixed = re.sub("\x91","&#8216;",string)
# Replace rsquo (\x92)
fixed = re.sub("\x92","&#8217;",fixed)
# Replace ldquo (\x93)
fixed = re.sub("\x93","&#8220;",fixed)
# Replace rdquo (\x94)
fixed = re.sub("\x94","&#8221;",fixed)
# Replace ndash (\x96)
fixed = re.sub("\x96","&#8211;",fixed)
# Replace mdash (\x97)
fixed = re.sub("\x97","&#8212;",fixed)
return fixed
def get_masthead_url(self): def get_masthead_url(self):
masthead = 'http://i.usatoday.net/mobile/_common/_images/565x73_usat_mobile.gif' masthead = 'http://i.usatoday.net/mobile/_common/_images/565x73_usat_mobile.gif'
@ -115,321 +75,4 @@ class USAToday(BasicNewsRecipe):
masthead = None masthead = None
return masthead return masthead
def massageNCXText(self, description):
# Kindle TOC descriptions won't render certain characters
if description:
massaged = unicode(BeautifulStoneSoup(description, convertEntities=BeautifulStoneSoup.HTML_ENTITIES))
# Replace '&' with '&#38;'
massaged = re.sub("&","&#38;", massaged)
return self.fixChars(massaged)
else:
return description
def parse_feeds(self, *args, **kwargs):
parsed_feeds = BasicNewsRecipe.parse_feeds(self, *args, **kwargs)
# Count articles for progress dialog
article_count = 0
for feed in parsed_feeds:
article_count += len(feed)
self.log( "Queued %d articles" % article_count)
return parsed_feeds
def preprocess_html(self, soup):
soup = self.strip_anchors(soup)
return soup
def postprocess_html(self, soup, first_fetch):
# Remove navLinks <div class="inside-copy" style="padding-bottom:3px">
navLinks = soup.find(True,{'style':'padding-bottom:3px'})
if navLinks:
navLinks.extract()
# Remove <div class="inside-copy" style="margin-bottom:10px">
gibberish = soup.find(True,{'style':'margin-bottom:10px'})
if gibberish:
gibberish.extract()
# Change <inside-head> to <h2>
headline = soup.find(True, {'class':['inside-head','inside-head2']})
if not headline:
headline = soup.find('h3')
if headline:
tag = Tag(soup, "h2")
tag['class'] = "headline"
tag.insert(0, headline.contents[0])
headline.replaceWith(tag)
else:
print "unable to find headline:\n%s\n" % soup
# Change byLine to byline, change commas to middot
# Kindle renders commas in byline as '&'
byline = soup.find(True, {'class':'byLine'})
if byline:
byline['class'] = 'byline'
# Replace comma with middot
byline.contents[0].replaceWith(re.sub(","," &middot;", byline.renderContents()))
jumpout_punc_list = [':','?']
# Remove the inline jumpouts in <div class="inside-copy">
paras = soup.findAll(True, {'class':'inside-copy'})
for para in paras:
if re.match("<b>[\w\W]+ ",para.renderContents()):
p = para.find('b')
for punc in jumpout_punc_list:
punc_offset = p.contents[0].find(punc)
if punc_offset == -1:
continue
if punc_offset > 1:
if p.contents[0][:punc_offset] == p.contents[0][:punc_offset].upper():
#print "extracting \n%s\n" % para.prettify()
para.extract()
# Reset class for remaining
paras = soup.findAll(True, {'class':'inside-copy'})
for para in paras:
para['class'] = 'articleBody'
# Remove inline jumpouts in <p>
paras = soup.findAll(['p'])
for p in paras:
if hasattr(p,'contents') and len(p.contents):
for punc in jumpout_punc_list:
punc_offset = p.contents[0].find(punc)
if punc_offset == -1:
continue
if punc_offset > 2 and hasattr(p,'a') and len(p.contents):
#print "evaluating %s\n" % p.contents[0][:punc_offset+1]
if p.contents[0][:punc_offset] == p.contents[0][:punc_offset].upper():
#print "extracting \n%s\n" % p.prettify()
p.extract()
# Capture the first img, insert after headline
imgs = soup.findAll('img')
print "postprocess_html(): %d images" % len(imgs)
if imgs:
divTag = Tag(soup, 'div')
divTag['class'] = 'image'
body = soup.find('body')
img = imgs[0]
#print "img: \n%s\n" % img.prettify()
# Table for photo and credit
tableTag = Tag(soup,'table')
# Photo
trimgTag = Tag(soup, 'tr')
tdimgTag = Tag(soup, 'td')
tdimgTag.insert(0,img)
trimgTag.insert(0,tdimgTag)
tableTag.insert(0,trimgTag)
# Credit
trcreditTag = Tag(soup, 'tr')
tdcreditTag = Tag(soup, 'td')
tdcreditTag['class'] = 'credit'
credit = soup.find('td',{'class':'photoCredit'})
if credit:
tdcreditTag.insert(0,NavigableString(credit.renderContents()))
else:
credit = img['credit']
if credit:
tdcreditTag.insert(0,NavigableString(credit))
else:
tdcreditTag.insert(0,NavigableString(''))
trcreditTag.insert(0,tdcreditTag)
tableTag.insert(1,trcreditTag)
dtc = 0
divTag.insert(dtc,tableTag)
dtc += 1
if False:
# Add the caption in the table
tableCaptionTag = Tag(soup,'caption')
tableCaptionTag.insert(0,soup.find('td',{'class':'photoCredit'}).renderContents())
tableTag.insert(1,tableCaptionTag)
divTag.insert(dtc,tableTag)
dtc += 1
body.insert(1,divTag)
else:
# Add the caption below the table
#print "Looking for caption in this soup:\n%s" % img.prettify()
captionTag = Tag(soup,'p')
captionTag['class'] = 'caption'
if hasattr(img,'alt') and img['alt']:
captionTag.insert(0,NavigableString('<blockquote>%s</blockquote>' % img['alt']))
divTag.insert(dtc, captionTag)
dtc += 1
else:
try:
captionTag.insert(0,NavigableString('<blockquote>%s</blockquote>' % img['cutline']))
divTag.insert(dtc, captionTag)
dtc += 1
except:
pass
hrTag = Tag(soup, 'hr')
divTag.insert(dtc, hrTag)
dtc += 1
# Delete <div id="applyMainStoryPhoto"
photoJunk = soup.find('div',{'id':'applyMainStoryPhoto'})
if photoJunk:
photoJunk.extract()
# Insert img after headline
tag = body.find(True)
insertLoc = 0
headline_found = False
while True:
# Scan the top-level tags
insertLoc += 1
if hasattr(tag,'class') and tag['class'] == 'headline':
headline_found = True
body.insert(insertLoc,divTag)
break
tag = tag.nextSibling
if not tag:
break
if not headline_found:
# Monolithic <div> - restructure
tag = body.find(True)
while True:
insertLoc += 1
try:
if hasattr(tag,'class') and tag['class'] == 'headline':
headline_found = True
tag.insert(insertLoc,divTag)
break
except:
pass
tag = tag.next
if not tag:
break
# Yank out headline, img and caption
headline = body.find('h2','headline')
img = body.find('div','image')
caption = body.find('p''class')
# body(0) is calibre_navbar
# body(1) is <div class="item">
btc = 1
headline.extract()
body.insert(1, headline)
btc += 1
if img:
img.extract()
body.insert(btc, img)
btc += 1
if caption:
caption.extract()
body.insert(btc, caption)
btc += 1
if len(imgs) > 1:
if True:
[img.extract() for img in imgs[1:]]
else:
# Format the remaining images
# This doesn't work yet
for img in imgs[1:]:
print "img:\n%s\n" % img.prettify()
divTag = Tag(soup, 'div')
divTag['class'] = 'image'
# Table for photo and credit
tableTag = Tag(soup,'table')
# Photo
trimgTag = Tag(soup, 'tr')
tdimgTag = Tag(soup, 'td')
tdimgTag.insert(0,img)
trimgTag.insert(0,tdimgTag)
tableTag.insert(0,trimgTag)
# Credit
trcreditTag = Tag(soup, 'tr')
tdcreditTag = Tag(soup, 'td')
tdcreditTag['class'] = 'credit'
try:
tdcreditTag.insert(0,NavigableString(img['credit']))
except:
tdcreditTag.insert(0,NavigableString(''))
trcreditTag.insert(0,tdcreditTag)
tableTag.insert(1,trcreditTag)
divTag.insert(0,tableTag)
soup.img.replaceWith(divTag)
return soup
def postprocess_book(self, oeb, opts, log) :
def extract_byline(href) :
# <meta name="byline" content=
soup = BeautifulSoup(str(oeb.manifest.hrefs[href]))
byline = soup.find('div',attrs={'class':'byline'})
if byline:
byline['class'] = 'byline'
# Replace comma with middot
byline.contents[0].replaceWith(re.sub(u",", u" &middot;",
byline.renderContents(encoding=None)))
return byline.renderContents(encoding=None)
else :
paras = soup.findAll(text=True)
for para in paras:
if para.startswith("Copyright"):
return para[len('Copyright xxxx '):para.find('.')]
return None
def extract_description(href) :
soup = BeautifulSoup(str(oeb.manifest.hrefs[href]))
description = soup.find('meta',attrs={'name':'description'})
if description :
return self.massageNCXText(description['content'])
else:
# Take first paragraph of article
articleBody = soup.find('div',attrs={'id':['articleBody','item']})
if articleBody:
paras = articleBody.findAll('p')
for p in paras:
if p.renderContents() > '' :
return self.massageNCXText(self.tag_to_string(p,use_alt=False))
else:
print "Didn't find <div id='articleBody'> in this soup:\n%s" % soup.prettify()
return None
# Method entry point here
# Single section toc looks different than multi-section tocs
if oeb.toc.depth() == 2 :
for article in oeb.toc :
if article.author is None :
article.author = extract_byline(article.href)
if article.description is None :
article.description = extract_description(article.href)
elif oeb.toc.depth() == 3 :
for section in oeb.toc :
for article in section :
article.author = extract_byline(article.href)
'''
if article.author is None :
article.author = self.massageNCXText(extract_byline(article.href))
else:
article.author = self.massageNCXText(article.author)
'''
if article.description is None :
article.description = extract_description(article.href)
def strip_anchors(self,soup):
paras = soup.findAll(True)
for para in paras:
aTags = para.findAll('a')
for a in aTags:
if a.img is None:
a.replaceWith(a.renderContents().decode('cp1252','replace'))
return soup

View File

@ -0,0 +1,20 @@
from calibre.web.feeds.news import BasicNewsRecipe
class AdvancedUserRecipe1303841067(BasicNewsRecipe):
title = u'Welt der Physik'
__author__ = 'schuster'
remove_tags_befor = [dict(name='div', attrs={'class':'inhalt_bild_text_printonly'})]
remove_tags_after = [dict(name='span', attrs={'class':'clearinhalt_bild'})]
remove_tags = [dict(attrs={'class':['invisible', 'searchfld', 'searchbtn', 'topnavi', 'topsearch']}),
dict(id=['naservice', 'phservicemenu', '',]),
dict(name=['naservice'])]
oldest_article = 7
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
language = 'de'
remove_javascript = True
feeds = [(u'Nachrichten und Neuigkeiten', u'http://www.weltderphysik.de/rss/alles.xml')]

53
recipes/ziuaveche.recipe Normal file
View File

@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
#!/usr/bin/env python
__license__ = 'GPL v3'
__copyright__ = u'2011, Silviu Cotoar\u0103'
'''
ziuaveche.ro
'''
from calibre.web.feeds.news import BasicNewsRecipe
class ZiuaVeche(BasicNewsRecipe):
title = u'Ziua Veche'
__author__ = u'Silviu Cotoar\u0103'
description = 'Cotidian online'
publisher = 'Ziua Veche'
oldest_article = 5
language = 'ro'
max_articles_per_feed = 100
no_stylesheets = True
use_embedded_content = False
category = 'Ziare,Cotidiane,Stiri'
encoding = 'utf-8'
cover_url = 'http://www.ziuaveche.ro/wp-content/themes/tema/images/zv-logo-alb-old.png'
conversion_options = {
'comments' : description
,'tags' : category
,'language' : language
,'publisher' : publisher
}
keep_only_tags = [
dict(name='div', attrs={'id':'singlePost'})
]
remove_tags = [
dict(name='div', attrs={'id':'LikePluginPagelet'})
]
remove_tags_after = [
dict(name='div', attrs={'id':'LikePluginPagelet'})
]
feeds = [
(u'Feeds', u'http://www.ziuaveche.ro/feed/rss')
]
def preprocess_html(self, soup):
return self.adeify_images(soup)

View File

@ -23,6 +23,9 @@ wWinMain(HINSTANCE Inst, HINSTANCE PrevInst,
ret = execute_python_entrypoint(BASENAME, MODULE, FUNCTION, ret = execute_python_entrypoint(BASENAME, MODULE, FUNCTION,
stdout_redirect, stderr_redirect); stdout_redirect, stderr_redirect);
if (stdout != NULL) fclose(stdout);
if (stderr != NULL) fclose(stderr);
DeleteFile(stdout_redirect); DeleteFile(stdout_redirect);
DeleteFile(stderr_redirect); DeleteFile(stderr_redirect);

View File

@ -4,7 +4,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__ = u'calibre' __appname__ = u'calibre'
numeric_version = (0, 7, 59) numeric_version = (0, 8, 0)
__version__ = u'.'.join(map(unicode, numeric_version)) __version__ = u'.'.join(map(unicode, numeric_version))
__author__ = u"Kovid Goyal <kovid@kovidgoyal.net>" __author__ = u"Kovid Goyal <kovid@kovidgoyal.net>"

View File

@ -449,7 +449,7 @@ class CatalogPlugin(Plugin): # {{{
['author_sort','authors','comments','cover','formats', ['author_sort','authors','comments','cover','formats',
'id','isbn','ondevice','pubdate','publisher','rating', 'id','isbn','ondevice','pubdate','publisher','rating',
'series_index','series','size','tags','timestamp', 'series_index','series','size','tags','timestamp',
'title','uuid']) 'title_sort','title','uuid'])
all_custom_fields = set(db.custom_field_keys()) all_custom_fields = set(db.custom_field_keys())
all_fields = all_std_fields.union(all_custom_fields) all_fields = all_std_fields.union(all_custom_fields)
@ -607,6 +607,7 @@ class StoreBase(Plugin): # {{{
supported_platforms = ['windows', 'osx', 'linux'] supported_platforms = ['windows', 'osx', 'linux']
author = 'John Schember' author = 'John Schember'
type = _('Store') type = _('Store')
minimum_calibre_version = (0, 8, 0)
actual_plugin = None actual_plugin = None

View File

@ -613,6 +613,7 @@ from calibre.devices.misc import PALMPRE, AVANT, SWEEX, PDNOVEL, \
from calibre.devices.folder_device.driver import FOLDER_DEVICE_FOR_CONFIG from calibre.devices.folder_device.driver import FOLDER_DEVICE_FOR_CONFIG
from calibre.devices.kobo.driver import KOBO from calibre.devices.kobo.driver import KOBO
from calibre.devices.bambook.driver import BAMBOOK from calibre.devices.bambook.driver import BAMBOOK
from calibre.devices.boeye.driver import BOEYE_BEX, BOEYE_BDX
from calibre.library.catalog import CSV_XML, EPUB_MOBI, BIBTEX from calibre.library.catalog import CSV_XML, EPUB_MOBI, BIBTEX
from calibre.ebooks.epub.fix.unmanifested import Unmanifested from calibre.ebooks.epub.fix.unmanifested import Unmanifested
@ -743,6 +744,8 @@ plugins += [
EEEREADER, EEEREADER,
NEXTBOOK, NEXTBOOK,
ITUNES, ITUNES,
BOEYE_BEX,
BOEYE_BDX,
USER_DEFINED, USER_DEFINED,
] ]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
@ -1093,6 +1096,11 @@ class StoreAmazonKindleStore(StoreBase):
description = _('Kindle books from Amazon') description = _('Kindle books from Amazon')
actual_plugin = 'calibre.gui2.store.amazon_plugin:AmazonKindleStore' actual_plugin = 'calibre.gui2.store.amazon_plugin:AmazonKindleStore'
class StoreAmazonDEKindleStore(StoreBase):
name = 'Amazon DE Kindle'
description = _('Kindle eBooks')
actual_plugin = 'calibre.gui2.store.amazon_de_plugin:AmazonDEKindleStore'
class StoreAmazonUKKindleStore(StoreBase): class StoreAmazonUKKindleStore(StoreBase):
name = 'Amazon UK Kindle' name = 'Amazon UK Kindle'
description = _('Kindle books from Amazon.uk') description = _('Kindle books from Amazon.uk')
@ -1108,6 +1116,11 @@ class StoreBNStore(StoreBase):
description = _('Books, Textbooks, eBooks, Toys, Games and More.') description = _('Books, Textbooks, eBooks, Toys, Games and More.')
actual_plugin = 'calibre.gui2.store.bn_plugin:BNStore' actual_plugin = 'calibre.gui2.store.bn_plugin:BNStore'
class StoreBeamEBooksDEStore(StoreBase):
name = 'Beam EBooks DE'
description = _('der eBook Shop')
actual_plugin = 'calibre.gui2.store.beam_ebooks_de_plugin:BeamEBooksDEStore'
class StoreBeWriteStore(StoreBase): class StoreBeWriteStore(StoreBase):
name = 'BeWrite Books' name = 'BeWrite Books'
description = _('Publishers of fine books.') description = _('Publishers of fine books.')
@ -1123,7 +1136,12 @@ class StoreEbookscomStore(StoreBase):
description = _('The digital bookstore.') description = _('The digital bookstore.')
actual_plugin = 'calibre.gui2.store.ebooks_com_plugin:EbookscomStore' actual_plugin = 'calibre.gui2.store.ebooks_com_plugin:EbookscomStore'
class StoreEHarlequinStoretore(StoreBase): class StoreEPubBuyDEStore(StoreBase):
name = 'EPUBBuy DE'
description = _('EPUBReaders eBook Shop')
actual_plugin = 'calibre.gui2.store.epubbuy_de_plugin:EPubBuyDEStore'
class StoreEHarlequinStore(StoreBase):
name = 'eHarlequin' name = 'eHarlequin'
description = _('entertain, enrich, inspire.') description = _('entertain, enrich, inspire.')
actual_plugin = 'calibre.gui2.store.eharlequin_plugin:EHarlequinStore' actual_plugin = 'calibre.gui2.store.eharlequin_plugin:EHarlequinStore'
@ -1133,6 +1151,11 @@ class StoreFeedbooksStore(StoreBase):
description = _('Read anywhere.') description = _('Read anywhere.')
actual_plugin = 'calibre.gui2.store.feedbooks_plugin:FeedbooksStore' actual_plugin = 'calibre.gui2.store.feedbooks_plugin:FeedbooksStore'
class StoreFoylesUKStore(StoreBase):
name = 'Foyles UK'
description = _('Foyles of London, online')
actual_plugin = 'calibre.gui2.store.foyles_uk_plugin:FoylesUKStore'
class StoreGutenbergStore(StoreBase): class StoreGutenbergStore(StoreBase):
name = 'Project Gutenberg' name = 'Project Gutenberg'
description = _('The first producer of free ebooks.') description = _('The first producer of free ebooks.')
@ -1168,22 +1191,23 @@ class StoreWaterstonesUKStore(StoreBase):
description = _('Feel every word') description = _('Feel every word')
actual_plugin = 'calibre.gui2.store.waterstones_uk_plugin:WaterstonesUKStore' actual_plugin = 'calibre.gui2.store.waterstones_uk_plugin:WaterstonesUKStore'
class StoreFoylesUKStore(StoreBase): class StoreWeightlessBooksStore(StoreBase):
name = 'Foyles UK' name = 'Weightless Books'
description = _('Foyles of London, online') description = '(e)Books That Don\'t Weigh You Down'
actual_plugin = 'calibre.gui2.store.foyles_uk_plugin:FoylesUKStore' actual_plugin = 'calibre.gui2.store.weightless_books_plugin:WeightlessBooksStore'
class AmazonDEKindleStore(StoreBase): class StoreWizardsTowerBooksStore(StoreBase):
name = 'Amazon DE Kindle' name = 'Wizards Tower Books'
description = _('Kindle eBooks') description = 'Wizard\'s Tower Press'
actual_plugin = 'calibre.gui2.store.amazon_de_plugin:AmazonDEKindleStore' actual_plugin = 'calibre.gui2.store.wizards_tower_books_plugin:WizardsTowerBooksStore'
plugins += [StoreAmazonKindleStore, AmazonDEKindleStore, StoreAmazonUKKindleStore, plugins += [StoreAmazonKindleStore, StoreAmazonDEKindleStore, StoreAmazonUKKindleStore,
StoreBaenWebScriptionStore, StoreBNStore, StoreBaenWebScriptionStore, StoreBNStore,
StoreBeWriteStore, StoreDieselEbooksStore, StoreEbookscomStore, StoreBeamEBooksDEStore, StoreBeWriteStore,
StoreEHarlequinStoretore, StoreFeedbooksStore, StoreDieselEbooksStore, StoreEbookscomStore, StoreEPubBuyDEStore,
StoreEHarlequinStore, StoreFeedbooksStore,
StoreFoylesUKStore, StoreGutenbergStore, StoreKoboStore, StoreManyBooksStore, StoreFoylesUKStore, StoreGutenbergStore, StoreKoboStore, StoreManyBooksStore,
StoreMobileReadStore, StoreOpenLibraryStore, StoreSmashwordsStore, StoreMobileReadStore, StoreOpenLibraryStore, StoreSmashwordsStore,
StoreWaterstonesUKStore] StoreWaterstonesUKStore, StoreWeightlessBooksStore, StoreWizardsTowerBooksStore]
# }}} # }}}

View File

@ -92,8 +92,7 @@ def restore_plugin_state_to_default(plugin_or_name):
config['enabled_plugins'] = ep config['enabled_plugins'] = ep
default_disabled_plugins = set([ default_disabled_plugins = set([
'Douban Books', 'Douban.com covers', 'Nicebooks', 'Nicebooks covers', 'Overdrive',
'Fictionwise', 'Kent District Library'
]) ])
def is_disabled(plugin): def is_disabled(plugin):

View File

@ -62,7 +62,7 @@ class ANDROID(USBMS):
0x502 : { 0x3203 : [0x0100]}, 0x502 : { 0x3203 : [0x0100]},
# Dell # Dell
0x413c : { 0xb007 : [0x0100, 0x0224]}, 0x413c : { 0xb007 : [0x0100, 0x0224, 0x0226]},
# LG # LG
0x1004 : { 0x61cc : [0x100], 0x61ce : [0x100], 0x618e : [0x226] }, 0x1004 : { 0x61cc : [0x100], 0x61ce : [0x100], 0x618e : [0x226] },

View File

@ -203,9 +203,11 @@ class ITUNES(DriverBase):
# 0x1294 iPhone 3GS # 0x1294 iPhone 3GS
# 0x1297 iPhone 4 # 0x1297 iPhone 4
# 0x129a iPad # 0x129a iPad
# 0x12a2 iPad2 # 0x129f iPad2 (WiFi)
# 0x12a2 iPad2 (GSM)
# 0x12a3 iPad2 (CDMA)
VENDOR_ID = [0x05ac] VENDOR_ID = [0x05ac]
PRODUCT_ID = [0x1292,0x1293,0x1294,0x1297,0x1299,0x129a,0x12a2] PRODUCT_ID = [0x1292,0x1293,0x1294,0x1297,0x1299,0x129a,0x129f,0x12a2,0x12a3]
BCD = [0x01] BCD = [0x01]
# Plugboard ID # Plugboard ID
@ -506,7 +508,7 @@ class ITUNES(DriverBase):
if self.iTunes: if self.iTunes:
# Check for connected book-capable device # Check for connected book-capable device
self.sources = self._get_sources() self.sources = self._get_sources()
if 'iPod' in self.sources: if 'iPod' in self.sources and not self.ejected:
#if DEBUG: #if DEBUG:
#sys.stdout.write('.') #sys.stdout.write('.')
#sys.stdout.flush() #sys.stdout.flush()
@ -2036,16 +2038,17 @@ class ITUNES(DriverBase):
if 'iPod' in self.sources: if 'iPod' in self.sources:
connected_device = self.sources['iPod'] connected_device = self.sources['iPod']
device = self.iTunes.sources[connected_device] device = self.iTunes.sources[connected_device]
dev_books = None
for pl in device.playlists(): for pl in device.playlists():
if pl.special_kind() == appscript.k.Books: if pl.special_kind() == appscript.k.Books:
if DEBUG: if DEBUG:
self.log.info(" Book playlist: '%s'" % (pl.name())) self.log.info(" Book playlist: '%s'" % (pl.name()))
books = pl.file_tracks() dev_books = pl.file_tracks()
break break
else: else:
self.log.error(" book_playlist not found") self.log.error(" book_playlist not found")
for book in books: for book in dev_books:
# This may need additional entries for international iTunes users # This may need additional entries for international iTunes users
if book.kind() in self.Audiobooks: if book.kind() in self.Audiobooks:
if DEBUG: if DEBUG:

View File

View File

@ -0,0 +1,56 @@
__license__ = 'GPL v3'
__copyright__ = '2011, Ken <ken at szboeye.com>'
__docformat__ = 'restructuredtext en'
'''
Device driver for BOEYE serial readers
'''
from calibre.devices.usbms.driver import USBMS
class BOEYE_BEX(USBMS):
name = 'BOEYE BEX reader driver'
gui_name = 'BOEYE BEX'
description = _('Communicate with BOEYE BEX Serial eBook readers.')
author = 'szboeye'
supported_platforms = ['windows', 'osx', 'linux']
FORMATS = ['epub', 'mobi', 'fb2', 'lit', 'prc', 'pdf', 'rtf', 'txt', 'djvu', 'doc', 'chm', 'html', 'zip', 'pdb']
VENDOR_ID = [0x0085]
PRODUCT_ID = [0x600]
VENDOR_NAME = 'LINUX'
WINDOWS_MAIN_MEM = 'FILE-STOR_GADGET'
OSX_MAIN_MEM = 'Linux File-Stor Gadget Media'
MAIN_MEMORY_VOLUME_LABEL = 'BOEYE BEX Storage Card'
EBOOK_DIR_MAIN = 'Documents'
SUPPORTS_SUB_DIRS = True
class BOEYE_BDX(USBMS):
name = 'BOEYE BDX reader driver'
gui_name = 'BOEYE BDX'
description = _('Communicate with BOEYE BDX serial eBook readers.')
author = 'szboeye'
supported_platforms = ['windows', 'osx', 'linux']
FORMATS = ['epub', 'mobi', 'fb2', 'lit', 'prc', 'pdf', 'rtf', 'txt', 'djvu', 'doc', 'chm', 'html', 'zip', 'pdb']
VENDOR_ID = [0x0085]
PRODUCT_ID = [0x800]
VENDOR_NAME = 'LINUX'
WINDOWS_MAIN_MEM = 'FILE-STOR_GADGET'
WINDOWS_CARD_A_MEM = 'FILE-STOR_GADGET'
OSX_MAIN_MEM = 'Linux File-Stor Gadget Media'
OSX_CARD_A_MEM = 'Linux File-Stor Gadget Media'
MAIN_MEMORY_VOLUME_LABEL = 'BOEYE BDX Internal Memory'
STORAGE_CARD_VOLUME_LABEL = 'BOEYE BDX Storage Card'
EBOOK_DIR_MAIN = 'Documents'
EBOOK_DIR_CARD_A = 'Documents'
SUPPORTS_SUB_DIRS = True

View File

@ -64,7 +64,7 @@ class HANLINV3(USBMS):
return names return names
def linux_swap_drives(self, drives): def linux_swap_drives(self, drives):
if len(drives) < 2: return drives if len(drives) < 2 or not drives[1] or not drives[2]: return drives
drives = list(drives) drives = list(drives)
t = drives[0] t = drives[0]
drives[0] = drives[1] drives[0] = drives[1]
@ -95,7 +95,6 @@ class HANLINV5(HANLINV3):
gui_name = 'Hanlin V5' gui_name = 'Hanlin V5'
description = _('Communicate with Hanlin V5 eBook readers.') description = _('Communicate with Hanlin V5 eBook readers.')
VENDOR_ID = [0x0492] VENDOR_ID = [0x0492]
PRODUCT_ID = [0x8813] PRODUCT_ID = [0x8813]
BCD = [0x319] BCD = [0x319]

View File

@ -164,7 +164,7 @@ class APNXBuilder(object):
if c == '/': if c == '/':
closing = True closing = True
continue continue
elif c in ('d', 'p'): elif c == 'p':
if closing: if closing:
in_p = False in_p = False
else: else:

View File

@ -38,7 +38,7 @@ class KOBO(USBMS):
VENDOR_ID = [0x2237] VENDOR_ID = [0x2237]
PRODUCT_ID = [0x4161] PRODUCT_ID = [0x4161]
BCD = [0x0110] BCD = [0x0110, 0x0323]
VENDOR_NAME = ['KOBO_INC', 'KOBO'] VENDOR_NAME = ['KOBO_INC', 'KOBO']
WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['.KOBOEREADER', 'EREADER'] WINDOWS_MAIN_MEM = WINDOWS_CARD_A_MEM = ['.KOBOEREADER', 'EREADER']

View File

@ -5,7 +5,6 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
from calibre.devices.usbms.driver import USBMS from calibre.devices.usbms.driver import USBMS
from calibre.ebooks import BOOK_EXTENSIONS
class USER_DEFINED(USBMS): class USER_DEFINED(USBMS):
@ -69,9 +68,9 @@ class USER_DEFINED(USBMS):
'is prepended to any send_to_device template') + '</p>', 'is prepended to any send_to_device template') + '</p>',
] ]
EXTRA_CUSTOMIZATION_DEFAULT = [ EXTRA_CUSTOMIZATION_DEFAULT = [
'0x0000', '0xffff',
'0x0000', '0xffff',
'0x0000', '0xffff',
None, None,
'', '',
'', '',

View File

@ -68,7 +68,8 @@ def check_command_line_options(parser, args, log):
raise SystemExit(1) raise SystemExit(1)
output = args[2] output = args[2]
if output.startswith('.') and output != '.': if output.startswith('.') and (output != '.' and not
output.startswith('..')):
output = os.path.splitext(os.path.basename(input))[0]+output output = os.path.splitext(os.path.basename(input))[0]+output
output = os.path.abspath(output) output = os.path.abspath(output)

View File

@ -8,9 +8,10 @@ __docformat__ = 'restructuredtext en'
import os import os
from calibre import walk from calibre import guess_type, walk
from calibre.customize.conversion import InputFormatPlugin from calibre.customize.conversion import InputFormatPlugin
from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.chardet import xml_to_unicode
from calibre.ebooks.metadata.opf2 import OPF
from calibre.utils.zipfile import ZipFile from calibre.utils.zipfile import ZipFile
class HTMLZInput(InputFormatPlugin): class HTMLZInput(InputFormatPlugin):
@ -27,7 +28,7 @@ class HTMLZInput(InputFormatPlugin):
# Extract content from zip archive. # Extract content from zip archive.
zf = ZipFile(stream) zf = ZipFile(stream)
zf.extractall('.') zf.extractall()
for x in walk('.'): for x in walk('.'):
if os.path.splitext(x)[1].lower() in ('.html', '.xhtml', '.htm'): if os.path.splitext(x)[1].lower() in ('.html', '.xhtml', '.htm'):
@ -71,4 +72,24 @@ class HTMLZInput(InputFormatPlugin):
mi = get_file_type_metadata(stream, file_ext) mi = get_file_type_metadata(stream, file_ext)
meta_info_to_oeb_metadata(mi, oeb.metadata, log) meta_info_to_oeb_metadata(mi, oeb.metadata, log)
# Get the cover path from the OPF.
cover_path = None
opf = None
for x in walk('.'):
if os.path.splitext(x)[1].lower() in ('.opf'):
opf = x
break
if opf:
opf = OPF(opf, basedir=os.getcwd())
cover_path = opf.raster_cover
# Set the cover.
if cover_path:
cdata = None
with open(os.path.join(os.getcwd(), cover_path), 'rb') as cf:
cdata = cf.read()
cover_name = os.path.basename(cover_path)
id, href = oeb.manifest.generate('cover', cover_name)
oeb.manifest.add(id, href, guess_type(cover_name)[0], data=cdata)
oeb.guide.add('cover', 'Cover', href)
return oeb return oeb

View File

@ -7,11 +7,13 @@ __copyright__ = '2011, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os import os
from cStringIO import StringIO
from lxml import etree from lxml import etree
from calibre.customize.conversion import OutputFormatPlugin, \ from calibre.customize.conversion import OutputFormatPlugin, \
OptionRecommendation OptionRecommendation
from calibre.ebooks.metadata.opf2 import OPF, metadata_to_opf
from calibre.ptempfile import TemporaryDirectory from calibre.ptempfile import TemporaryDirectory
from calibre.utils.zipfile import ZipFile from calibre.utils.zipfile import ZipFile
@ -80,9 +82,30 @@ class HTMLZOutput(OutputFormatPlugin):
with open(fname, 'wb') as img: with open(fname, 'wb') as img:
img.write(data) img.write(data)
# Cover
cover_path = None
try:
cover_data = None
if oeb_book.metadata.cover:
term = oeb_book.metadata.cover[0].term
cover_data = oeb_book.guide[term].item.data
if cover_data:
from calibre.utils.magick.draw import save_cover_data_to
cover_path = os.path.join(tdir, 'cover.jpg')
with open(cover_path, 'w') as cf:
cf.write('')
save_cover_data_to(cover_data, cover_path)
except:
import traceback
traceback.print_exc()
# Metadata # Metadata
with open(os.path.join(tdir, 'metadata.opf'), 'wb') as mdataf: with open(os.path.join(tdir, 'metadata.opf'), 'wb') as mdataf:
mdataf.write(etree.tostring(oeb_book.metadata.to_opf1())) opf = OPF(StringIO(etree.tostring(oeb_book.metadata.to_opf1())))
mi = opf.to_book_metadata()
if cover_path:
mi.cover = 'cover.jpg'
mdataf.write(metadata_to_opf(mi))
htmlz = ZipFile(output_path, 'w') htmlz = ZipFile(output_path, 'w')
htmlz.add_dir(tdir) htmlz.add_dir(tdir)

View File

@ -8,7 +8,6 @@ Read meta information from extZ (TXTZ, HTMLZ...) files.
''' '''
import os import os
import posixpath
from cStringIO import StringIO from cStringIO import StringIO
@ -31,9 +30,9 @@ def get_metadata(stream, extract_cover=True):
opf = OPF(opf_stream) opf = OPF(opf_stream)
mi = opf.to_book_metadata() mi = opf.to_book_metadata()
if extract_cover: if extract_cover:
cover_name = opf.raster_cover cover_href = opf.raster_cover
if cover_name: if cover_href:
mi.cover_data = ('jpg', zf.read(cover_name)) mi.cover_data = (os.path.splitext(cover_href)[1], zf.read(cover_href))
except: except:
return mi return mi
return mi return mi
@ -59,17 +58,17 @@ def set_metadata(stream, mi):
except: except:
pass pass
if new_cdata: if new_cdata:
raster_cover = opf.raster_cover cpath = opf.raster_cover
if not raster_cover: if not cpath:
raster_cover = 'cover.jpg' cpath = 'cover.jpg'
cpath = posixpath.join(posixpath.dirname(opf_path), raster_cover)
new_cover = _write_new_cover(new_cdata, cpath) new_cover = _write_new_cover(new_cdata, cpath)
replacements[cpath] = open(new_cover.name, 'rb') replacements[cpath] = open(new_cover.name, 'rb')
mi.cover = cpath
# Update the metadata. # Update the metadata.
opf.smart_update(mi, replace_metadata=True) opf.smart_update(mi, replace_metadata=True)
newopf = StringIO(opf.render()) newopf = StringIO(opf.render())
safe_replace(stream, opf_path, newopf, extra_replacements=replacements) safe_replace(stream, opf_path, newopf, extra_replacements=replacements, add_missing=True)
# Cleanup temporary files. # Cleanup temporary files.
try: try:

View File

@ -966,6 +966,8 @@ class OPF(object): # {{{
cover_id = covers[0].get('content') cover_id = covers[0].get('content')
for item in self.itermanifest(): for item in self.itermanifest():
if item.get('id', None) == cover_id: if item.get('id', None) == cover_id:
mt = item.get('media-type', '')
if 'xml' not in mt:
return item.get('href', None) return item.get('href', None)
@dynamic_property @dynamic_property

View File

@ -338,7 +338,7 @@ class Amazon(Source):
q['field-author'] = ' '.join(author_tokens) q['field-author'] = ' '.join(author_tokens)
if not ('field-keywords' in q or 'field-isbn' in q or if not ('field-keywords' in q or 'field-isbn' in q or
('field-title' in q and 'field-author' in q)): ('field-title' in q)):
# Insufficient metadata to make an identify query # Insufficient metadata to make an identify query
return None return None

View File

@ -212,6 +212,9 @@ class Source(Plugin):
def is_customizable(self): def is_customizable(self):
return True return True
def customization_help(self):
return 'This plugin can only be customized using the GUI'
def config_widget(self): def config_widget(self):
from calibre.gui2.metadata.config import ConfigWidget from calibre.gui2.metadata.config import ConfigWidget
return ConfigWidget(self) return ConfigWidget(self)
@ -288,10 +291,10 @@ class Source(Plugin):
parts = parts[1:] + parts[:1] parts = parts[1:] + parts[:1]
for tok in parts: for tok in parts:
tok = remove_pat.sub('', tok).strip() tok = remove_pat.sub('', tok).strip()
if len(tok) > 2 and tok.lower() not in ('von', ): if len(tok) > 2 and tok.lower() not in ('von', 'van',
_('Unknown').lower()):
yield tok yield tok
def get_title_tokens(self, title, strip_joiners=True, strip_subtitle=False): def get_title_tokens(self, title, strip_joiners=True, strip_subtitle=False):
''' '''
Take a title and return a list of tokens useful for an AND search query. Take a title and return a list of tokens useful for an AND search query.

View File

@ -13,6 +13,7 @@ from Queue import Queue, Empty
from threading import Thread from threading import Thread
from io import BytesIO from io import BytesIO
from operator import attrgetter from operator import attrgetter
from urlparse import urlparse
from calibre.customize.ui import metadata_plugins, all_metadata_plugins from calibre.customize.ui import metadata_plugins, all_metadata_plugins
from calibre.ebooks.metadata.sources.base import create_log, msprefs from calibre.ebooks.metadata.sources.base import create_log, msprefs
@ -402,7 +403,7 @@ def identify(log, abort, # {{{
result.identify_plugin = plugin result.identify_plugin = plugin
if msprefs['txt_comments']: if msprefs['txt_comments']:
if plugin.has_html_comments and result.comments: if plugin.has_html_comments and result.comments:
result.comments = html2text(r.comments) result.comments = html2text(result.comments)
log('The identify phase took %.2f seconds'%(time.time() - start_time)) log('The identify phase took %.2f seconds'%(time.time() - start_time))
log('The longest time (%f) was taken by:'%longest, lp) log('The longest time (%f) was taken by:'%longest, lp)
@ -458,6 +459,14 @@ def urls_from_identifiers(identifiers): # {{{
if oclc: if oclc:
ans.append(('OCLC', 'oclc', oclc, ans.append(('OCLC', 'oclc', oclc,
'http://www.worldcat.org/oclc/'+oclc)) 'http://www.worldcat.org/oclc/'+oclc))
url = identifiers.get('uri', None)
if url is None:
url = identifiers.get('url', None)
if url and url.startswith('http'):
url = url[:8].replace('|', ':') + url[8:].replace('|', ',')
parts = urlparse(url)
name = parts.netloc
ans.append((name, 'url', url, url))
return ans return ans
# }}} # }}}

View File

@ -41,7 +41,7 @@ class OverDrive(Source):
cached_cover_url_is_reliable = True cached_cover_url_is_reliable = True
options = ( options = (
Option('get_full_metadata', 'bool', False, Option('get_full_metadata', 'bool', True,
_('Download all metadata (slow)'), _('Download all metadata (slow)'),
_('Enable this option to gather all metadata available from Overdrive.')), _('Enable this option to gather all metadata available from Overdrive.')),
) )

View File

@ -7,6 +7,8 @@ __docformat__ = 'restructuredtext en'
Convert an ODT file into a Open Ebook Convert an ODT file into a Open Ebook
''' '''
import os import os
from lxml import etree
from odf.odf2xhtml import ODF2XHTML from odf.odf2xhtml import ODF2XHTML
from calibre import CurrentDir, walk from calibre import CurrentDir, walk
@ -23,7 +25,51 @@ class Extract(ODF2XHTML):
with open(name, 'wb') as f: with open(name, 'wb') as f:
f.write(data) f.write(data)
def __call__(self, stream, odir): def filter_css(self, html, log):
root = etree.fromstring(html)
style = root.xpath('//*[local-name() = "style" and @type="text/css"]')
if style:
style = style[0]
css = style.text
if css:
style.text, sel_map = self.do_filter_css(css)
for x in root.xpath('//*[@class]'):
extra = []
orig = x.get('class')
for cls in orig.split():
extra.extend(sel_map.get(cls, []))
if extra:
x.set('class', orig + ' ' + ' '.join(extra))
html = etree.tostring(root, encoding='utf-8',
xml_declaration=True)
return html
def do_filter_css(self, css):
from cssutils import parseString
from cssutils.css import CSSRule
sheet = parseString(css)
rules = list(sheet.cssRules.rulesOfType(CSSRule.STYLE_RULE))
sel_map = {}
count = 0
for r in rules:
# Check if we have only class selectors for this rule
nc = [x for x in r.selectorList if not
x.selectorText.startswith('.')]
if len(r.selectorList) > 1 and not nc:
# Replace all the class selectors with a single class selector
# This will be added to the class attribute of all elements
# that have one of these selectors.
replace_name = 'c_odt%d'%count
count += 1
for sel in r.selectorList:
s = sel.selectorText[1:]
if s not in sel_map:
sel_map[s] = []
sel_map[s].append(replace_name)
r.selectorText = '.'+replace_name
return sheet.cssText, sel_map
def __call__(self, stream, odir, log):
from calibre.utils.zipfile import ZipFile from calibre.utils.zipfile import ZipFile
from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.meta import get_metadata
from calibre.ebooks.metadata.opf2 import OPFCreator from calibre.ebooks.metadata.opf2 import OPFCreator
@ -32,13 +78,17 @@ class Extract(ODF2XHTML):
if not os.path.exists(odir): if not os.path.exists(odir):
os.makedirs(odir) os.makedirs(odir)
with CurrentDir(odir): with CurrentDir(odir):
print 'Extracting ODT file...' log('Extracting ODT file...')
html = self.odf2xhtml(stream) html = self.odf2xhtml(stream)
# A blanket img specification like this causes problems # A blanket img specification like this causes problems
# with EPUB output as the contaiing element often has # with EPUB output as the containing element often has
# an absolute height and width set that is larger than # an absolute height and width set that is larger than
# the available screen real estate # the available screen real estate
html = html.replace('img { width: 100%; height: 100%; }', '') html = html.replace('img { width: 100%; height: 100%; }', '')
try:
html = self.filter_css(html, log)
except:
log.exception('Failed to filter CSS, conversion may be slow')
with open('index.xhtml', 'wb') as f: with open('index.xhtml', 'wb') as f:
f.write(html.encode('utf-8')) f.write(html.encode('utf-8'))
zf = ZipFile(stream, 'r') zf = ZipFile(stream, 'r')
@ -67,7 +117,7 @@ class ODTInput(InputFormatPlugin):
def convert(self, stream, options, file_ext, log, def convert(self, stream, options, file_ext, log,
accelerators): accelerators):
return Extract()(stream, '.') return Extract()(stream, '.', log)
def postprocess_book(self, oeb, opts, log): def postprocess_book(self, oeb, opts, log):
# Fix <p><div> constructs as the asinine epubchecker complains # Fix <p><div> constructs as the asinine epubchecker complains

View File

@ -32,10 +32,11 @@ class PDFInput(InputFormatPlugin):
def convert_new(self, stream, accelerators): def convert_new(self, stream, accelerators):
from calibre.ebooks.pdf.reflow import PDFDocument from calibre.ebooks.pdf.reflow import PDFDocument
from calibre.utils.cleantext import clean_ascii_chars
if pdfreflow_err: if pdfreflow_err:
raise RuntimeError('Failed to load pdfreflow: ' + pdfreflow_err) raise RuntimeError('Failed to load pdfreflow: ' + pdfreflow_err)
pdfreflow.reflow(stream.read(), 1, -1) pdfreflow.reflow(stream.read(), 1, -1)
xml = open('index.xml', 'rb').read() xml = clean_ascii_chars(open('index.xml', 'rb').read())
PDFDocument(xml, self.opts, self.log) PDFDocument(xml, self.opts, self.log)
return os.path.join(os.getcwd(), 'metadata.opf') return os.path.join(os.getcwd(), 'metadata.opf')

View File

@ -15,7 +15,6 @@ import cStringIO
from lxml import etree from lxml import etree
from calibre.ebooks.metadata import authors_to_string from calibre.ebooks.metadata import authors_to_string
from calibre.utils.filenames import ascii_text
from calibre.utils.magick.draw import save_cover_data_to, identify_data from calibre.utils.magick.draw import save_cover_data_to, identify_data
TAGS = { TAGS = {
@ -79,8 +78,7 @@ def txt2rtf(text):
elif val <= 127: elif val <= 127:
buf.write(x) buf.write(x)
else: else:
repl = ascii_text(x) c = r'\u{0:d}?'.format(val)
c = r'\uc{2}\u{0:d}{1}'.format(val, repl, len(repl))
buf.write(c) buf.write(c)
return buf.getvalue() return buf.getvalue()

View File

@ -34,7 +34,7 @@ if isosx:
) )
gprefs.defaults['action-layout-toolbar'] = ( gprefs.defaults['action-layout-toolbar'] = (
'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', None, 'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', None,
'Choose Library', 'Donate', None, 'Fetch News', 'Save To Disk', 'Choose Library', 'Donate', None, 'Fetch News', 'Store', 'Save To Disk',
'Connect Share', None, 'Remove Books', 'Connect Share', None, 'Remove Books',
) )
gprefs.defaults['action-layout-toolbar-device'] = ( gprefs.defaults['action-layout-toolbar-device'] = (
@ -48,7 +48,7 @@ else:
gprefs.defaults['action-layout-menubar-device'] = () gprefs.defaults['action-layout-menubar-device'] = ()
gprefs.defaults['action-layout-toolbar'] = ( gprefs.defaults['action-layout-toolbar'] = (
'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', None, 'Add Books', 'Edit Metadata', None, 'Convert Books', 'View', None,
'Choose Library', 'Donate', None, 'Fetch News', 'Save To Disk', 'Choose Library', 'Donate', None, 'Fetch News', 'Store', 'Save To Disk',
'Connect Share', None, 'Remove Books', None, 'Help', 'Preferences', 'Connect Share', None, 'Remove Books', None, 'Help', 'Preferences',
) )
gprefs.defaults['action-layout-toolbar-device'] = ( gprefs.defaults['action-layout-toolbar-device'] = (

View File

@ -20,6 +20,9 @@ class GenerateCatalogAction(InterfaceAction):
action_spec = (_('Create a catalog of the books in your calibre library'), 'catalog.png', 'Catalog builder', None) action_spec = (_('Create a catalog of the books in your calibre library'), 'catalog.png', 'Catalog builder', None)
dont_add_to = frozenset(['menubar-device', 'toolbar-device', 'context-menu-device']) dont_add_to = frozenset(['menubar-device', 'toolbar-device', 'context-menu-device'])
def genesis(self):
self.qaction.triggered.connect(self.generate_catalog)
def generate_catalog(self): def generate_catalog(self):
rows = self.gui.library_view.selectionModel().selectedRows() rows = self.gui.library_view.selectionModel().selectedRows()
if not rows or len(rows) < 2: if not rows or len(rows) < 2:

View File

@ -246,7 +246,8 @@ class ChooseLibraryAction(InterfaceAction):
def delete_requested(self, name, location): def delete_requested(self, name, location):
loc = location.replace('/', os.sep) loc = location.replace('/', os.sep)
if not question_dialog(self.gui, _('Are you sure?'), '<p>'+ if not question_dialog(self.gui, _('Are you sure?'), '<p>'+
_('All files from %s will be ' _('<b style="color: red">All files</b> (not just ebooks) '
'from <br><br><b>%s</b><br><br> will be '
'<b>permanently deleted</b>. Are you sure?') % loc, '<b>permanently deleted</b>. Are you sure?') % loc,
show_copy_button=False): show_copy_button=False):
return return

View File

@ -10,7 +10,7 @@ from PyQt4.Qt import QIcon, QMenu, Qt
from calibre.gui2.actions import InterfaceAction from calibre.gui2.actions import InterfaceAction
from calibre.gui2.preferences.main import Preferences from calibre.gui2.preferences.main import Preferences
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
from calibre.constants import DEBUG from calibre.constants import DEBUG, isosx
class PreferencesAction(InterfaceAction): class PreferencesAction(InterfaceAction):
@ -19,7 +19,8 @@ class PreferencesAction(InterfaceAction):
def genesis(self): def genesis(self):
pm = QMenu() pm = QMenu()
pm.addAction(QIcon(I('config.png')), _('Preferences'), self.do_config) acname = _('Change calibre behavior') if isosx else _('Preferences')
pm.addAction(QIcon(I('config.png')), acname, self.do_config)
pm.addAction(QIcon(I('wizard.png')), _('Run welcome wizard'), pm.addAction(QIcon(I('wizard.png')), _('Run welcome wizard'),
self.gui.run_wizard) self.gui.run_wizard)
if not DEBUG: if not DEBUG:

View File

@ -27,7 +27,7 @@ class StoreAction(InterfaceAction):
self.store_menu.clear() self.store_menu.clear()
self.store_menu.addAction(_('Search'), self.search) self.store_menu.addAction(_('Search'), self.search)
self.store_menu.addSeparator() self.store_menu.addSeparator()
for n, p in self.gui.istores.items(): for n, p in sorted(self.gui.istores.items(), key=lambda x: x[0].lower()):
self.store_menu.addAction(n, partial(self.open_store, p)) self.store_menu.addAction(n, partial(self.open_store, p))
self.qaction.setMenu(self.store_menu) self.qaction.setMenu(self.store_menu)

View File

@ -439,6 +439,7 @@ def populate_metadata_page(layout, db, book_id, bulk=False, two_column=False, pa
w = widget_factory(dt, col) w = widget_factory(dt, col)
ans.append(w) ans.append(w)
for c in range(0, len(w.widgets), 2): for c in range(0, len(w.widgets), 2):
w.widgets[c].setWordWrap(True)
w.widgets[c].setBuddy(w.widgets[c+1]) w.widgets[c].setBuddy(w.widgets[c+1])
layout.addWidget(w.widgets[c], row, column) layout.addWidget(w.widgets[c], row, column)
layout.addWidget(w.widgets[c+1], row, column+1) layout.addWidget(w.widgets[c+1], row, column+1)

View File

@ -3,12 +3,13 @@ __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
__license__ = 'GPL v3' __license__ = 'GPL v3'
from PyQt4.Qt import Qt, QDialog, QTableWidgetItem, QAbstractItemView from PyQt4.Qt import (Qt, QDialog, QTableWidgetItem, QAbstractItemView, QIcon,
QDialogButtonBox, QFrame, QLabel, QTimer, QMenu, QApplication)
from calibre.ebooks.metadata import author_to_author_sort from calibre.ebooks.metadata import author_to_author_sort
from calibre.gui2 import error_dialog from calibre.gui2 import error_dialog
from calibre.gui2.dialogs.edit_authors_dialog_ui import Ui_EditAuthorsDialog from calibre.gui2.dialogs.edit_authors_dialog_ui import Ui_EditAuthorsDialog
from calibre.utils.icu import sort_key, strcmp from calibre.utils.icu import sort_key
class tableItem(QTableWidgetItem): class tableItem(QTableWidgetItem):
def __ge__(self, other): def __ge__(self, other):
@ -19,7 +20,7 @@ class tableItem(QTableWidgetItem):
class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog): class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
def __init__(self, parent, db, id_to_select): def __init__(self, parent, db, id_to_select, select_sort):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
Ui_EditAuthorsDialog.__init__(self) Ui_EditAuthorsDialog.__init__(self)
self.setupUi(self) self.setupUi(self)
@ -30,14 +31,23 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
self.buttonBox.accepted.connect(self.accepted) self.buttonBox.accepted.connect(self.accepted)
# Set up the column headings
self.table.setSelectionMode(QAbstractItemView.SingleSelection) self.table.setSelectionMode(QAbstractItemView.SingleSelection)
self.table.setColumnCount(2) self.table.setColumnCount(2)
self.table.setHorizontalHeaderLabels([_('Author'), _('Author sort')]) self.down_arrow_icon = QIcon(I('arrow-down.png'))
self.up_arrow_icon = QIcon(I('arrow-up.png'))
self.blank_icon = QIcon(I('blank.png'))
self.auth_col = QTableWidgetItem(_('Author'))
self.table.setHorizontalHeaderItem(0, self.auth_col)
self.auth_col.setIcon(self.blank_icon)
self.aus_col = QTableWidgetItem(_('Author sort'))
self.table.setHorizontalHeaderItem(1, self.aus_col)
self.aus_col.setIcon(self.up_arrow_icon)
# Add the data
self.authors = {} self.authors = {}
auts = db.get_authors_with_ids() auts = db.get_authors_with_ids()
self.table.setRowCount(len(auts)) self.table.setRowCount(len(auts))
setattr(self.table, '__lt__', lambda x, y: True if strcmp(x, y) < 0 else False)
select_item = None select_item = None
for row, (id, author, sort) in enumerate(auts): for row, (id, author, sort) in enumerate(auts):
author = author.replace('|', ',') author = author.replace('|', ',')
@ -48,7 +58,10 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
self.table.setItem(row, 0, aut) self.table.setItem(row, 0, aut)
self.table.setItem(row, 1, sort) self.table.setItem(row, 1, sort)
if id == id_to_select: if id == id_to_select:
if select_sort:
select_item = sort select_item = sort
else:
select_item = aut
self.table.resizeColumnsToContents() self.table.resizeColumnsToContents()
# set up the cellChanged signal only after the table is filled # set up the cellChanged signal only after the table is filled
@ -69,23 +82,153 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
self.recalc_author_sort.clicked.connect(self.do_recalc_author_sort) self.recalc_author_sort.clicked.connect(self.do_recalc_author_sort)
self.auth_sort_to_author.clicked.connect(self.do_auth_sort_to_author) self.auth_sort_to_author.clicked.connect(self.do_auth_sort_to_author)
# Position on the desired item
if select_item is not None: if select_item is not None:
self.table.setCurrentItem(select_item) self.table.setCurrentItem(select_item)
self.table.editItem(select_item) self.table.editItem(select_item)
self.start_find_pos = select_item.row() * 2 + select_item.column()
else: else:
self.table.setCurrentCell(0, 0) self.table.setCurrentCell(0, 0)
self.start_find_pos = -1
# set up the search box
self.find_box.initialize('manage_authors_search')
self.find_box.lineEdit().returnPressed.connect(self.do_find)
self.find_box.editTextChanged.connect(self.find_text_changed)
self.find_button.clicked.connect(self.do_find)
l = QLabel(self.table)
self.not_found_label = l
l.setFrameStyle(QFrame.StyledPanel)
l.setAutoFillBackground(True)
l.setText(_('No matches found'))
l.setAlignment(Qt.AlignVCenter)
l.resize(l.sizeHint())
l.move(10,20)
l.setVisible(False)
self.not_found_label.move(40, 40)
self.not_found_label_timer = QTimer()
self.not_found_label_timer.setSingleShot(True)
self.not_found_label_timer.timeout.connect(
self.not_found_label_timer_event, type=Qt.QueuedConnection)
self.table.setContextMenuPolicy(Qt.CustomContextMenu)
self.table.customContextMenuRequested .connect(self.show_context_menu)
def show_context_menu(self, point):
self.context_item = self.table.itemAt(point)
case_menu = QMenu(_('Change Case'))
action_upper_case = case_menu.addAction(_('Upper Case'))
action_lower_case = case_menu.addAction(_('Lower Case'))
action_swap_case = case_menu.addAction(_('Swap Case'))
action_title_case = case_menu.addAction(_('Title Case'))
action_capitalize = case_menu.addAction(_('Capitalize'))
action_upper_case.triggered.connect(self.upper_case)
action_lower_case.triggered.connect(self.lower_case)
action_swap_case.triggered.connect(self.swap_case)
action_title_case.triggered.connect(self.title_case)
action_capitalize.triggered.connect(self.capitalize)
m = self.au_context_menu = QMenu()
ca = m.addAction(_('Copy'))
ca.triggered.connect(self.copy_to_clipboard)
ca = m.addAction(_('Paste'))
ca.triggered.connect(self.paste_from_clipboard)
m.addSeparator()
if self.context_item.column() == 0:
ca = m.addAction(_('Copy to author sort'))
ca.triggered.connect(self.copy_au_to_aus)
else:
ca = m.addAction(_('Copy to author'))
ca.triggered.connect(self.copy_aus_to_au)
m.addSeparator()
m.addMenu(case_menu)
m.exec_(self.table.mapToGlobal(point))
def copy_to_clipboard(self):
cb = QApplication.clipboard()
cb.setText(unicode(self.context_item.text()))
def paste_from_clipboard(self):
cb = QApplication.clipboard()
self.context_item.setText(cb.text())
def upper_case(self):
self.context_item.setText(icu_upper(unicode(self.context_item.text())))
def lower_case(self):
self.context_item.setText(icu_lower(unicode(self.context_item.text())))
def swap_case(self):
self.context_item.setText(unicode(self.context_item.text()).swapcase())
def title_case(self):
from calibre.utils.titlecase import titlecase
self.context_item.setText(titlecase(unicode(self.context_item.text())))
def capitalize(self):
from calibre.utils.icu import capitalize
self.context_item.setText(capitalize(unicode(self.context_item.text())))
def copy_aus_to_au(self):
row = self.context_item.row()
dest = self.table.item(row, 0)
dest.setText(self.context_item.text())
def copy_au_to_aus(self):
row = self.context_item.row()
dest = self.table.item(row, 1)
dest.setText(self.context_item.text())
def not_found_label_timer_event(self):
self.not_found_label.setVisible(False)
def find_text_changed(self):
self.start_find_pos = -1
def do_find(self):
self.not_found_label.setVisible(False)
# For some reason the button box keeps stealing the RETURN shortcut.
# Steal it back
self.buttonBox.button(QDialogButtonBox.Ok).setDefault(False)
self.buttonBox.button(QDialogButtonBox.Ok).setAutoDefault(False)
self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(False)
self.buttonBox.button(QDialogButtonBox.Cancel).setAutoDefault(False)
st = icu_lower(unicode(self.find_box.currentText()))
for i in range(0, self.table.rowCount()*2):
self.start_find_pos = (self.start_find_pos + 1) % (self.table.rowCount()*2)
r = (self.start_find_pos/2)%self.table.rowCount()
c = self.start_find_pos % 2
item = self.table.item(r, c)
text = icu_lower(unicode(item.text()))
if st in text:
self.table.setCurrentItem(item)
self.table.setFocus(True)
return
# Nothing found. Pop up the little dialog for 1.5 seconds
self.not_found_label.setVisible(True)
self.not_found_label_timer.start(1500)
def do_sort_by_author(self): def do_sort_by_author(self):
self.author_order = 1 if self.author_order == 0 else 0 self.author_order = 1 if self.author_order == 0 else 0
self.table.sortByColumn(0, self.author_order) self.table.sortByColumn(0, self.author_order)
self.sort_by_author.setChecked(True) self.sort_by_author.setChecked(True)
self.sort_by_author_sort.setChecked(False) self.sort_by_author_sort.setChecked(False)
self.auth_col.setIcon(self.down_arrow_icon if self.author_order
else self.up_arrow_icon)
self.aus_col.setIcon(self.blank_icon)
def do_sort_by_author_sort(self): def do_sort_by_author_sort(self):
self.author_sort_order = 1 if self.author_sort_order == 0 else 0 self.author_sort_order = 1 if self.author_sort_order == 0 else 0
self.table.sortByColumn(1, self.author_sort_order) self.table.sortByColumn(1, self.author_sort_order)
self.sort_by_author.setChecked(False) self.sort_by_author.setChecked(False)
self.sort_by_author_sort.setChecked(True) self.sort_by_author_sort.setChecked(True)
self.aus_col.setIcon(self.down_arrow_icon if self.author_sort_order
else self.up_arrow_icon)
self.auth_col.setIcon(self.blank_icon)
def accepted(self): def accepted(self):
self.result = [] self.result = []

View File

@ -20,6 +20,50 @@
<string>Manage authors</string> <string>Manage authors</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="">
<item>
<widget class="QLabel">
<property name="text">
<string>&amp;Search for:</string>
</property>
<property name="buddy">
<cstring>find_box</cstring>
</property>
</widget>
</item>
<item>
<widget class="HistoryLineEdit" name="find_box">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="find_button">
<property name="text">
<string>F&amp;ind</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item> <item>
<widget class="QTableWidget" name="table"> <widget class="QTableWidget" name="table">
<property name="sizePolicy"> <property name="sizePolicy">
@ -143,4 +187,11 @@ after changing Preferences-&gt;Advanced-&gt;Tweaks-&gt;Author sort name algorith
</hints> </hints>
</connection> </connection>
</connections> </connections>
<customwidgets>
<customwidget>
<class>HistoryLineEdit</class>
<extends>QComboBox</extends>
<header>calibre/gui2/widgets.h</header>
</customwidget>
</customwidgets>
</ui> </ui>

View File

@ -19,9 +19,13 @@ class MessageBox(QDialog, Ui_Dialog): # {{{
INFO = 2 INFO = 2
QUESTION = 3 QUESTION = 3
def __init__(self, type_, title, msg, det_msg='', show_copy_button=True, def __init__(self, type_, title, msg,
det_msg='',
q_icon=None,
show_copy_button=True,
parent=None): parent=None):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
if q_icon is None:
icon = { icon = {
self.ERROR : 'error', self.ERROR : 'error',
self.WARNING: 'warning', self.WARNING: 'warning',
@ -30,6 +34,8 @@ class MessageBox(QDialog, Ui_Dialog): # {{{
}[type_] }[type_]
icon = 'dialog_%s.png'%icon icon = 'dialog_%s.png'%icon
self.icon = QIcon(I(icon)) self.icon = QIcon(I(icon))
else:
self.icon = q_icon
self.setupUi(self) self.setupUi(self)
self.setWindowTitle(title) self.setWindowTitle(title)
@ -44,7 +50,6 @@ class MessageBox(QDialog, Ui_Dialog): # {{{
self.bb.ActionRole) self.bb.ActionRole)
self.ctc_button.clicked.connect(self.copy_to_clipboard) self.ctc_button.clicked.connect(self.copy_to_clipboard)
self.show_det_msg = _('Show &details') self.show_det_msg = _('Show &details')
self.hide_det_msg = _('Hide &details') self.hide_det_msg = _('Hide &details')
self.det_msg_toggle = self.bb.addButton(self.show_det_msg, self.bb.ActionRole) self.det_msg_toggle = self.bb.addButton(self.show_det_msg, self.bb.ActionRole)

View File

@ -7,16 +7,16 @@ __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, shutil import os, shutil
from contextlib import closing
from zipfile import ZipFile, ZIP_DEFLATED, ZIP_STORED from zipfile import ZipFile, ZIP_DEFLATED, ZIP_STORED
from PyQt4.Qt import QDialog from PyQt4.Qt import QDialog
from calibre.constants import isosx from calibre.constants import isosx
from calibre.gui2 import open_local_file from calibre.gui2 import open_local_file, error_dialog
from calibre.gui2.dialogs.tweak_epub_ui import Ui_Dialog from calibre.gui2.dialogs.tweak_epub_ui import Ui_Dialog
from calibre.libunzip import extract as zipextract from calibre.libunzip import extract as zipextract
from calibre.ptempfile import PersistentTemporaryDirectory from calibre.ptempfile import (PersistentTemporaryDirectory,
PersistentTemporaryFile)
class TweakEpub(QDialog, Ui_Dialog): class TweakEpub(QDialog, Ui_Dialog):
''' '''
@ -37,11 +37,15 @@ class TweakEpub(QDialog, Ui_Dialog):
self.cancel_button.clicked.connect(self.reject) self.cancel_button.clicked.connect(self.reject)
self.explode_button.clicked.connect(self.explode) self.explode_button.clicked.connect(self.explode)
self.rebuild_button.clicked.connect(self.rebuild) self.rebuild_button.clicked.connect(self.rebuild)
self.preview_button.clicked.connect(self.preview)
# Position update dialog overlaying top left of app window # Position update dialog overlaying top left of app window
parent_loc = parent.pos() parent_loc = parent.pos()
self.move(parent_loc.x(),parent_loc.y()) self.move(parent_loc.x(),parent_loc.y())
self.gui = parent
self._preview_files = []
def cleanup(self): def cleanup(self):
if isosx: if isosx:
try: try:
@ -55,6 +59,11 @@ class TweakEpub(QDialog, Ui_Dialog):
# Delete directory containing exploded ePub # Delete directory containing exploded ePub
if self._exploded is not None: if self._exploded is not None:
shutil.rmtree(self._exploded, ignore_errors=True) shutil.rmtree(self._exploded, ignore_errors=True)
for x in self._preview_files:
try:
os.remove(x)
except:
pass
def display_exploded(self): def display_exploded(self):
''' '''
@ -71,9 +80,8 @@ class TweakEpub(QDialog, Ui_Dialog):
self.rebuild_button.setEnabled(True) self.rebuild_button.setEnabled(True)
self.explode_button.setEnabled(False) self.explode_button.setEnabled(False)
def rebuild(self, *args): def do_rebuild(self, src):
self._output = os.path.join(self._exploded, 'rebuilt.epub') with ZipFile(src, 'w', compression=ZIP_DEFLATED) as zf:
with closing(ZipFile(self._output, 'w', compression=ZIP_DEFLATED)) as zf:
# Write mimetype # Write mimetype
zf.write(os.path.join(self._exploded,'mimetype'), 'mimetype', compress_type=ZIP_STORED) zf.write(os.path.join(self._exploded,'mimetype'), 'mimetype', compress_type=ZIP_STORED)
# Write everything else # Write everything else
@ -86,5 +94,23 @@ class TweakEpub(QDialog, Ui_Dialog):
zfn = os.path.relpath(absfn, zfn = os.path.relpath(absfn,
self._exploded).replace(os.sep, '/') self._exploded).replace(os.sep, '/')
zf.write(absfn, zfn) zf.write(absfn, zfn)
def preview(self):
if not self._exploded:
return error_dialog(self, _('Cannot preview'),
_('You must first explode the epub before previewing.'),
show=True)
tf = PersistentTemporaryFile('.epub')
tf.close()
self._preview_files.append(tf.name)
self.do_rebuild(tf.name)
self.gui.iactions['View']._view_file(tf.name)
def rebuild(self, *args):
self._output = os.path.join(self._exploded, 'rebuilt.epub')
self.do_rebuild(self._output)
return QDialog.accept(self) return QDialog.accept(self)

View File

@ -23,6 +23,16 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;p&gt;Explode the ePub to display contents in a file browser window. To tweak individual files, right-click, then 'Open with...' your editor of choice. When tweaks are complete, close the file browser window &lt;b&gt;and the editor windows you used to edit files in the epub&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Rebuild the ePub, updating your calibre library.&lt;/p&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QPushButton" name="explode_button"> <widget class="QPushButton" name="explode_button">
<property name="statusTip"> <property name="statusTip">
@ -37,23 +47,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QPushButton" name="rebuild_button">
<property name="enabled">
<bool>false</bool>
</property>
<property name="statusTip">
<string>Rebuild ePub from exploded contents</string>
</property>
<property name="text">
<string>&amp;Rebuild ePub</string>
</property>
<property name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/exec.png</normaloff>:/images/exec.png</iconset>
</property>
</widget>
</item>
<item row="3" column="0"> <item row="3" column="0">
<widget class="QPushButton" name="cancel_button"> <widget class="QPushButton" name="cancel_button">
<property name="statusTip"> <property name="statusTip">
@ -68,13 +61,31 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0"> <item row="3" column="1">
<widget class="QLabel" name="label"> <widget class="QPushButton" name="rebuild_button">
<property name="text"> <property name="enabled">
<string>&lt;p&gt;Explode the ePub to display contents in a file browser window. To tweak individual files, right-click, then 'Open with...' your editor of choice. When tweaks are complete, close the file browser window &lt;b&gt;and the editor windows you used to edit files in the epub&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Rebuild the ePub, updating your calibre library.&lt;/p&gt;</string> <bool>false</bool>
</property> </property>
<property name="wordWrap"> <property name="statusTip">
<bool>true</bool> <string>Rebuild ePub from exploded contents</string>
</property>
<property name="text">
<string>&amp;Rebuild ePub</string>
</property>
<property name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/exec.png</normaloff>:/images/exec.png</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="preview_button">
<property name="text">
<string>&amp;Preview ePub</string>
</property>
<property name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/view.png</normaloff>:/images/view.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -44,18 +44,19 @@ class LocationManager(QObject): # {{{
receiver = partial(self._location_selected, name) receiver = partial(self._location_selected, name)
ac.triggered.connect(receiver) ac.triggered.connect(receiver)
self.tooltips[name] = tooltip self.tooltips[name] = tooltip
if name != 'library':
m = QMenu(parent) m = QMenu(parent)
self._mem.append(m) self._mem.append(m)
a = m.addAction(icon, tooltip) a = m.addAction(icon, tooltip)
a.triggered.connect(receiver) a.triggered.connect(receiver)
if name != 'library':
self._mem.append(a) self._mem.append(a)
a = m.addAction(QIcon(I('eject.png')), _('Eject this device')) a = m.addAction(QIcon(I('eject.png')), _('Eject this device'))
a.triggered.connect(self._eject_requested) a.triggered.connect(self._eject_requested)
ac.setMenu(m)
self._mem.append(a) self._mem.append(a)
else: else:
ac.setToolTip(tooltip) ac.setToolTip(tooltip)
ac.setMenu(m)
ac.calibre_name = name ac.calibre_name = name
return ac return ac
@ -71,7 +72,12 @@ class LocationManager(QObject): # {{{
def set_switch_actions(self, quick_actions, rename_actions, delete_actions, def set_switch_actions(self, quick_actions, rename_actions, delete_actions,
switch_actions, choose_action): switch_actions, choose_action):
self.switch_menu = self.library_action.menu()
if self.switch_menu:
self.switch_menu.addSeparator()
else:
self.switch_menu = QMenu() self.switch_menu = QMenu()
self.switch_menu.addAction(choose_action) self.switch_menu.addAction(choose_action)
self.cs_menus = [] self.cs_menus = []
for t, acs in [(_('Quick switch'), quick_actions), for t, acs in [(_('Quick switch'), quick_actions),
@ -85,6 +91,8 @@ class LocationManager(QObject): # {{{
self.switch_menu.addSeparator() self.switch_menu.addSeparator()
for ac in switch_actions: for ac in switch_actions:
self.switch_menu.addAction(ac) self.switch_menu.addAction(ac)
if self.switch_menu != self.library_action.menu():
self.library_action.setMenu(self.switch_menu) self.library_action.setMenu(self.switch_menu)
def _location_selected(self, location, *args): def _location_selected(self, location, *args):

View File

@ -439,10 +439,16 @@ class BooksView(QTableView): # {{{
if tweaks['sort_columns_at_startup'] is not None: if tweaks['sort_columns_at_startup'] is not None:
sh = [] sh = []
try:
for c,d in tweaks['sort_columns_at_startup']: for c,d in tweaks['sort_columns_at_startup']:
if not isinstance(d, bool): if not isinstance(d, bool):
d = True if d == 0 else False d = True if d == 0 else False
sh.append((c, d)) sh.append((c, d))
except:
# Ignore invalid tweak values as users seem to often get them
# wrong
import traceback
traceback.print_exc()
old_state['sort_history'] = sh old_state['sort_history'] = sh
self.apply_state(old_state) self.apply_state(old_state)

View File

@ -299,13 +299,13 @@ def run_gui(opts, args, actions, listener, app, gui_debug=None):
if getattr(runner.main, 'debug_on_restart', False): if getattr(runner.main, 'debug_on_restart', False):
run_in_debug_mode() run_in_debug_mode()
else: else:
import subprocess
print 'Restarting with:', e, sys.argv print 'Restarting with:', e, sys.argv
if hasattr(sys, 'frameworks_dir'): if hasattr(sys, 'frameworks_dir'):
app = os.path.dirname(os.path.dirname(sys.frameworks_dir)) app = os.path.dirname(os.path.dirname(sys.frameworks_dir))
import subprocess
subprocess.Popen('sleep 3s; open '+app, shell=True) subprocess.Popen('sleep 3s; open '+app, shell=True)
else: else:
os.execvp(e, sys.argv) subprocess.Popen([e] + sys.argv[1:])
else: else:
if iswindows: if iswindows:
try: try:

View File

@ -9,8 +9,8 @@ __docformat__ = 'restructuredtext en'
import textwrap, re, os import textwrap, re, os
from PyQt4.Qt import (Qt, QDateEdit, QDate, pyqtSignal, from PyQt4.Qt import (Qt, QDateEdit, QDate, pyqtSignal, QMessageBox,
QIcon, QToolButton, QWidget, QLabel, QGridLayout, QIcon, QToolButton, QWidget, QLabel, QGridLayout, QApplication,
QDoubleSpinBox, QListWidgetItem, QSize, QPixmap, QDoubleSpinBox, QListWidgetItem, QSize, QPixmap,
QPushButton, QSpinBox, QLineEdit, QSizePolicy) QPushButton, QSpinBox, QLineEdit, QSizePolicy)
@ -19,10 +19,10 @@ from calibre.gui2.complete import MultiCompleteLineEdit, MultiCompleteComboBox
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.utils.config import tweaks, prefs from calibre.utils.config import tweaks, prefs
from calibre.ebooks.metadata import (title_sort, authors_to_string, from calibre.ebooks.metadata import (title_sort, authors_to_string,
string_to_authors, check_isbn) string_to_authors, check_isbn, authors_to_sort_string)
from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.meta import get_metadata
from calibre.gui2 import (file_icon_provider, UNDEFINED_QDATE, UNDEFINED_DATE, from calibre.gui2 import (file_icon_provider, UNDEFINED_QDATE, UNDEFINED_DATE,
choose_files, error_dialog, choose_images, question_dialog) choose_files, error_dialog, choose_images)
from calibre.utils.date import local_tz, qt_to_dt from calibre.utils.date import local_tz, qt_to_dt
from calibre import strftime from calibre import strftime
from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks import BOOK_EXTENSIONS
@ -31,6 +31,16 @@ from calibre.utils.date import utcfromtimestamp
from calibre.gui2.comments_editor import Editor from calibre.gui2.comments_editor import Editor
from calibre.library.comments import comments_to_html from calibre.library.comments import comments_to_html
from calibre.gui2.dialogs.tag_editor import TagEditor from calibre.gui2.dialogs.tag_editor import TagEditor
from calibre.utils.icu import strcmp
def save_dialog(parent, title, msg, det_msg=''):
d = QMessageBox(parent)
d.setWindowTitle(title)
d.setText(msg)
d.setStandardButtons(QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
return d.exec_()
''' '''
The interface common to all widgets used to set basic metadata The interface common to all widgets used to set basic metadata
@ -156,7 +166,7 @@ class AuthorsEdit(MultiCompleteComboBox):
TOOLTIP = '' TOOLTIP = ''
LABEL = _('&Author(s):') LABEL = _('&Author(s):')
def __init__(self, parent): def __init__(self, parent, manage_authors):
self.dialog = parent self.dialog = parent
self.books_to_refresh = set([]) self.books_to_refresh = set([])
MultiCompleteComboBox.__init__(self, parent) MultiCompleteComboBox.__init__(self, parent)
@ -164,6 +174,28 @@ class AuthorsEdit(MultiCompleteComboBox):
self.setWhatsThis(self.TOOLTIP) self.setWhatsThis(self.TOOLTIP)
self.setEditable(True) self.setEditable(True)
self.setSizeAdjustPolicy(self.AdjustToMinimumContentsLengthWithIcon) self.setSizeAdjustPolicy(self.AdjustToMinimumContentsLengthWithIcon)
manage_authors.triggered.connect(self.manage_authors)
def manage_authors(self):
if self.original_val != self.current_val:
d = save_dialog(self, _('Authors changed'),
_('You have changed the authors for this book. You must save '
'these changes before you can use Manage authors. Do you '
'want to save these changes?'))
if d == QMessageBox.Cancel:
return
if d == QMessageBox.Yes:
self.commit(self.db, self.id_)
self.db.commit()
self.original_val = self.current_val
else:
self.current_val = self.original_val
first_author = self.current_val[0] if len(self.current_val) else None
first_author_id = self.db.get_author_id(first_author) if first_author else None
self.dialog.parent().do_author_sort_edit(self, first_author_id,
select_sort=False)
self.initialize(self.db, self.id_)
self.dialog.author_sort.initialize(self.db, self.id_)
def get_default(self): def get_default(self):
return _('Unknown') return _('Unknown')
@ -175,8 +207,8 @@ class AuthorsEdit(MultiCompleteComboBox):
self.clear() self.clear()
for i in all_authors: for i in all_authors:
id, name = i id, name = i
name = [name.strip().replace('|', ',') for n in name.split(',')] name = name.strip().replace('|', ',')
self.addItem(authors_to_string(name)) self.addItem(name)
self.set_separator('&') self.set_separator('&')
self.set_space_before_sep(True) self.set_space_before_sep(True)
@ -188,6 +220,8 @@ class AuthorsEdit(MultiCompleteComboBox):
au = _('Unknown') au = _('Unknown')
self.current_val = [a.strip().replace('|', ',') for a in au.split(',')] self.current_val = [a.strip().replace('|', ',') for a in au.split(',')]
self.original_val = self.current_val self.original_val = self.current_val
self.id_ = id_
self.db = db
def commit(self, db, id_): def commit(self, db, id_):
authors = self.current_val authors = self.current_val
@ -238,7 +272,7 @@ class AuthorSortEdit(EnLineEdit):
'No action is required if this is what you want.')) 'No action is required if this is what you want.'))
self.tooltips = (ok_tooltip, bad_tooltip) self.tooltips = (ok_tooltip, bad_tooltip)
self.authors_edit.editTextChanged.connect(self.update_state) self.authors_edit.editTextChanged.connect(self.update_state_and_val)
self.textChanged.connect(self.update_state) self.textChanged.connect(self.update_state)
autogen_button.clicked.connect(self.auto_generate) autogen_button.clicked.connect(self.auto_generate)
@ -260,12 +294,19 @@ class AuthorSortEdit(EnLineEdit):
return property(fget=fget, fset=fset) return property(fget=fget, fset=fset)
def update_state_and_val(self):
# Handle case change if the authors box changed
aus = authors_to_sort_string(self.authors_edit.current_val)
if strcmp(aus, self.current_val) == 0:
self.current_val = aus
self.update_state()
def update_state(self, *args): def update_state(self, *args):
au = unicode(self.authors_edit.text()) au = unicode(self.authors_edit.text())
au = re.sub(r'\s+et al\.$', '', au) au = re.sub(r'\s+et al\.$', '', au)
au = self.db.author_sort_from_authors(string_to_authors(au)) au = self.db.author_sort_from_authors(string_to_authors(au))
normal = au == self.current_val normal = strcmp(au, self.current_val) == 0
if normal: if normal:
col = 'rgb(0, 255, 0, 20%)' col = 'rgb(0, 255, 0, 20%)'
else: else:
@ -900,10 +941,13 @@ class TagsEdit(MultiCompleteLineEdit): # {{{
def edit(self, db, id_): def edit(self, db, id_):
if self.changed: if self.changed:
if question_dialog(self, _('Tags changed'), d = save_dialog(self, _('Tags changed'),
_('You have changed the tags. In order to use the tags' _('You have changed the tags. In order to use the tags'
' editor, you must either discard or apply these ' ' editor, you must either discard or apply these '
'changes. Apply changes?'), show_copy_button=False): 'changes. Apply changes?'))
if d == QMessageBox.Cancel:
return
if d == QMessageBox.Yes:
self.commit(db, id_) self.commit(db, id_)
db.commit() db.commit()
self.original_val = self.current_val self.original_val = self.current_val
@ -993,6 +1037,13 @@ class IdentifiersEdit(QLineEdit): # {{{
self.setToolTip(tt+extra) self.setToolTip(tt+extra)
self.setStyleSheet('QLineEdit { background-color: %s }'%col) self.setStyleSheet('QLineEdit { background-color: %s }'%col)
def paste_isbn(self):
text = unicode(QApplication.clipboard().text()).strip()
if text:
vals = self.current_val
vals['isbn'] = text
self.current_val = vals
# }}} # }}}
class PublisherEdit(MultiCompleteComboBox): # {{{ class PublisherEdit(MultiCompleteComboBox): # {{{
@ -1075,7 +1126,7 @@ class DateEdit(QDateEdit): # {{{
@dynamic_property @dynamic_property
def current_val(self): def current_val(self):
def fget(self): def fget(self):
return qt_to_dt(self.date()) return qt_to_dt(self.date(), as_utc=False)
def fset(self, val): def fset(self, val):
if val is None: if val is None:
val = UNDEFINED_DATE val = UNDEFINED_DATE

View File

@ -31,6 +31,7 @@ class MetadataSingleDialogBase(ResizableDialog):
view_format = pyqtSignal(object, object) view_format = pyqtSignal(object, object)
cc_two_column = tweaks['metadata_single_use_2_cols_for_custom_fields'] cc_two_column = tweaks['metadata_single_use_2_cols_for_custom_fields']
one_line_comments_toolbar = False one_line_comments_toolbar = False
use_toolbutton_for_config_metadata = True
def __init__(self, db, parent=None): def __init__(self, db, parent=None):
self.db = db self.db = db
@ -69,7 +70,11 @@ class MetadataSingleDialogBase(ResizableDialog):
self.setLayout(self.l) self.setLayout(self.l)
self.l.setMargin(0) self.l.setMargin(0)
self.l.addWidget(self.scroll_area) self.l.addWidget(self.scroll_area)
self.l.addWidget(self.button_box) ll = self.button_box_layout = QHBoxLayout()
self.l.addLayout(ll)
ll.addSpacing(10)
ll.addWidget(self.button_box)
ll.addSpacing(10)
self.setWindowIcon(QIcon(I('edit_input.png'))) self.setWindowIcon(QIcon(I('edit_input.png')))
self.setWindowTitle(_('Edit Metadata')) self.setWindowTitle(_('Edit Metadata'))
@ -103,16 +108,18 @@ class MetadataSingleDialogBase(ResizableDialog):
self.basic_metadata_widgets.extend([self.title, self.title_sort]) self.basic_metadata_widgets.extend([self.title, self.title_sort])
self.deduce_author_sort_button = b = QToolButton(self) self.deduce_author_sort_button = b = QToolButton(self)
b.setToolTip(_( b.setToolTip('<p>' +
'Automatically create the author sort entry based on the current' _('Automatically create the author sort entry based on the current '
' author entry.\n' 'author entry. Using this button to create author sort will '
'Using this button to create author sort will change author sort from' 'change author sort from red to green. There is a menu of '
' red to green.')) 'functions available under this button. Click and hold '
'on the button to see it.') + '</p>')
b.m = m = QMenu() b.m = m = QMenu()
ac = m.addAction(QIcon(I('forward.png')), _('Set author sort from author')) ac = m.addAction(QIcon(I('forward.png')), _('Set author sort from author'))
ac2 = m.addAction(QIcon(I('back.png')), _('Set author from author sort')) ac2 = m.addAction(QIcon(I('back.png')), _('Set author from author sort'))
ac3 = m.addAction(QIcon(I('user_profile.png')), _('Manage authors'))
b.setMenu(m) b.setMenu(m)
self.authors = AuthorsEdit(self) self.authors = AuthorsEdit(self, ac3)
self.author_sort = AuthorSortEdit(self, self.authors, b, self.db, ac, self.author_sort = AuthorSortEdit(self, self.authors, b, self.db, ac,
ac2) ac2)
self.basic_metadata_widgets.extend([self.authors, self.author_sort]) self.basic_metadata_widgets.extend([self.authors, self.author_sort])
@ -123,6 +130,13 @@ class MetadataSingleDialogBase(ResizableDialog):
'Swap the author and title')) 'Swap the author and title'))
self.swap_title_author_button.clicked.connect(self.swap_title_author) self.swap_title_author_button.clicked.connect(self.swap_title_author)
self.manage_authors_button = QToolButton(self)
self.manage_authors_button.setIcon(QIcon(I('user_profile.png')))
self.manage_authors_button.setToolTip('<p>' + _(
'Manage authors. Use to rename authors and correct '
'individual author\'s sort values') + '</p>')
self.manage_authors_button.clicked.connect(self.authors.manage_authors)
self.series = SeriesEdit(self) self.series = SeriesEdit(self)
self.remove_unused_series_button = QToolButton(self) self.remove_unused_series_button = QToolButton(self)
self.remove_unused_series_button.setToolTip( self.remove_unused_series_button.setToolTip(
@ -159,6 +173,12 @@ class MetadataSingleDialogBase(ResizableDialog):
self.clear_identifiers_button = QToolButton(self) self.clear_identifiers_button = QToolButton(self)
self.clear_identifiers_button.setIcon(QIcon(I('trash.png'))) self.clear_identifiers_button.setIcon(QIcon(I('trash.png')))
self.clear_identifiers_button.clicked.connect(self.identifiers.clear) self.clear_identifiers_button.clicked.connect(self.identifiers.clear)
self.paste_isbn_button = QToolButton(self)
self.paste_isbn_button.setToolTip('<p>' +
_('Paste the contents of the clipboard into the '
'identifiers box prefixed with isbn:') + '</p>')
self.paste_isbn_button.setIcon(QIcon(I('edit-paste.png')))
self.paste_isbn_button.clicked.connect(self.identifiers.paste_isbn)
self.publisher = PublisherEdit(self) self.publisher = PublisherEdit(self)
self.basic_metadata_widgets.append(self.publisher) self.basic_metadata_widgets.append(self.publisher)
@ -174,8 +194,13 @@ class MetadataSingleDialogBase(ResizableDialog):
font.setBold(True) font.setBold(True)
self.fetch_metadata_button.setFont(font) self.fetch_metadata_button.setFont(font)
if self.use_toolbutton_for_config_metadata:
self.config_metadata_button = QToolButton(self) self.config_metadata_button = QToolButton(self)
self.config_metadata_button.setIcon(QIcon(I('config.png'))) self.config_metadata_button.setIcon(QIcon(I('config.png')))
else:
self.config_metadata_button = QPushButton(self)
self.config_metadata_button.setText(_('Configure download metadata'))
self.config_metadata_button.setIcon(QIcon(I('config.png')))
self.config_metadata_button.clicked.connect(self.configure_metadata) self.config_metadata_button.clicked.connect(self.configure_metadata)
self.config_metadata_button.setToolTip( self.config_metadata_button.setToolTip(
_('Change how calibre downloads metadata')) _('Change how calibre downloads metadata'))
@ -198,7 +223,7 @@ class MetadataSingleDialogBase(ResizableDialog):
ans = self.custom_metadata_widgets ans = self.custom_metadata_widgets
for i in range(len(ans)-1): for i in range(len(ans)-1):
if before is not None and i == 0: if before is not None and i == 0:
pass# Do something pass
if len(ans[i+1].widgets) == 2: if len(ans[i+1].widgets) == 2:
sto(ans[i].widgets[-1], ans[i+1].widgets[1]) sto(ans[i].widgets[-1], ans[i+1].widgets[1])
else: else:
@ -206,7 +231,7 @@ class MetadataSingleDialogBase(ResizableDialog):
for c in range(2, len(ans[i].widgets), 2): for c in range(2, len(ans[i].widgets), 2):
sto(ans[i].widgets[c-1], ans[i].widgets[c+1]) sto(ans[i].widgets[c-1], ans[i].widgets[c+1])
if after is not None: if after is not None:
pass # Do something pass
# }}} # }}}
def do_view_format(self, path, fmt): def do_view_format(self, path, fmt):
@ -290,13 +315,17 @@ class MetadataSingleDialogBase(ResizableDialog):
show=True) show=True)
return return
def update_from_mi(self, mi): def update_from_mi(self, mi, update_sorts=True):
if not mi.is_null('title'): if not mi.is_null('title'):
self.title.current_val = mi.title self.title.current_val = mi.title
if update_sorts:
self.title_sort.auto_generate()
if not mi.is_null('authors'): if not mi.is_null('authors'):
self.authors.current_val = mi.authors self.authors.current_val = mi.authors
if not mi.is_null('author_sort'): if not mi.is_null('author_sort'):
self.author_sort.current_val = mi.author_sort self.author_sort.current_val = mi.author_sort
elif update_sorts:
self.author_sort.auto_generate()
if not mi.is_null('rating'): if not mi.is_null('rating'):
try: try:
self.rating.current_val = mi.rating self.rating.current_val = mi.rating
@ -493,7 +522,8 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{
sto(one, two) sto(one, two)
sto(two, three) sto(two, three)
tl.addWidget(self.swap_title_author_button, 0, 0, 2, 1) tl.addWidget(self.swap_title_author_button, 0, 0, 1, 1)
tl.addWidget(self.manage_authors_button, 1, 0, 1, 1)
create_row(0, self.title, self.deduce_title_sort_button, self.title_sort) create_row(0, self.title, self.deduce_title_sort_button, self.title_sort)
sto(self.title_sort, self.authors) sto(self.title_sort, self.authors)
@ -502,6 +532,7 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{
create_row(2, self.series, self.remove_unused_series_button, create_row(2, self.series, self.remove_unused_series_button,
self.series_index, icon='trash.png') self.series_index, icon='trash.png')
sto(self.series_index, self.swap_title_author_button) sto(self.series_index, self.swap_title_author_button)
sto(self.swap_title_author_button, self.manage_authors_button)
tl.addWidget(self.formats_manager, 0, 6, 3, 1) tl.addWidget(self.formats_manager, 0, 6, 3, 1)
@ -512,7 +543,7 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{
self.tabs[0].gb = gb = QGroupBox(_('Change cover'), self) self.tabs[0].gb = gb = QGroupBox(_('Change cover'), self)
gb.l = l = QGridLayout() gb.l = l = QGridLayout()
gb.setLayout(l) gb.setLayout(l)
sto(self.swap_title_author_button, self.cover.buttons[0]) sto(self.manage_authors_button, self.cover.buttons[0])
for i, b in enumerate(self.cover.buttons[:3]): for i, b in enumerate(self.cover.buttons[:3]):
l.addWidget(b, 0, i, 1, 1) l.addWidget(b, 0, i, 1, 1)
sto(b, self.cover.buttons[i+1]) sto(b, self.cover.buttons[i+1])
@ -526,9 +557,15 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{
w.setLayout(w.l) w.setLayout(w.l)
l.setMargin(0) l.setMargin(0)
self.splitter.addWidget(w) self.splitter.addWidget(w)
def create_row2(row, widget, button=None): def create_row2(row, widget, button=None, front_button=None):
row += 1 row += 1
ql = BuddyLabel(widget) ql = BuddyLabel(widget)
if front_button:
ltl = QHBoxLayout()
ltl.addWidget(front_button)
ltl.addWidget(ql)
l.addLayout(ltl, row, 0, 1, 1)
else:
l.addWidget(ql, row, 0, 1, 1) l.addWidget(ql, row, 0, 1, 1)
l.addWidget(widget, row, 1, 1, 2 if button is None else 1) l.addWidget(widget, row, 1, 1, 2 if button is None else 1)
if button is not None: if button is not None:
@ -544,8 +581,10 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{
create_row2(1, self.rating) create_row2(1, self.rating)
sto(self.rating, self.tags) sto(self.rating, self.tags)
create_row2(2, self.tags, self.tags_editor_button) create_row2(2, self.tags, self.tags_editor_button)
sto(self.tags_editor_button, self.identifiers) sto(self.tags_editor_button, self.paste_isbn_button)
create_row2(3, self.identifiers, self.clear_identifiers_button) sto(self.paste_isbn_button, self.identifiers)
create_row2(3, self.identifiers, self.clear_identifiers_button,
front_button=self.paste_isbn_button)
sto(self.clear_identifiers_button, self.timestamp) sto(self.clear_identifiers_button, self.timestamp)
create_row2(4, self.timestamp, self.timestamp.clear_button) create_row2(4, self.timestamp, self.timestamp.clear_button)
sto(self.timestamp.clear_button, self.pubdate) sto(self.timestamp.clear_button, self.pubdate)
@ -583,6 +622,7 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
cc_two_column = False cc_two_column = False
one_line_comments_toolbar = True one_line_comments_toolbar = True
use_toolbutton_for_config_metadata = False
on_drag_enter = pyqtSignal() on_drag_enter = pyqtSignal()
@ -618,13 +658,11 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
self.tabs[0].l.addWidget(gb, 0, 0, 1, 1) self.tabs[0].l.addWidget(gb, 0, 0, 1, 1)
gb.setLayout(tl) gb.setLayout(tl)
self.button_box.addButton(self.fetch_metadata_button, self.button_box_layout.insertWidget(1, self.fetch_metadata_button)
QDialogButtonBox.ActionRole) self.button_box_layout.insertWidget(2, self.config_metadata_button)
self.config_metadata_button.setToolButtonStyle(Qt.ToolButtonTextOnly) sto(self.button_box, self.fetch_metadata_button)
self.config_metadata_button.setText(_('Configure metadata downloading')) sto(self.fetch_metadata_button, self.config_metadata_button)
self.button_box.addButton(self.config_metadata_button, sto(self.config_metadata_button, self.title)
QDialogButtonBox.ActionRole)
sto(self.button_box, self.title)
def create_row(row, widget, tab_to, button=None, icon=None, span=1): def create_row(row, widget, tab_to, button=None, icon=None, span=1):
ql = BuddyLabel(widget) ql = BuddyLabel(widget)
@ -642,6 +680,8 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
sto(widget, tab_to) sto(widget, tab_to)
tl.addWidget(self.swap_title_author_button, 0, 0, 2, 1) tl.addWidget(self.swap_title_author_button, 0, 0, 2, 1)
tl.addWidget(self.manage_authors_button, 2, 0, 1, 1)
tl.addWidget(self.paste_isbn_button, 11, 0, 1, 1)
create_row(0, self.title, self.title_sort, create_row(0, self.title, self.title_sort,
button=self.deduce_title_sort_button, span=2, button=self.deduce_title_sort_button, span=2,
@ -663,6 +703,9 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
button=self.timestamp.clear_button, icon='trash.png') button=self.timestamp.clear_button, icon='trash.png')
create_row(11, self.identifiers, self.comments, create_row(11, self.identifiers, self.comments,
button=self.clear_identifiers_button, icon='trash.png') button=self.clear_identifiers_button, icon='trash.png')
sto(self.clear_identifiers_button, self.swap_title_author_button)
sto(self.swap_title_author_button, self.manage_authors_button)
sto(self.manage_authors_button, self.paste_isbn_button)
tl.addItem(QSpacerItem(1, 1, QSizePolicy.Fixed, QSizePolicy.Expanding), tl.addItem(QSpacerItem(1, 1, QSizePolicy.Fixed, QSizePolicy.Expanding),
12, 1, 1 ,1) 12, 1, 1 ,1)
@ -702,7 +745,6 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
gb = QGroupBox(_('Change cover'), tab1) gb = QGroupBox(_('Change cover'), tab1)
l = QGridLayout() l = QGridLayout()
gb.setLayout(l) gb.setLayout(l)
sto(self.swap_title_author_button, self.cover.buttons[0])
for i, b in enumerate(self.cover.buttons[:3]): for i, b in enumerate(self.cover.buttons[:3]):
l.addWidget(b, 0, i, 1, 1) l.addWidget(b, 0, i, 1, 1)
sto(b, self.cover.buttons[i+1]) sto(b, self.cover.buttons[i+1])
@ -728,7 +770,139 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{
# }}} # }}}
editors = {'default': MetadataSingleDialog, 'alt1': MetadataSingleDialogAlt1} class MetadataSingleDialogAlt2(MetadataSingleDialogBase): # {{{
cc_two_column = False
one_line_comments_toolbar = True
use_toolbutton_for_config_metadata = False
def do_layout(self):
self.central_widget.clear()
self.labels = []
sto = QWidget.setTabOrder
self.central_widget.tabBar().setVisible(False)
tab0 = QWidget(self)
self.central_widget.addTab(tab0, _("&Metadata"))
l = QGridLayout()
tab0.setLayout(l)
# Basic metadata in col 0
tl = QGridLayout()
gb = QGroupBox(_('Basic metadata'), tab0)
l.addWidget(gb, 0, 0, 1, 1)
gb.setLayout(tl)
self.button_box_layout.insertWidget(1, self.fetch_metadata_button)
self.button_box_layout.insertWidget(2, self.config_metadata_button)
sto(self.button_box, self.fetch_metadata_button)
sto(self.fetch_metadata_button, self.config_metadata_button)
sto(self.config_metadata_button, self.title)
def create_row(row, widget, tab_to, button=None, icon=None, span=1):
ql = BuddyLabel(widget)
tl.addWidget(ql, row, 1, 1, 1)
tl.addWidget(widget, row, 2, 1, 1)
if button is not None:
tl.addWidget(button, row, 3, span, 1)
if icon is not None:
button.setIcon(QIcon(I(icon)))
if tab_to is not None:
if button is not None:
sto(widget, button)
sto(button, tab_to)
else:
sto(widget, tab_to)
tl.addWidget(self.swap_title_author_button, 0, 0, 2, 1)
tl.addWidget(self.manage_authors_button, 2, 0, 2, 1)
tl.addWidget(self.paste_isbn_button, 11, 0, 1, 1)
create_row(0, self.title, self.title_sort,
button=self.deduce_title_sort_button, span=2,
icon='auto_author_sort.png')
create_row(1, self.title_sort, self.authors)
create_row(2, self.authors, self.author_sort,
button=self.deduce_author_sort_button,
span=2, icon='auto_author_sort.png')
create_row(3, self.author_sort, self.series)
create_row(4, self.series, self.series_index,
button=self.remove_unused_series_button, icon='trash.png')
create_row(5, self.series_index, self.tags)
create_row(6, self.tags, self.rating, button=self.tags_editor_button)
create_row(7, self.rating, self.pubdate)
create_row(8, self.pubdate, self.publisher,
button=self.pubdate.clear_button, icon='trash.png')
create_row(9, self.publisher, self.timestamp)
create_row(10, self.timestamp, self.identifiers,
button=self.timestamp.clear_button, icon='trash.png')
create_row(11, self.identifiers, self.comments,
button=self.clear_identifiers_button, icon='trash.png')
sto(self.clear_identifiers_button, self.swap_title_author_button)
sto(self.swap_title_author_button, self.manage_authors_button)
sto(self.manage_authors_button, self.paste_isbn_button)
tl.addItem(QSpacerItem(1, 1, QSizePolicy.Fixed, QSizePolicy.Expanding),
12, 1, 1 ,1)
# Custom metadata in col 1
w = getattr(self, 'custom_metadata_widgets_parent', None)
if w is not None:
gb = QGroupBox(_('Custom metadata'), tab0)
gbl = QVBoxLayout()
gb.setLayout(gbl)
sr = QScrollArea(gb)
sr.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
sr.setWidgetResizable(True)
sr.setBackgroundRole(QPalette.Base)
sr.setFrameStyle(QFrame.NoFrame)
sr.setWidget(w)
gbl.addWidget(sr)
l.addWidget(gb, 0, 1, 1, 1)
sp = QSizePolicy()
sp.setVerticalStretch(10)
sp.setHorizontalPolicy(QSizePolicy.Minimum)
sp.setVerticalPolicy(QSizePolicy.Expanding)
gb.setSizePolicy(sp)
self.set_custom_metadata_tab_order()
# comments span col 0 & 1
w = QGroupBox(_('Comments'), tab0)
sp = QSizePolicy()
sp.setVerticalStretch(10)
sp.setHorizontalPolicy(QSizePolicy.Expanding)
sp.setVerticalPolicy(QSizePolicy.Expanding)
w.setSizePolicy(sp)
lb = QHBoxLayout()
w.setLayout(lb)
lb.addWidget(self.comments)
l.addWidget(w, 1, 0, 1, 2)
# Cover & formats in col 3
gb = QGroupBox(_('Cover'), tab0)
lb = QGridLayout()
gb.setLayout(lb)
lb.addWidget(self.cover, 0, 0, 1, 3, alignment=Qt.AlignCenter)
sto(self.manage_authors_button, self.cover.buttons[0])
for i, b in enumerate(self.cover.buttons[:3]):
lb.addWidget(b, 1, i, 1, 1)
sto(b, self.cover.buttons[i+1])
hl = QHBoxLayout()
for b in self.cover.buttons[3:]:
hl.addWidget(b)
sto(self.cover.buttons[-2], self.cover.buttons[-1])
lb.addLayout(hl, 2, 0, 1, 3)
l.addWidget(gb, 0, 2, 1, 1)
l.addWidget(self.formats_manager, 1, 2, 1, 1)
sto(self.cover.buttons[-1], self.formats_manager)
self.formats_manager.formats.setMaximumWidth(10000)
self.formats_manager.formats.setIconSize(QSize(32, 32))
# }}}
editors = {'default': MetadataSingleDialog, 'alt1': MetadataSingleDialogAlt1,
'alt2': MetadataSingleDialogAlt2}
def edit_metadata(db, row_list, current_row, parent=None, view_slot=None, def edit_metadata(db, row_list, current_row, parent=None, view_slot=None,
set_current_callback=None): set_current_callback=None):

View File

@ -61,7 +61,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('bools_are_tristate', db.prefs, restart_required=True) r('bools_are_tristate', db.prefs, restart_required=True)
r = self.register r = self.register
choices = [(_('Default'), 'default'), (_('Compact Metadata'), 'alt1')] choices = [(_('Default'), 'default'), (_('Compact Metadata'), 'alt1'),
(_('All on 1 tab'), 'alt2')]
r('edit_metadata_single_layout', gprefs, choices=choices) r('edit_metadata_single_layout', gprefs, choices=choices)
def initialize(self): def initialize(self):

View File

@ -190,7 +190,15 @@ class FieldsModel(QAbstractListModel): # {{{
return ans | Qt.ItemIsUserCheckable return ans | Qt.ItemIsUserCheckable
def restore_defaults(self): def restore_defaults(self):
self.overrides = dict([(f, self.state(f, True)) for f in self.fields]) self.overrides = dict([(f, self.state(f, Qt.Checked)) for f in self.fields])
self.reset()
def select_all(self):
self.overrides = dict([(f, Qt.Checked) for f in self.fields])
self.reset()
def clear_all(self):
self.overrides = dict([(f, Qt.Unchecked) for f in self.fields])
self.reset() self.reset()
def setData(self, index, val, role): def setData(self, index, val, role):
@ -273,6 +281,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.fields_view.setModel(self.fields_model) self.fields_view.setModel(self.fields_model)
self.fields_model.dataChanged.connect(self.changed_signal) self.fields_model.dataChanged.connect(self.changed_signal)
self.select_all_button.clicked.connect(self.fields_model.select_all)
self.clear_all_button.clicked.connect(self.fields_model.clear_all)
def configure_plugin(self): def configure_plugin(self):
for index in self.sources_view.selectionModel().selectedRows(): for index in self.sources_view.selectionModel().selectedRows():
plugin = self.sources_model.data(index, Qt.UserRole) plugin = self.sources_model.data(index, Qt.UserRole)

View File

@ -77,8 +77,8 @@
<property name="title"> <property name="title">
<string>Downloaded metadata fields</string> <string>Downloaded metadata fields</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<item> <item row="0" column="0" colspan="2">
<widget class="QListView" name="fields_view"> <widget class="QListView" name="fields_view">
<property name="toolTip"> <property name="toolTip">
<string>If you uncheck any fields, metadata for those fields will not be downloaded</string> <string>If you uncheck any fields, metadata for those fields will not be downloaded</string>
@ -88,6 +88,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QPushButton" name="select_all_button">
<property name="text">
<string>&amp;Select all</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="clear_all_button">
<property name="text">
<string>&amp;Clear all</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>

View File

@ -75,6 +75,8 @@ class PluginModel(QAbstractItemModel, SearchQueryParser): # {{{
def find(self, query): def find(self, query):
query = query.strip() query = query.strip()
if not query:
return QModelIndex()
matches = self.parse(query) matches = self.parse(query)
if not matches: if not matches:
return QModelIndex() return QModelIndex()
@ -87,6 +89,8 @@ class PluginModel(QAbstractItemModel, SearchQueryParser): # {{{
def find_next(self, idx, query, backwards=False): def find_next(self, idx, query, backwards=False):
query = query.strip() query = query.strip()
if not query:
return idx
matches = self.parse(query) matches = self.parse(query)
if not matches: if not matches:
return idx return idx

View File

@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en'
class StorePlugin(object): # {{{ class StorePlugin(object): # {{{
''' '''
A plugin representing an online ebook repository (store). The store can A plugin representing an online ebook repository (store). The store can
be a comercial store that sells ebooks or a source of free downloadable be a commercial store that sells ebooks or a source of free downloadable
ebooks. ebooks.
Note that this class is the base class for these plugins, however, to Note that this class is the base class for these plugins, however, to
@ -43,6 +43,8 @@ class StorePlugin(object): # {{{
The easiest way to handle affiliate money payouts is to randomly select The easiest way to handle affiliate money payouts is to randomly select
between the author's affiliate id and calibre's affiliate id so that between the author's affiliate id and calibre's affiliate id so that
70% of the time the author's id is used. 70% of the time the author's id is used.
See declined.txt for a list of stores that do not want to be included.
''' '''
def __init__(self, gui, name): def __init__(self, gui, name):

View File

@ -0,0 +1,92 @@
# -*- coding: utf-8 -*-
from __future__ import (unicode_literals, division, absolute_import, print_function)
__license__ = 'GPL 3'
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import urllib2
from contextlib import closing
from lxml import html
from PyQt4.Qt import QUrl
from calibre import browser
from calibre.gui2 import open_url
from calibre.gui2.store import StorePlugin
from calibre.gui2.store.basic_config import BasicStoreConfig
from calibre.gui2.store.search_result import SearchResult
from calibre.gui2.store.web_store_dialog import WebStoreDialog
class BeamEBooksDEStore(BasicStoreConfig, StorePlugin):
def open(self, parent=None, detail_item=None, external=False):
url = 'http://klick.affiliwelt.net/klick.php?bannerid=10072&pid=32307&prid=908'
url_details = ('http://klick.affiliwelt.net/klick.php?'
'bannerid=10730&pid=32307&prid=908&prodid={0}')
if external or self.config.get('open_external', False):
if detail_item:
url = url_details.format(detail_item)
open_url(QUrl(url))
else:
detail_url = None
if detail_item:
detail_url = url_details.format(detail_item)
d = WebStoreDialog(self.gui, url, parent, detail_url)
d.setWindowTitle(self.name)
d.set_tags(self.config.get('tags', ''))
d.exec_()
def search(self, query, max_results=10, timeout=60):
url = 'http://www.beam-ebooks.de/suchergebnis.php?Type=&sw=' + urllib2.quote(query)
br = browser()
counter = max_results
with closing(br.open(url, timeout=timeout)) as f:
doc = html.fromstring(f.read())
for data in doc.xpath('//table[tr/td/div[@class="stil2"]]'):
if counter <= 0:
break
id = ''.join(data.xpath('./tr/td/div[@class="stil2"]/a/@href')).strip()
if not id:
continue
id = id[7:]
cover_url = ''.join(data.xpath('./tr/td[1]/a/img/@src'))
if cover_url:
cover_url = 'http://www.beam-ebooks.de' + cover_url
title = ''.join(data.xpath('./tr/td/div[@class="stil2"]/a/b/text()'))
author = ' '.join(data.xpath('./tr/td/div[@class="stil2"]/'
'child::b/text()'
'|'
'./tr/td/div[@class="stil2"]/'
'child::strong/text()'))
price = ''.join(data.xpath('./tr/td[3]/text()'))
pdf = data.xpath(
'boolean(./tr/td[3]/a/img[contains(@alt, "PDF")]/@alt)')
epub = data.xpath(
'boolean(./tr/td[3]/a/img[contains(@alt, "ePub")]/@alt)')
mobi = data.xpath(
'boolean(./tr/td[3]/a/img[contains(@alt, "Mobipocket")]/@alt)')
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.price = price
s.drm = SearchResult.DRM_UNLOCKED
s.detail_item = id
formats = []
if epub:
formats.append('ePub')
if pdf:
formats.append('PDF')
if mobi:
formats.append('MOBI')
s.formats = ', '.join(formats)
yield s

View File

@ -0,0 +1,5 @@
This is a list of stores that objected, declined
or asked not to be included in the store integration.
* Borders (http://www.borders.com/)
* WH Smith (http://www.whsmith.co.uk/)

View File

@ -0,0 +1,80 @@
# -*- coding: utf-8 -*-
from __future__ import (unicode_literals, division, absolute_import, print_function)
__license__ = 'GPL 3'
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import urllib2
from contextlib import closing
from lxml import html
from PyQt4.Qt import QUrl
from calibre import browser
from calibre.gui2 import open_url
from calibre.gui2.store import StorePlugin
from calibre.gui2.store.basic_config import BasicStoreConfig
from calibre.gui2.store.search_result import SearchResult
from calibre.gui2.store.web_store_dialog import WebStoreDialog
class EPubBuyDEStore(BasicStoreConfig, StorePlugin):
def open(self, parent=None, detail_item=None, external=False):
url = 'http://klick.affiliwelt.net/klick.php?bannerid=47653&pid=32307&prid=2627'
url_details = ('http://klick.affiliwelt.net/klick.php?bannerid=47653'
'&pid=32307&prid=2627&prodid={0}')
if external or self.config.get('open_external', False):
if detail_item:
url = url_details.format(detail_item)
open_url(QUrl(url))
else:
detail_url = None
if detail_item:
detail_url = url_details.format(detail_item)
d = WebStoreDialog(self.gui, url, parent, detail_url)
d.setWindowTitle(self.name)
d.set_tags(self.config.get('tags', ''))
d.exec_()
def search(self, query, max_results=10, timeout=60):
url = 'http://www.epubbuy.com/search.php?search_query=' + urllib2.quote(query)
br = browser()
counter = max_results
with closing(br.open(url, timeout=timeout)) as f:
doc = html.fromstring(f.read())
for data in doc.xpath('//li[contains(@class, "ajax_block_product")]'):
if counter <= 0:
break
id = ''.join(data.xpath('./div[@class="center_block"]'
'/p[contains(text(), "artnr:")]/text()')).strip()
if not id:
continue
id = id[6:].strip()
if not id:
continue
cover_url = ''.join(data.xpath('./div[@class="center_block"]'
'/a[@class="product_img_link"]/img/@src'))
if cover_url:
cover_url = 'http://www.epubbuy.com' + cover_url
title = ''.join(data.xpath('./div[@class="center_block"]'
'/a[@class="product_img_link"]/@title'))
author = ''.join(data.xpath('./div[@class="center_block"]/a[2]/text()'))
price = ''.join(data.xpath('.//span[@class="price"]/text()'))
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.price = price
s.drm = SearchResult.DRM_UNLOCKED
s.detail_item = id
s.formats = 'ePub'
yield s

View File

@ -73,6 +73,6 @@ class FoylesUKStore(BasicStoreConfig, StorePlugin):
s.price = price s.price = price
s.detail_item = id s.detail_item = id
s.drm = SearchResult.DRM_LOCKED s.drm = SearchResult.DRM_LOCKED
s.formats = 'EPUB' s.formats = 'ePub'
yield s yield s

View File

@ -47,7 +47,7 @@ class SearchDialog(QDialog, Ui_Dialog):
# per search basis. # per search basis.
stores_group_layout = QVBoxLayout() stores_group_layout = QVBoxLayout()
self.stores_group.setLayout(stores_group_layout) self.stores_group.setLayout(stores_group_layout)
for x in self.store_plugins: for x in sorted(self.store_plugins.keys(), key=lambda x: x.lower()):
cbox = QCheckBox(x) cbox = QCheckBox(x)
cbox.setChecked(True) cbox.setChecked(True)
stores_group_layout.addWidget(cbox) stores_group_layout.addWidget(cbox)
@ -155,6 +155,7 @@ class SearchDialog(QDialog, Ui_Dialog):
self.config['results_view_column_width'] = [self.results_view.columnWidth(i) for i in range(self.results_view.model().columnCount())] self.config['results_view_column_width'] = [self.results_view.columnWidth(i) for i in range(self.results_view.model().columnCount())]
self.config['sort_col'] = self.results_view.model().sort_col self.config['sort_col'] = self.results_view.model().sort_col
self.config['sort_order'] = self.results_view.model().sort_order self.config['sort_order'] = self.results_view.model().sort_order
self.config['open_external'] = self.open_external.isChecked()
store_check = {} store_check = {}
for n in self.store_plugins: for n in self.store_plugins:
@ -179,6 +180,8 @@ class SearchDialog(QDialog, Ui_Dialog):
else: else:
self.resize_columns() self.resize_columns()
self.open_external.setChecked(self.config.get('open_external', False))
store_check = self.config.get('store_checked', None) store_check = self.config.get('store_checked', None)
if store_check: if store_check:
for n in store_check: for n in store_check:
@ -212,7 +215,7 @@ class SearchDialog(QDialog, Ui_Dialog):
def open_store(self, index): def open_store(self, index):
result = self.results_view.model().get_result(index) result = self.results_view.model().get_result(index)
self.store_plugins[result.store_name].open(self, result.detail_item) self.store_plugins[result.store_name].open(self, result.detail_item, self.open_external.isChecked())
def check_progress(self): def check_progress(self):
if not self.search_pool.threads_running() and not self.results_view.model().cover_pool.threads_running() and not self.results_view.model().details_pool.threads_running(): if not self.search_pool.threads_running() and not self.results_view.model().cover_pool.threads_running() and not self.results_view.model().details_pool.threads_running():

View File

@ -70,7 +70,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>215</width> <width>215</width>
<height>116</height> <height>93</height>
</rect> </rect>
</property> </property>
</widget> </widget>
@ -101,6 +101,16 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QCheckBox" name="open_external">
<property name="toolTip">
<string>Open a selected book in the system's web browser</string>
</property>
<property name="text">
<string>Open in &amp;external browser</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QSplitter" name="splitter_2"> <widget class="QSplitter" name="splitter_2">

View File

@ -76,7 +76,7 @@ class WaterstonesUKStore(BasicStoreConfig, StorePlugin):
s.detail_item = id s.detail_item = id
formats = [] formats = []
if epub: if epub:
formats.append('EPUB') formats.append('ePub')
if pdf: if pdf:
formats.append('PDF') formats.append('PDF')
s.formats = ', '.join(formats) s.formats = ', '.join(formats)

View File

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
from __future__ import (unicode_literals, division, absolute_import, print_function)
__license__ = 'GPL 3'
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import urllib
from contextlib import closing
from lxml import html
from PyQt4.Qt import QUrl
from calibre import browser, url_slash_cleaner
from calibre.gui2 import open_url
from calibre.gui2.store import StorePlugin
from calibre.gui2.store.basic_config import BasicStoreConfig
from calibre.gui2.store.search_result import SearchResult
from calibre.gui2.store.web_store_dialog import WebStoreDialog
class WeightlessBooksStore(BasicStoreConfig, StorePlugin):
def open(self, parent=None, detail_item=None, external=False):
url = 'http://weightlessbooks.com/'
if external or self.config.get('open_external', False):
open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url)))
else:
d = WebStoreDialog(self.gui, url, parent, detail_item)
d.setWindowTitle(self.name)
d.set_tags(self.config.get('tags', ''))
d.exec_()
def search(self, query, max_results=10, timeout=60):
url = 'http://weightlessbooks.com/?s=' + urllib.quote_plus(query)
br = browser()
counter = max_results
with closing(br.open(url, timeout=timeout)) as f:
doc = html.fromstring(f.read())
for data in doc.xpath('//li[@id="product"]'):
if counter <= 0:
break
id = ''.join(data.xpath('.//div[@class="cover"]/a/@href'))
if not id:
continue
cover_url = ''.join(data.xpath('.//div[@class="cover"]/a/img/@src'))
price = ''.join(data.xpath('.//div[@class="buy_buttons"]/b[1]/text()'))
if not price:
continue
formats = ', '.join(data.xpath('.//select[@class="eStore_variation"]//option//text()'))
formats = formats.upper()
title = ''.join(data.xpath('.//h3/a/text()'))
author = ''.join(data.xpath('.//h3//text()'))
author = author.replace(title, '')
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.price = price.strip()
s.detail_item = id.strip()
s.drm = SearchResult.DRM_UNLOCKED
s.formats = formats
yield s

View File

@ -0,0 +1,88 @@
# -*- coding: utf-8 -*-
from __future__ import (unicode_literals, division, absolute_import, print_function)
__license__ = 'GPL 3'
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import urllib
from contextlib import closing
from lxml import html
from PyQt4.Qt import QUrl
from calibre import browser, url_slash_cleaner
from calibre.gui2 import open_url
from calibre.gui2.store import StorePlugin
from calibre.gui2.store.basic_config import BasicStoreConfig
from calibre.gui2.store.search_result import SearchResult
from calibre.gui2.store.web_store_dialog import WebStoreDialog
class WizardsTowerBooksStore(BasicStoreConfig, StorePlugin):
url = 'http://www.wizardstowerbooks.com/'
def open(self, parent=None, detail_item=None, external=False):
if detail_item:
detail_item = self.url + detail_item
if external or self.config.get('open_external', False):
open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url)))
else:
d = WebStoreDialog(self.gui, self.url, parent, detail_item)
d.setWindowTitle(self.name)
d.set_tags(self.config.get('tags', ''))
d.exec_()
def search(self, query, max_results=10, timeout=60):
url = 'http://www.wizardstowerbooks.com/search.html?for=' + urllib.quote(query)
br = browser()
counter = max_results
with closing(br.open(url, timeout=timeout)) as f:
doc = html.fromstring(f.read())
for data in doc.xpath('//table[@class="gridp"]//td'):
if counter <= 0:
break
id = ''.join(data.xpath('.//span[@class="prti"]/a/@href'))
id = id.strip()
if not id:
continue
cover_url = ''.join(data.xpath('.//div[@class="prim"]/a/img/@src'))
cover_url = url_slash_cleaner(self.url + cover_url.strip())
price = ''.join(data.xpath('.//font[@class="selling_price"]//text()'))
price = price.strip()
if not price:
continue
title = ''.join(data.xpath('.//span[@class="prti"]/a/b/text()'))
author = ''.join(data.xpath('.//p[@class="last"]/text()'))
a, b, author = author.partition(' by ')
counter -= 1
s = SearchResult()
s.cover_url = cover_url
s.title = title.strip()
s.author = author.strip()
s.price = price.strip()
s.detail_item = id.strip()
s.drm = SearchResult.DRM_UNLOCKED
yield s
def get_details(self, search_result, timeout):
br = browser()
with closing(br.open(url_slash_cleaner(self.url + search_result.detail_item), timeout=timeout)) as nf:
idata = html.fromstring(nf.read())
formats = ', '.join(idata.xpath('//select[@id="N1_"]//option//text()'))
search_result.formats = formats.upper()
return True

View File

@ -2048,12 +2048,12 @@ class TagBrowserMixin(object): # {{{
self.library_view.select_rows(ids) self.library_view.select_rows(ids)
# refreshing the tags view happens at the emit()/call() site # refreshing the tags view happens at the emit()/call() site
def do_author_sort_edit(self, parent, id): def do_author_sort_edit(self, parent, id, select_sort=True):
''' '''
Open the manage authors dialog Open the manage authors dialog
''' '''
db = self.library_view.model().db db = self.library_view.model().db
editor = EditAuthorsDialog(parent, db, id) editor = EditAuthorsDialog(parent, db, id, select_sort)
d = editor.exec_() d = editor.exec_()
if d: if d:
for (id, old_author, new_author, new_sort) in editor.result: for (id, old_author, new_author, new_sort) in editor.result:

View File

@ -435,7 +435,7 @@ class DevicePage(QWizardPage, DeviceUI):
self.registerField("device", self.device_view) self.registerField("device", self.device_view)
def initializePage(self): def initializePage(self):
self.label.setText(_('Choose you e-book device. If your device is' self.label.setText(_('Choose your e-book device. If your device is'
' not in the list, choose a "%s" device.')%Device.manufacturer) ' not in the list, choose a "%s" device.')%Device.manufacturer)
self.man_model = ManufacturerModel() self.man_model = ManufacturerModel()
self.manufacturer_view.setModel(self.man_model) self.manufacturer_view.setModel(self.man_model)

View File

@ -27,7 +27,7 @@ from calibre.utils.logging import default_log as log
from calibre.utils.magick.draw import thumbnail from calibre.utils.magick.draw import thumbnail
from calibre.utils.zipfile import ZipFile, ZipInfo from calibre.utils.zipfile import ZipFile, ZipInfo
FIELDS = ['all', 'title', 'author_sort', 'authors', 'comments', FIELDS = ['all', 'title', 'title_sort', 'author_sort', 'authors', 'comments',
'cover', 'formats','id', 'isbn', 'ondevice', 'pubdate', 'publisher', 'cover', 'formats','id', 'isbn', 'ondevice', 'pubdate', 'publisher',
'rating', 'series_index', 'series', 'size', 'tags', 'timestamp', 'uuid'] 'rating', 'series_index', 'series', 'size', 'tags', 'timestamp', 'uuid']
@ -66,7 +66,7 @@ class CSV_XML(CatalogPlugin): # {{{
dest = 'sort_by', dest = 'sort_by',
action = None, action = None,
help = _('Output field to sort on.\n' help = _('Output field to sort on.\n'
'Available fields: author_sort, id, rating, size, timestamp, title.\n' 'Available fields: author_sort, id, rating, size, timestamp, title_sort\n'
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: CSV, XML output formats"))] "Applies to: CSV, XML output formats"))]
@ -76,7 +76,7 @@ class CSV_XML(CatalogPlugin): # {{{
if opts.verbose: if opts.verbose:
opts_dict = vars(opts) opts_dict = vars(opts)
log("%s(): Generating %s" % (self.name,self.fmt)) log("%s(): Generating %s" % (self.name,self.fmt.upper()))
if opts.connected_device['is_device_connected']: if opts.connected_device['is_device_connected']:
log(" connected_device: %s" % opts.connected_device['name']) log(" connected_device: %s" % opts.connected_device['name'])
if opts_dict['search_text']: if opts_dict['search_text']:
@ -126,8 +126,11 @@ class CSV_XML(CatalogPlugin): # {{{
for field in fields: for field in fields:
if field.startswith('#'): if field.startswith('#'):
item = db.get_field(entry['id'],field,index_is_id=True) item = db.get_field(entry['id'],field,index_is_id=True)
elif field == 'title_sort':
item = entry['sort']
else: else:
item = entry[field] item = entry[field]
if item is None: if item is None:
outstr.append('""') outstr.append('""')
continue continue
@ -167,7 +170,7 @@ class CSV_XML(CatalogPlugin): # {{{
item = getattr(E, field.replace('#','_'))(val) item = getattr(E, field.replace('#','_'))(val)
record.append(item) record.append(item)
for field in ('id', 'uuid', 'title', 'publisher', 'rating', 'size', for field in ('id', 'uuid', 'publisher', 'rating', 'size',
'isbn','ondevice'): 'isbn','ondevice'):
if field in fields: if field in fields:
val = r[field] val = r[field]
@ -178,6 +181,10 @@ class CSV_XML(CatalogPlugin): # {{{
item = getattr(E, field)(val) item = getattr(E, field)(val)
record.append(item) record.append(item)
if 'title' in fields:
title = E.title(r['title'], sort=r['sort'])
record.append(title)
if 'authors' in fields: if 'authors' in fields:
aus = E.authors(sort=r['author_sort']) aus = E.authors(sort=r['author_sort'])
for au in r['authors']: for au in r['authors']:
@ -367,7 +374,7 @@ class BIBTEX(CatalogPlugin): # {{{
try: try:
item = html2text(item) item = html2text(item)
except: except:
log(" WARNING: error in converting comments to text") log.warn("Failed to convert comments to text")
bibtex_entry.append(u'note = "%s"' % bibtexdict.utf8ToBibtex(item)) bibtex_entry.append(u'note = "%s"' % bibtexdict.utf8ToBibtex(item))
elif field == 'isbn' : elif field == 'isbn' :
@ -461,17 +468,17 @@ class BIBTEX(CatalogPlugin): # {{{
if opts.bibfile_enc in bibfile_enc : if opts.bibfile_enc in bibfile_enc :
bibfile_enc = opts.bibfile_enc bibfile_enc = opts.bibfile_enc
else : else :
log(" WARNING: incorrect --choose-encoding flag, revert to default") log.warn("Incorrect --choose-encoding flag, revert to default")
bibfile_enc = bibfile_enc[0] bibfile_enc = bibfile_enc[0]
if opts.bibfile_enctag in bibfile_enctag : if opts.bibfile_enctag in bibfile_enctag :
bibfile_enctag = opts.bibfile_enctag bibfile_enctag = opts.bibfile_enctag
else : else :
log(" WARNING: incorrect --choose-encoding-configuration flag, revert to default") log.warn("Incorrect --choose-encoding-configuration flag, revert to default")
bibfile_enctag = bibfile_enctag[0] bibfile_enctag = bibfile_enctag[0]
if opts.bib_entry in bib_entry : if opts.bib_entry in bib_entry :
bib_entry = opts.bib_entry bib_entry = opts.bib_entry
else : else :
log(" WARNING: incorrect --entry-type flag, revert to default") log.warn("Incorrect --entry-type flag, revert to default")
bib_entry = bib_entry[0] bib_entry = bib_entry[0]
if opts.verbose: if opts.verbose:
@ -528,7 +535,7 @@ class BIBTEX(CatalogPlugin): # {{{
elif opts.impcit == 'True' : elif opts.impcit == 'True' :
citation_bibtex= True citation_bibtex= True
else : else :
log(" WARNING: incorrect --create-citation, revert to default") log.warn("Incorrect --create-citation, revert to default")
citation_bibtex= True citation_bibtex= True
else : else :
citation_bibtex= opts.impcit citation_bibtex= opts.impcit
@ -540,7 +547,7 @@ class BIBTEX(CatalogPlugin): # {{{
elif opts.addfiles == 'True' : elif opts.addfiles == 'True' :
addfiles_bibtex = True addfiles_bibtex = True
else : else :
log(" WARNING: incorrect --add-files-path, revert to default") log.warn("Incorrect --add-files-path, revert to default")
addfiles_bibtex= True addfiles_bibtex= True
else : else :
addfiles_bibtex = opts.addfiles addfiles_bibtex = opts.addfiles
@ -558,7 +565,7 @@ class BIBTEX(CatalogPlugin): # {{{
if bib_entry == 'book' : if bib_entry == 'book' :
nb_books = len(filter(check_entry_book_valid, data)) nb_books = len(filter(check_entry_book_valid, data))
if nb_books < nb_entries : if nb_books < nb_entries :
log(" WARNING: only %d entries in %d are book compatible" % (nb_books, nb_entries)) log.warn("Only %d entries in %d are book compatible" % (nb_books, nb_entries))
nb_entries = nb_books nb_entries = nb_books
# If connected device, add 'On Device' values to data # If connected device, add 'On Device' values to data
@ -944,6 +951,7 @@ class EPUB_MOBI(CatalogPlugin):
catalog.createDirectoryStructure() catalog.createDirectoryStructure()
catalog.copyResources() catalog.copyResources()
catalog.buildSources() catalog.buildSources()
Options managed in gui2.catalog.catalog_epub_mobi.py
''' '''
# A single number creates 'Last x days' only. # A single number creates 'Last x days' only.

View File

@ -33,7 +33,7 @@ from calibre import isbytestring
from calibre.utils.filenames import ascii_filename from calibre.utils.filenames import ascii_filename
from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp
from calibre.utils.config import prefs, tweaks, from_json, to_json from calibre.utils.config import prefs, tweaks, from_json, to_json
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key, strcmp
from calibre.utils.search_query_parser import saved_searches, set_saved_searches from calibre.utils.search_query_parser import saved_searches, set_saved_searches
from calibre.ebooks import BOOK_EXTENSIONS, check_ebook_format from calibre.ebooks import BOOK_EXTENSIONS, check_ebook_format
from calibre.utils.magick.draw import save_cover_data_to from calibre.utils.magick.draw import save_cover_data_to
@ -1920,6 +1920,18 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
result.append(r) result.append(r)
return ' & '.join(result).replace('|', ',') return ' & '.join(result).replace('|', ',')
def _update_author_in_cache(self, id_, ss, final_authors):
self.conn.execute('UPDATE books SET author_sort=? WHERE id=?', (ss, id_))
self.data.set(id_, self.FIELD_MAP['authors'],
','.join([a.replace(',', '|') for a in final_authors]),
row_is_id=True)
self.data.set(id_, self.FIELD_MAP['author_sort'], ss, row_is_id=True)
aum = self.authors_with_sort_strings(id_, index_is_id=True)
self.data.set(id_, self.FIELD_MAP['au_map'],
':#:'.join([':::'.join((au.replace(',', '|'), aus)) for (au, aus) in aum]),
row_is_id=True)
def _set_authors(self, id, authors, allow_case_change=False): def _set_authors(self, id, authors, allow_case_change=False):
if not authors: if not authors:
authors = [_('Unknown')] authors = [_('Unknown')]
@ -1933,14 +1945,17 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
a = a.strip().replace(',', '|') a = a.strip().replace(',', '|')
if not isinstance(a, unicode): if not isinstance(a, unicode):
a = a.decode(preferred_encoding, 'replace') a = a.decode(preferred_encoding, 'replace')
aus = self.conn.get('SELECT id, name FROM authors WHERE name=?', (a,)) aus = self.conn.get('SELECT id, name, sort FROM authors WHERE name=?', (a,))
if aus: if aus:
aid, name = aus[0] aid, name, sort = aus[0]
# Handle change of case # Handle change of case
if name != a: if name != a:
if allow_case_change: if allow_case_change:
self.conn.execute('''UPDATE authors ns = author_to_author_sort(a.replace('|', ','))
SET name=? WHERE id=?''', (a, aid)) if strcmp(sort, ns) == 0:
sort = ns
self.conn.execute('''UPDATE authors SET name=?, sort=?
WHERE id=?''', (a, sort, aid))
case_change = True case_change = True
else: else:
a = name a = name
@ -1957,17 +1972,14 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
bks = self.conn.get('''SELECT book FROM books_authors_link bks = self.conn.get('''SELECT book FROM books_authors_link
WHERE author=?''', (aid,)) WHERE author=?''', (aid,))
books_to_refresh |= set([bk[0] for bk in bks]) books_to_refresh |= set([bk[0] for bk in bks])
for bk in books_to_refresh:
ss = self.author_sort_from_book(id, index_is_id=True) ss = self.author_sort_from_book(id, index_is_id=True)
self.conn.execute('UPDATE books SET author_sort=? WHERE id=?', aus = self.author_sort(bk, index_is_id=True)
(ss, id)) if strcmp(aus, ss) == 0:
self.data.set(id, self.FIELD_MAP['authors'], self._update_author_in_cache(bk, ss, final_authors)
','.join([a.replace(',', '|') for a in final_authors]), # This can repeat what was done above in rare cases. Let it.
row_is_id=True) ss = self.author_sort_from_book(id, index_is_id=True)
self.data.set(id, self.FIELD_MAP['author_sort'], ss, row_is_id=True) self._update_author_in_cache(id, ss, final_authors)
aum = self.authors_with_sort_strings(id, index_is_id=True)
self.data.set(id, self.FIELD_MAP['au_map'],
':#:'.join([':::'.join((au.replace(',', '|'), aus)) for (au, aus) in aum]),
row_is_id=True)
return books_to_refresh return books_to_refresh
def set_authors(self, id, authors, notify=True, commit=True, def set_authors(self, id, authors, notify=True, commit=True,
@ -2273,6 +2285,12 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
return [] return []
return result return result
def get_author_id(self, author):
author = author.replace(',', '|')
result = self.conn.get('SELECT id FROM authors WHERE name=?',
(author,), all=False)
return result
def set_sort_field_for_author(self, old_id, new_sort, commit=True, notify=False): def set_sort_field_for_author(self, old_id, new_sort, commit=True, notify=False):
self.conn.execute('UPDATE authors SET sort=? WHERE id=?', \ self.conn.execute('UPDATE authors SET sort=? WHERE id=?', \
(new_sort.strip(), old_id)) (new_sort.strip(), old_id))
@ -3038,7 +3056,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
''' '''
if prefix is None: if prefix is None:
prefix = self.library_path prefix = self.library_path
FIELDS = set(['title', 'authors', 'author_sort', 'publisher', 'rating', FIELDS = set(['title', 'sort', 'authors', 'author_sort', 'publisher', 'rating',
'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index',
'uuid', 'pubdate', 'last_modified', 'identifiers']) 'uuid', 'pubdate', 'last_modified', 'identifiers'])
for x in self.custom_column_num_map: for x in self.custom_column_num_map:

View File

@ -19,7 +19,7 @@ Editing the metadata of one book at a time
Click the book you want to edit and then click the :guilabel:`Edit metadata` button or press the ``E`` key. A dialog opens that allows you to edit all aspects of the metadata. It has various features to make editing faster and more efficient. A list of the commonly used tips: Click the book you want to edit and then click the :guilabel:`Edit metadata` button or press the ``E`` key. A dialog opens that allows you to edit all aspects of the metadata. It has various features to make editing faster and more efficient. A list of the commonly used tips:
* You can click the button in between title and authors to swap them automatically. * You can click the button in between title and authors to swap them automatically.
* You can click the button next to author sort to automatically to have |app| automatically fill it from the author name. * You can click the button next to author sort to have |app| automatically fill it in using the sort values stored with each author. Use the :guilabel:`Manage authors` dialog to see and change the authors' sort values. This dialog can be opened by clicking and holding the button next to author sort.
* You can click the button next to tags to use the Tag Editor to manage the tags associated with the book. * You can click the button next to tags to use the Tag Editor to manage the tags associated with the book.
* The ISBN box will have a red background if you enter an invalid ISBN. It will be green for valid ISBNs * The ISBN box will have a red background if you enter an invalid ISBN. It will be green for valid ISBNs
* The author sort box will be red if the author sort value differs from what |app| thinks it should be. * The author sort box will be red if the author sort value differs from what |app| thinks it should be.

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2009-11-06 19:11+0000\n" "PO-Revision-Date: 2009-11-06 19:11+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Afrikaans <af@li.org>\n" "Language-Team: Afrikaans <af@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: 2011-04-30 04:34+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:34+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -866,59 +866,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -934,7 +934,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -942,7 +942,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-01-03 01:54+0000\n" "PO-Revision-Date: 2011-01-03 01:54+0000\n"
"Last-Translator: Amr Hesham <Unknown>\n" "Last-Translator: Amr Hesham <Unknown>\n"
"Language-Team: Arabic <ar@li.org>\n" "Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-04-30 04:34+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:35+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:121
@ -937,59 +937,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "جهاز أبل" msgstr "جهاز أبل"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "التواصل عن طريق iTunes/iBooks." msgstr "التواصل عن طريق iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "تم الكشف عن جهاز ابل, يتم تشغيل iTunes, الرجاء الانتظار..." msgstr "تم الكشف عن جهاز ابل, يتم تشغيل iTunes, الرجاء الانتظار..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d من %d" msgstr "%d من %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "تم" msgstr "تم"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1005,7 +1005,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "الأخبار" msgstr "الأخبار"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1013,7 +1013,7 @@ msgstr "الأخبار"
msgid "Catalog" msgid "Catalog"
msgstr "الفهرس" msgstr "الفهرس"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "تواصل معا iTunes" msgstr "تواصل معا iTunes"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-01-31 21:37+0000\n" "PO-Revision-Date: 2010-01-31 21:37+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Asturian <ast@li.org>\n" "Language-Team: Asturian <ast@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: 2011-04-30 04:34+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:35+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -866,59 +866,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -934,7 +934,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -942,7 +942,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

View File

@ -6,14 +6,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre 0.4.51\n" "Project-Id-Version: calibre 0.4.51\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-03-30 01:18+0000\n" "PO-Revision-Date: 2011-05-02 10:13+0000\n"
"Last-Translator: Yassen Nikolov <Unknown>\n" "Last-Translator: airmaxbg <airmax_reg@abv.bg>\n"
"Language-Team: bg\n" "Language-Team: bg\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: 2011-04-30 04:35+0000\n" "X-Launchpad-Export-Date: 2011-05-03 04:37+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -193,13 +193,13 @@ msgstr "Основен"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:148 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:148
msgid "Customize" msgid "Customize"
msgstr "" msgstr "Персонализиране"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:156 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:156
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:46
msgid "Cannot configure" msgid "Cannot configure"
msgstr "" msgstr "Не може да се конфигурира"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:318 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:318
msgid "File type" msgid "File type"
@ -234,7 +234,7 @@ msgstr "Предпочитания"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:609 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:609
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33
msgid "Store" msgid "Store"
msgstr "" msgstr "Съхраняване"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:18 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:18
msgid "" msgid ""
@ -271,6 +271,9 @@ msgid ""
"Textile references to images. The referenced images as well as the TXT file " "Textile references to images. The referenced images as well as the TXT file "
"are added to the archive." "are added to the archive."
msgstr "" msgstr ""
"Създаване на TXTZ архив когато TXT файл е внесъл съдържащи маркови или "
"текстилни справки към снимки. Съответните изображения както и TXT файлове се "
"добавят към архива."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:168 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:168
msgid "Extract cover from comic files" msgid "Extract cover from comic files"
@ -888,60 +891,60 @@ msgstr "Кеширай обложки от iTunes/iBooks"
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "Разреши кеширане и показване на обложки от iTunes/iBooks" msgstr "Разреши кеширане и показване на обложки от iTunes/iBooks"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple устройство" msgstr "Apple устройство"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Комуникирай с iTunes/iBooks." msgstr "Комуникирай с iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
"Apple устройство разпознато, стартиране на iTunes, моля изчакайте ..." "Apple устройство разпознато, стартиране на iTunes, моля изчакайте ..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d от %d" msgstr "%d от %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "завършено" msgstr "завършено"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -957,7 +960,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Новини" msgstr "Новини"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -965,7 +968,7 @@ msgstr "Новини"
msgid "Catalog" msgid "Catalog"
msgstr "Каталог" msgstr "Каталог"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-12-11 02:29+0000\n" "PO-Revision-Date: 2010-12-11 02:29+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Bengali <bn@li.org>\n" "Language-Team: Bengali <bn@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: 2011-04-30 04:35+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:36+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -861,59 +861,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -929,7 +929,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -937,7 +937,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-01-18 21:03+0000\n" "PO-Revision-Date: 2011-01-18 21:03+0000\n"
"Last-Translator: Senad Sopovic <Unknown>\n" "Last-Translator: Senad Sopovic <Unknown>\n"
"Language-Team: Bosnian <bs@li.org>\n" "Language-Team: Bosnian <bs@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: 2011-04-30 04:35+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:36+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -861,59 +861,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple uređah" msgstr "Apple uređah"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "završeno" msgstr "završeno"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -929,7 +929,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Vijesti" msgstr "Vijesti"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -937,7 +937,7 @@ msgstr "Vijesti"
msgid "Catalog" msgid "Catalog"
msgstr "Katalog" msgstr "Katalog"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

View File

@ -10,14 +10,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ca\n" "Project-Id-Version: ca\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-27 18:21+0000\n" "PO-Revision-Date: 2011-04-30 18:09+0000\n"
"Last-Translator: FerranRius <frius64@hotmail.com>\n" "Last-Translator: FerranRius <frius64@hotmail.com>\n"
"Language-Team: \n" "Language-Team: \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: 2011-04-30 04:36+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:37+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -546,7 +546,7 @@ msgstr "Llibres per al Kindle d'Amazon"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114
msgid "Kindle books from Amazon.uk" msgid "Kindle books from Amazon.uk"
msgstr "" msgstr "Llibres per al Kindle d'Amazon.uk"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119
msgid "Ebooks for readers." msgid "Ebooks for readers."
@ -602,15 +602,15 @@ msgstr "El vostre llibre. A la vostra manera."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184
msgid "Feel every word" msgid "Feel every word"
msgstr "" msgstr "Sentiu cada paraula"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1189 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1189
msgid "Foyles of London, online" msgid "Foyles of London, online"
msgstr "" msgstr "Foyles de Londres en línia"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194
msgid "Kindle eBooks" msgid "Kindle eBooks"
msgstr "" msgstr "Llibres per al Kindle"
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
msgid "Conversion Input" msgid "Conversion Input"
@ -936,20 +936,20 @@ msgstr ""
"Habilita que les portades d'iTunes/iBooks es visualitzin i es desin a la " "Habilita que les portades d'iTunes/iBooks es visualitzin i es desin a la "
"memòria cau" "memòria cau"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Dispositiu Apple" msgstr "Dispositiu Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Comunica't amb iTunes/iBooks." msgstr "Comunica't amb iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
"S'ha detectat un dispositiu Apple, s'està engegant l'iTunes, espereu ..." "S'ha detectat un dispositiu Apple, s'està engegant l'iTunes, espereu ..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -958,28 +958,28 @@ msgstr ""
"los des de la biblioteca de l'iTunes a l'escriptori i després afegiu-los a " "los des de la biblioteca de l'iTunes a l'escriptori i després afegiu-los a "
"la finestra de la biblioteca del calibre." "la finestra de la biblioteca del calibre."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "S'està actualitzant el llistat de metadades del dispositiu..." msgstr "S'està actualitzant el llistat de metadades del dispositiu..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d de %d" msgstr "%d de %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "s'ha acabat" msgstr "s'ha acabat"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -989,7 +989,7 @@ msgstr ""
"Suprimiu-los amb l'aplicació de l'iBooks.\n" "Suprimiu-los amb l'aplicació de l'iBooks.\n"
"Feu clic a «Mostra detalls» per a la llista." "Feu clic a «Mostra detalls» per a la llista."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -997,7 +997,7 @@ msgstr ""
"No s'ha pogut convertir algunes portades.\n" "No s'ha pogut convertir algunes portades.\n"
"Feu clic a «Mostra detalls» per a la llista." "Feu clic a «Mostra detalls» per a la llista."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1013,7 +1013,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Notícies" msgstr "Notícies"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1021,7 +1021,7 @@ msgstr "Notícies"
msgid "Catalog" msgid "Catalog"
msgstr "Catàleg" msgstr "Catàleg"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Comunica't amb l'iTunes" msgstr "Comunica't amb l'iTunes"
@ -6172,11 +6172,11 @@ msgstr "Feu clic per obrir"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:123
msgid "Ids" msgid "Ids"
msgstr "" msgstr "Identificadors"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:133
msgid "Book %s of <span class=\"series_name\">%s</span>" msgid "Book %s of <span class=\"series_name\">%s</span>"
msgstr "" msgstr "Llibre %s de <span class=\"series_name\">%s</span>"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:144
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:978 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:978
@ -11542,7 +11542,7 @@ msgstr "Grandària (MB)"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
msgid "Modified" msgid "Modified"
msgstr "" msgstr "Modificat"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274
@ -11725,6 +11725,9 @@ msgid ""
"Cause a running calibre instance, if any, to be shutdown. Note that if there " "Cause a running calibre instance, if any, to be shutdown. Note that if there "
"are running jobs, they will be silently aborted, so use with care." "are running jobs, they will be silently aborted, so use with care."
msgstr "" msgstr ""
"Fa que es tanqui qualsevol instància del calibre, si n'hi ha alguna. "
"Vigileu, ja que si hi ha tasques en execució s'interrompran sense cap "
"confirmació."
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:69
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:678 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:678
@ -12965,19 +12968,19 @@ msgstr "Canvia el tipus de &lletra (caldrà reiniciar)"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:210
msgid "Main Interface" msgid "Main Interface"
msgstr "" msgstr "Interfície principal"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:211
msgid "Select displayed metadata" msgid "Select displayed metadata"
msgstr "" msgstr "Selecciona les metadades que es visualitzen"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:212
msgid "Move up" msgid "Move up"
msgstr "" msgstr "Desplaça cap amunt"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:213
msgid "Move down" msgid "Move down"
msgstr "" msgstr "Desplaça cap avall"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:214
msgid "Use &Roman numerals for series" msgid "Use &Roman numerals for series"
@ -12988,6 +12991,8 @@ msgid ""
"Note that <b>comments</b> will always be displayed at the end, regardless of " "Note that <b>comments</b> will always be displayed at the end, regardless of "
"the position you assign here." "the position you assign here."
msgstr "" msgstr ""
"Tingueu en compte que els <b>comentaris</b> es mostren sempre al final, "
"independentment de la posició que els assigneu aquí."
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:217
msgid "Tags browser category &partitioning method:" msgid "Tags browser category &partitioning method:"
@ -14282,11 +14287,11 @@ msgstr "Aplica els canvis que s'ha fet a l'ajustament"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:339 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:339
msgid "Delete current search" msgid "Delete current search"
msgstr "" msgstr "Suprimeix la cerca actual"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:340
msgid "No search is selected" msgid "No search is selected"
msgstr "" msgstr "No s'ha seleccionat cap cerca"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:342
msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" msgid "The selected search will be <b>permanently deleted</b>. Are you sure?"
@ -14315,18 +14320,20 @@ msgid ""
"Save current search under the name shown in the box. Press and hold for a " "Save current search under the name shown in the box. Press and hold for a "
"pop-up options menu." "pop-up options menu."
msgstr "" msgstr ""
"Desa la cerca actual amb el nom que hi ha al quadre. Premeu i manteniu per a "
"un menú d'opcions emergent."
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:458 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:458
msgid "Create saved search" msgid "Create saved search"
msgstr "" msgstr "Crea una cerca per desar"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:462 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:462
msgid "Delete saved search" msgid "Delete saved search"
msgstr "" msgstr "Suprimeix la cerca desada"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:466 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:466
msgid "Manage saved searches" msgid "Manage saved searches"
msgstr "" msgstr "Gestiona les cerques desades"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:476 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:476
msgid "*Current search" msgid "*Current search"
@ -14438,31 +14445,31 @@ msgstr "No disponible"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py:51
msgid "Updating book cache" msgid "Updating book cache"
msgstr "" msgstr "S'està actualitzant la memòria cau de llibres"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:42
msgid "Checking last download date." msgid "Checking last download date."
msgstr "" msgstr "S'està comprovant la darrera data de descàrrega."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:48
msgid "Downloading book list from MobileRead." msgid "Downloading book list from MobileRead."
msgstr "" msgstr "S'està descarregant la llista de llibres des de MobileRead."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:61
msgid "Processing books." msgid "Processing books."
msgstr "" msgstr "S'està processant els llibres."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:70
msgid "%s of %s books processed." msgid "%s of %s books processed."
msgstr "" msgstr "S'ha processat %s de %s llibres."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/mobileread_plugin.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/mobileread_plugin.py:62
msgid "Updating MobileRead book cache..." msgid "Updating MobileRead book cache..."
msgstr "" msgstr "S'està actualitzant la memòria cau de llibres MobileRead..."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:69
msgid "&Query:" msgid "&Query:"
msgstr "" msgstr "&Consulta:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:72
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:63
@ -14483,11 +14490,11 @@ msgstr "Cerca:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192
msgid "&Price:" msgid "&Price:"
msgstr "" msgstr "&Preu:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196
msgid "Titl&e/Author/Price ..." msgid "Titl&e/Author/Price ..."
msgstr "" msgstr "Tít&ol/autor/preu..."
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33
msgid "DRM" msgid "DRM"
@ -15973,7 +15980,7 @@ msgstr "buit"
#: /home/kovid/work/calibre/src/calibre/library/caches.py:564 #: /home/kovid/work/calibre/src/calibre/library/caches.py:564
msgid "Invalid boolean query \"{0}\"" msgid "Invalid boolean query \"{0}\""
msgstr "" msgstr "Consulta booleana no vàlida «{0}»"
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:51 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:51
msgid "" msgid ""
@ -17192,6 +17199,8 @@ msgstr "La data de publicació"
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46
msgid "The date when the metadata for this book record was last modified" msgid "The date when the metadata for this book record was last modified"
msgstr "" msgstr ""
"La data que les metadades d'aquest registre de llibre es van modificar per "
"darrer cop"
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48
msgid "The calibre internal id" msgid "The calibre internal id"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-24 21:34+0000\n" "PO-Revision-Date: 2011-04-24 21:34+0000\n"
"Last-Translator: Marek Sušický <Unknown>\n" "Last-Translator: Marek Sušický <Unknown>\n"
"Language-Team: Czech <cs@li.org>\n" "Language-Team: Czech <cs@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: 2011-04-30 04:36+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:37+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -903,19 +903,19 @@ msgstr "Ukládat obálky z iTunes/iBooks do mezipaměti"
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Zařízení Apple" msgstr "Zařízení Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Komunikovat s iTunes/iBooks." msgstr "Komunikovat s iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Nalezeno zařízení Apple, spouštění iTunes, čekejte..." msgstr "Nalezeno zařízení Apple, spouštění iTunes, čekejte..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -923,28 +923,28 @@ msgstr ""
"Nelze kopírovat knihy přímo z iDevice. Přetáhněte je z knihovny iTunes na " "Nelze kopírovat knihy přímo z iDevice. Přetáhněte je z knihovny iTunes na "
"plochu a pak je přidejte do okna knihovny calibre." "plochu a pak je přidejte do okna knihovny calibre."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Záznamy metadat v zařízení se aktualizují..." msgstr "Záznamy metadat v zařízení se aktualizují..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d z %d" msgstr "%d z %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "dokončeno" msgstr "dokončeno"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -954,7 +954,7 @@ msgstr ""
"Smazat pomocí aplikace iBooks.\n" "Smazat pomocí aplikace iBooks.\n"
"Pro zobrazení seznamu klepněte na 'Zobrazit podrobnosti'." "Pro zobrazení seznamu klepněte na 'Zobrazit podrobnosti'."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -962,7 +962,7 @@ msgstr ""
"Některé obálky nelze převést.\n" "Některé obálky nelze převést.\n"
"Pro zobrazení seznamu klepněte na 'Zobrazit podrobnosti'." "Pro zobrazení seznamu klepněte na 'Zobrazit podrobnosti'."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -978,7 +978,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Zprávy" msgstr "Zprávy"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -986,7 +986,7 @@ msgstr "Zprávy"
msgid "Catalog" msgid "Catalog"
msgstr "Katalog" msgstr "Katalog"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Komunikovat s iTunes." msgstr "Komunikovat s iTunes."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-12-19 12:26+0000\n" "PO-Revision-Date: 2010-12-19 12:26+0000\n"
"Last-Translator: Glenn <Unknown>\n" "Last-Translator: Glenn <Unknown>\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: 2011-04-30 04:37+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:37+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -906,19 +906,19 @@ msgstr "Cache omslag fra iTunes/iBooks"
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple enhed" msgstr "Apple enhed"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Kommunikér med iTunes/iBooks." msgstr "Kommunikér med iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Apple-enhed fundet, starter iTunes, vent venligst..." msgstr "Apple-enhed fundet, starter iTunes, vent venligst..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -926,28 +926,28 @@ msgstr ""
"Kan ikke kopiere bøger direkte fra iDevice. Træk fra iTunes-bibliotek til " "Kan ikke kopiere bøger direkte fra iDevice. Træk fra iTunes-bibliotek til "
"skrivebord, tilføj herefter til calibres biblioteksvindue." "skrivebord, tilføj herefter til calibres biblioteksvindue."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Opdaterer enhed metadata listen..." msgstr "Opdaterer enhed metadata listen..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d af %d" msgstr "%d af %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "afsluttet" msgstr "afsluttet"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -957,7 +957,7 @@ msgstr ""
"Sletter ved at anvende iBooks app.\n" "Sletter ved at anvende iBooks app.\n"
"Klik 'Show Details' for en liste." "Klik 'Show Details' for en liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -965,7 +965,7 @@ msgstr ""
"Nogle omslagsdele kunne ikke konverteres.\n" "Nogle omslagsdele kunne ikke konverteres.\n"
"Klik 'Show Details' for en liste." "Klik 'Show Details' for en liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -981,7 +981,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Nyheder" msgstr "Nyheder"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -989,7 +989,7 @@ msgstr "Nyheder"
msgid "Catalog" msgid "Catalog"
msgstr "Katalog" msgstr "Katalog"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Kommunikér med iTunes." msgstr "Kommunikér med iTunes."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-29 15:02+0000\n" "PO-Revision-Date: 2011-05-01 08:37+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Armin Geller <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: 2011-04-30 04:39+0000\n" "X-Launchpad-Export-Date: 2011-05-02 04:34+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -542,7 +542,7 @@ msgstr "Kindle Bücher von Amazone"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114
msgid "Kindle books from Amazon.uk" msgid "Kindle books from Amazon.uk"
msgstr "" msgstr "Kindle Bücher fon Amazon.uk"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119
msgid "Ebooks for readers." msgid "Ebooks for readers."
@ -932,19 +932,19 @@ msgstr ""
"Ermöglicht das Zwischenspeichern und anzeigen von Umschlägen aus " "Ermöglicht das Zwischenspeichern und anzeigen von Umschlägen aus "
"iTunes/iBooks" "iTunes/iBooks"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple- Gerät" msgstr "Apple- Gerät"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Kommunikation mit iTunes/iBooks." msgstr "Kommunikation mit iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Gerät von Apple entdeckt, starte iTunes, einen Moment bitte..." msgstr "Gerät von Apple entdeckt, starte iTunes, einen Moment bitte..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -952,28 +952,28 @@ msgstr ""
"Kann Bücher nicht direkt vom iDevice kopieren. Ziehen Sie sie aus der iTunes " "Kann Bücher nicht direkt vom iDevice kopieren. Ziehen Sie sie aus der iTunes "
"Bibliothek auf den Desktop, fügen Sie sie dann Calibres Bibliothek hinzu." "Bibliothek auf den Desktop, fügen Sie sie dann Calibres Bibliothek hinzu."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Aktualisiere die Liste der Geräte-Metadaten..." msgstr "Aktualisiere die Liste der Geräte-Metadaten..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d von %d" msgstr "%d von %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "abgeschlossen" msgstr "abgeschlossen"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -983,7 +983,7 @@ msgstr ""
"Zum Löschen die iBooks App verwenden.\n" "Zum Löschen die iBooks App verwenden.\n"
"Klicken Sie 'Zeige Details' für eine Liste." "Klicken Sie 'Zeige Details' für eine Liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -991,7 +991,7 @@ msgstr ""
"Einige Umschlagbilder konnten nicht konvertiert werden.\n" "Einige Umschlagbilder konnten nicht konvertiert werden.\n"
"Klicken Sie 'Zeige Details' für eine Liste." "Klicken Sie 'Zeige Details' für eine Liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1007,7 +1007,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Nachrichten" msgstr "Nachrichten"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1015,7 +1015,7 @@ msgstr "Nachrichten"
msgid "Catalog" msgid "Catalog"
msgstr "Katalog" msgstr "Katalog"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Kommunikation mit iTunes." msgstr "Kommunikation mit iTunes."
@ -4771,7 +4771,7 @@ msgstr "Anmerkungen abrufen (experimentell)"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:56
msgid "Not supported" msgid "Not supported"
msgstr "" msgstr "Nicht unterstützt"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:57
msgid "Fetching annotations is not supported for this device" msgid "Fetching annotations is not supported for this device"
@ -5539,7 +5539,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:545 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:545
msgid "Applying changed metadata" msgid "Applying changed metadata"
msgstr "" msgstr "Geänerte Metadaten übernehmen"
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:606 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:606
msgid "Some failures" msgid "Some failures"
@ -8571,11 +8571,11 @@ msgstr "Format"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:50
msgid "Existing" msgid "Existing"
msgstr "" msgstr "Bestehende"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_device_ui.py:51
msgid "Convertible" msgid "Convertible"
msgstr "" msgstr "konvertierbar"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:43 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:43
msgid "Choose location for calibre library" msgid "Choose location for calibre library"
@ -9185,26 +9185,29 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:990 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:990
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:587
msgid "Delete saved search/replace" msgid "Delete saved search/replace"
msgstr "" msgstr "Löschen der gespeicherten Suchen/Ersetzen-Aktion"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:991 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:991
msgid "The selected saved search/replace will be deleted. Are you sure?" msgid "The selected saved search/replace will be deleted. Are you sure?"
msgstr "" msgstr ""
"Die ausgewählte Suchen/Ersetzen-Aktion wird gelöscht. Sind Sie sicher?"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1008 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1008
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1016 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1016
msgid "Save search/replace" msgid "Save search/replace"
msgstr "" msgstr "Speichern der Suchen/Ersetzen-Aktion"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1009 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1009
msgid "Search/replace name:" msgid "Search/replace name:"
msgstr "" msgstr "Suchen/Ersetzen-Aktion Name:"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1017 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1017
msgid "" msgid ""
"That saved search/replace already exists and will be overwritten. Are you " "That saved search/replace already exists and will be overwritten. Are you "
"sure?" "sure?"
msgstr "" msgstr ""
"die gesicherte Suchen/Ersetzen-Aktion existiert schon und wird ersetzt. Sind "
"Sie sicher?"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:524
msgid "Edit Meta information" msgid "Edit Meta information"
@ -11470,7 +11473,7 @@ msgstr "Größe (MB)"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
msgid "Modified" msgid "Modified"
msgstr "" msgstr "Geändert"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274
@ -11809,15 +11812,15 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:476 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:476
msgid "Set metadata for the book from the selected format" msgid "Set metadata for the book from the selected format"
msgstr "" msgstr "Einstellen der Metadaten vom ausgewählten Buchformat"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:483 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:483
msgid "Add a format to this book" msgid "Add a format to this book"
msgstr "" msgstr "Hinzufügen eines Formates zu dem Buch"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:490 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:490
msgid "Remove the selected format from this book" msgid "Remove the selected format from this book"
msgstr "" msgstr "Löschen des ausgewählten Buchformates"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:755 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:755
msgid "Invalid cover" msgid "Invalid cover"
@ -11946,11 +11949,11 @@ msgstr "Herunterladen von Metadaten gestartet"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:111
msgid "(Failed metadata)" msgid "(Failed metadata)"
msgstr "" msgstr "(Fehlerhafte Metadaten)"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:113 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:113
msgid "(Failed cover)" msgid "(Failed cover)"
msgstr "" msgstr "(Fehlerhafter Umschlag)"
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download2.py:190
msgid "Downloaded %d of %d" msgid "Downloaded %d of %d"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-03-04 12:33+0000\n" "PO-Revision-Date: 2011-03-04 12:33+0000\n"
"Last-Translator: cosmix <Unknown>\n" "Last-Translator: cosmix <Unknown>\n"
"Language-Team: Greek <el@li.org>\n" "Language-Team: Greek <el@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: 2011-04-30 04:40+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:40+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -907,59 +907,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Συσκευή Apple" msgstr "Συσκευή Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Επικοινωνία με iTunes/iBook" msgstr "Επικοινωνία με iTunes/iBook"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Συσκευή της Apple εντοπίστηκε, έναρξη iTunes, παρακαλώ περιμένετε..." msgstr "Συσκευή της Apple εντοπίστηκε, έναρξη iTunes, παρακαλώ περιμένετε..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Ενημέρωση καταλόγου μεταδεδομένων της συσκευής" msgstr "Ενημέρωση καταλόγου μεταδεδομένων της συσκευής"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d από %d" msgstr "%d από %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "ολοκληρώθηκε" msgstr "ολοκληρώθηκε"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -975,7 +975,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Νέα" msgstr "Νέα"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -983,7 +983,7 @@ msgstr "Νέα"
msgid "Catalog" msgid "Catalog"
msgstr "Κατάλογος" msgstr "Κατάλογος"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Επικοινωνία με το iTunes" msgstr "Επικοινωνία με το iTunes"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-05-21 07:30+0000\n" "PO-Revision-Date: 2010-05-21 07:30+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: English (Australia) <en_AU@li.org>\n" "Language-Team: English (Australia) <en_AU@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: 2011-04-30 04:51+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:52+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -861,59 +861,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -929,7 +929,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -937,7 +937,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-02-27 02:43+0000\n" "PO-Revision-Date: 2010-02-27 02:43+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: English (Canada) <en_CA@li.org>\n" "Language-Team: English (Canada) <en_CA@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: 2011-04-30 04:52+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:53+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -870,59 +870,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -938,7 +938,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "News" msgstr "News"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -946,7 +946,7 @@ msgstr "News"
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-02-15 08:46+0000\n" "PO-Revision-Date: 2011-02-15 08:46+0000\n"
"Last-Translator: Vladimir Oka <Unknown>\n" "Last-Translator: Vladimir Oka <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB@li.org>\n" "Language-Team: English (United Kingdom) <en_GB@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: 2011-04-30 04:51+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:51+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -903,19 +903,19 @@ msgstr "Cache covers from iTunes/iBooks"
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple device" msgstr "Apple device"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Communicate with iTunes/iBooks." msgstr "Communicate with iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Apple device detected, launching iTunes, please wait ..." msgstr "Apple device detected, launching iTunes, please wait ..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -923,28 +923,28 @@ msgstr ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Updating device metadata listing..." msgstr "Updating device metadata listing..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d of %d" msgstr "%d of %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "finished" msgstr "finished"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -954,7 +954,7 @@ msgstr ""
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -962,7 +962,7 @@ msgstr ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -978,7 +978,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "News" msgstr "News"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -986,7 +986,7 @@ msgstr "News"
msgid "Catalog" msgid "Catalog"
msgstr "Catalogue" msgstr "Catalogue"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Communicate with iTunes." msgstr "Communicate with iTunes."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-01-09 00:03+0000\n" "PO-Revision-Date: 2010-01-09 00:03+0000\n"
"Last-Translator: Kalle Kniivilä <kalle@kniivila.net>\n" "Last-Translator: Kalle Kniivilä <kalle@kniivila.net>\n"
"Language-Team: Esperanto <eo@li.org>\n" "Language-Team: Esperanto <eo@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: 2011-04-30 04:37+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:38+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -897,59 +897,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -965,7 +965,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -973,7 +973,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-23 10:33+0000\n" "PO-Revision-Date: 2011-05-02 12:20+0000\n"
"Last-Translator: Jellby <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: 2011-04-30 04:47+0000\n" "X-Launchpad-Export-Date: 2011-05-03 04:38+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:528 #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:528
@ -566,7 +566,7 @@ msgstr "Libros de Amazon para Kindle"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114
msgid "Kindle books from Amazon.uk" msgid "Kindle books from Amazon.uk"
msgstr "" msgstr "Libros Kindle de Amazon.uk"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119
msgid "Ebooks for readers." msgid "Ebooks for readers."
@ -622,15 +622,15 @@ msgstr "Su libro. Su modo."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184
msgid "Feel every word" msgid "Feel every word"
msgstr "" msgstr "Detectar todas las palabras"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1189 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1189
msgid "Foyles of London, online" msgid "Foyles of London, online"
msgstr "" msgstr "Foyles de Londres, en línea"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194
msgid "Kindle eBooks" msgid "Kindle eBooks"
msgstr "" msgstr "Libros Kindle"
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
msgid "Conversion Input" msgid "Conversion Input"
@ -941,20 +941,20 @@ msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
"Actívelo para mostrar y guardar en caché las portadas de iTunes o iBooks" "Actívelo para mostrar y guardar en caché las portadas de iTunes o iBooks"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Dispositivo Apple" msgstr "Dispositivo Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Comunicarse con iTunes/iBooks." msgstr "Comunicarse con iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
"Dispositivo Apple detectado. Iniciando iTunes. Un momento, por favor..." "Dispositivo Apple detectado. Iniciando iTunes. Un momento, por favor..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -963,28 +963,28 @@ msgstr ""
"la biblioteca de iTunes al escritorio, y entonces añadelos en la ventana " "la biblioteca de iTunes al escritorio, y entonces añadelos en la ventana "
"Biblioteca." "Biblioteca."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Actualizando listado de meta datos..." msgstr "Actualizando listado de meta datos..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d de %d" msgstr "%d de %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "terminado" msgstr "terminado"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -994,7 +994,7 @@ msgstr ""
"Bórrelos utilizando la aplicación iBooks.\n" "Bórrelos utilizando la aplicación iBooks.\n"
"Pulse \"Mostrar Detalles\" para ver una lista." "Pulse \"Mostrar Detalles\" para ver una lista."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -1002,7 +1002,7 @@ msgstr ""
"Algunas portadas no se pudieron convertir.\n" "Algunas portadas no se pudieron convertir.\n"
"Pulse en \"Mostrar detalles\" para ver una lista." "Pulse en \"Mostrar detalles\" para ver una lista."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1018,7 +1018,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Noticias" msgstr "Noticias"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1026,7 +1026,7 @@ msgstr "Noticias"
msgid "Catalog" msgid "Catalog"
msgstr "Catálogo" msgstr "Catálogo"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Comunicarse con iTunes." msgstr "Comunicarse con iTunes."
@ -6203,11 +6203,11 @@ msgstr "Clic para abrir"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:123
msgid "Ids" msgid "Ids"
msgstr "" msgstr "Id."
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:133
msgid "Book %s of <span class=\"series_name\">%s</span>" msgid "Book %s of <span class=\"series_name\">%s</span>"
msgstr "" msgstr "Libro %s de <span class=\"series_name\">%s</span>"
#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:144 #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:144
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:978 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:978
@ -11548,7 +11548,7 @@ msgstr "Tamaño (MB)"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:73
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:241
msgid "Modified" msgid "Modified"
msgstr "" msgstr "Modificado"
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:717
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274
@ -11731,6 +11731,8 @@ msgid ""
"Cause a running calibre instance, if any, to be shutdown. Note that if there " "Cause a running calibre instance, if any, to be shutdown. Note that if there "
"are running jobs, they will be silently aborted, so use with care." "are running jobs, they will be silently aborted, so use with care."
msgstr "" msgstr ""
"Cierra cualquier sesión de calibre que pueda estar abierta. Tenga cuidado, "
"porque si hay tareas en ejecución serán abortadas,"
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:69
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:678 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:678
@ -12968,19 +12970,19 @@ msgstr "Cambiar &tipo de letra (requiere reinicio)"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:210
msgid "Main Interface" msgid "Main Interface"
msgstr "" msgstr "Interfaz principal"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:211
msgid "Select displayed metadata" msgid "Select displayed metadata"
msgstr "" msgstr "Seleccionar metadatos mostrados"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:212
msgid "Move up" msgid "Move up"
msgstr "" msgstr "Mover hacia arriba"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:213
msgid "Move down" msgid "Move down"
msgstr "" msgstr "Mover hacia abajo"
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:214
msgid "Use &Roman numerals for series" msgid "Use &Roman numerals for series"
@ -12991,6 +12993,8 @@ msgid ""
"Note that <b>comments</b> will always be displayed at the end, regardless of " "Note that <b>comments</b> will always be displayed at the end, regardless of "
"the position you assign here." "the position you assign here."
msgstr "" msgstr ""
"Los <b>comentarios</b> se mostrarán siempre al final, independientemente de "
"la posición que se asigne aquí."
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:217
msgid "Tags browser category &partitioning method:" msgid "Tags browser category &partitioning method:"
@ -14270,11 +14274,11 @@ msgstr "Aplicar los cambios realizados en este ajuste"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:339 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:339
msgid "Delete current search" msgid "Delete current search"
msgstr "" msgstr "Borrar búsqueda actual"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:340 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:340
msgid "No search is selected" msgid "No search is selected"
msgstr "" msgstr "No hay ninguna búsqueda seleccionada"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:342
msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" msgid "The selected search will be <b>permanently deleted</b>. Are you sure?"
@ -14303,18 +14307,20 @@ msgid ""
"Save current search under the name shown in the box. Press and hold for a " "Save current search under the name shown in the box. Press and hold for a "
"pop-up options menu." "pop-up options menu."
msgstr "" msgstr ""
"Guarda la búsqueda actual con el nombre que se muestra en el cuadro. "
"Mantenga el botón pulsado para obtener un menú emergente de opciones."
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:458 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:458
msgid "Create saved search" msgid "Create saved search"
msgstr "" msgstr "Crear búsqueda guardada"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:462 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:462
msgid "Delete saved search" msgid "Delete saved search"
msgstr "" msgstr "Borrar búsqueda guardada"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:466 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:466
msgid "Manage saved searches" msgid "Manage saved searches"
msgstr "" msgstr "Administrar búsquedas guardadas"
#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:476 #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:476
msgid "*Current search" msgid "*Current search"
@ -14426,31 +14432,31 @@ msgstr "No disponible"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py:51 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_progress_dialog_ui.py:51
msgid "Updating book cache" msgid "Updating book cache"
msgstr "" msgstr "Actualizando el caché de libros"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:42
msgid "Checking last download date." msgid "Checking last download date."
msgstr "" msgstr "Comprobando la fecha de la última descarga."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:48
msgid "Downloading book list from MobileRead." msgid "Downloading book list from MobileRead."
msgstr "" msgstr "Descargando lista de libros de MobileRead."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:61
msgid "Processing books." msgid "Processing books."
msgstr "" msgstr "Procesando libros"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/cache_update_thread.py:70
msgid "%s of %s books processed." msgid "%s of %s books processed."
msgstr "" msgstr "%s de %s libros procesados."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/mobileread_plugin.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/mobileread_plugin.py:62
msgid "Updating MobileRead book cache..." msgid "Updating MobileRead book cache..."
msgstr "" msgstr "Actualizando el caché de libros de MobileRead..."
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:69
msgid "&Query:" msgid "&Query:"
msgstr "" msgstr "&Consulta:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:72 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread/store_dialog_ui.py:72
#: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:63
@ -14471,11 +14477,11 @@ msgstr "Buscar:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:192
msgid "&Price:" msgid "&Price:"
msgstr "" msgstr "&Precio:"
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:196
msgid "Titl&e/Author/Price ..." msgid "Titl&e/Author/Price ..."
msgstr "" msgstr "&Título/autor/precio..."
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:33
msgid "DRM" msgid "DRM"
@ -15951,7 +15957,7 @@ msgstr "empty"
#: /home/kovid/work/calibre/src/calibre/library/caches.py:564 #: /home/kovid/work/calibre/src/calibre/library/caches.py:564
msgid "Invalid boolean query \"{0}\"" msgid "Invalid boolean query \"{0}\""
msgstr "" msgstr "Consulta booleana \"{0}\" no válida"
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:51 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:51
msgid "" msgid ""
@ -17173,6 +17179,7 @@ msgstr "La fecha de publicación"
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46
msgid "The date when the metadata for this book record was last modified" msgid "The date when the metadata for this book record was last modified"
msgstr "" msgstr ""
"La fecha en que se modificaron por última vez los metadatos de este libro."
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48
msgid "The calibre internal id" msgid "The calibre internal id"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-03-02 12:04+0000\n" "PO-Revision-Date: 2011-03-02 12:04+0000\n"
"Last-Translator: gorkaazk <gorkaazkarate@euskalerria.org>\n" "Last-Translator: gorkaazk <gorkaazkarate@euskalerria.org>\n"
"Language-Team: Basque <eu@li.org>\n" "Language-Team: Basque <eu@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: 2011-04-30 04:35+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:35+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -925,21 +925,21 @@ msgstr "iTunes/iBooks horietatik cache-azalak"
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Apple markako gailua" msgstr "Apple markako gailua"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "iTunes/iBooks horiekin komunikatu." msgstr "iTunes/iBooks horiekin komunikatu."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
"Apple enpresako gailua detektatu egin da, iTunes-en nabigatzen ari da, " "Apple enpresako gailua detektatu egin da, iTunes-en nabigatzen ari da, "
"mesedez itxaron..." "mesedez itxaron..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -947,28 +947,28 @@ msgstr ""
"Ezin dira liburuak zuzenean gailu elektronikotik kopiatu. Herrestan eraman " "Ezin dira liburuak zuzenean gailu elektronikotik kopiatu. Herrestan eraman "
"iTunes Liburutegitik mahaigainera, gero itsatsi calibre liburutegiko leihoan." "iTunes Liburutegitik mahaigainera, gero itsatsi calibre liburutegiko leihoan."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Irakurgailuaren zerrendatze metadatuak eguneratzen..." msgstr "Irakurgailuaren zerrendatze metadatuak eguneratzen..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d-tik %d" msgstr "%d-tik %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "amaiturik" msgstr "amaiturik"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -978,7 +978,7 @@ msgstr ""
"Ezabatu \"iBooks app\" erabiliz.\n" "Ezabatu \"iBooks app\" erabiliz.\n"
"Egin ezazu klik 'Zehaztasunak erakutsi' zerrenda ikusteko." "Egin ezazu klik 'Zehaztasunak erakutsi' zerrenda ikusteko."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -986,7 +986,7 @@ msgstr ""
"Azalaren arte lan batzuk ezin izan dira bihurtu.\n" "Azalaren arte lan batzuk ezin izan dira bihurtu.\n"
"Egin ezazu klik 'Zehaztasunak erakutsi' zerrenda ikusteko." "Egin ezazu klik 'Zehaztasunak erakutsi' zerrenda ikusteko."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1002,7 +1002,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Albisteak" msgstr "Albisteak"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1010,7 +1010,7 @@ msgstr "Albisteak"
msgid "Catalog" msgid "Catalog"
msgstr "Katalogoa" msgstr "Katalogoa"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Komunikatu iTunes horrekin ." msgstr "Komunikatu iTunes horrekin ."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-09 04:20+0000\n" "PO-Revision-Date: 2011-04-09 04:20+0000\n"
"Last-Translator: Milad Naseri <m.m.naseri@gmail.com>\n" "Last-Translator: Milad Naseri <m.m.naseri@gmail.com>\n"
"Language-Team: Persian <fa@li.org>\n" "Language-Team: Persian <fa@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: 2011-04-30 04:44+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:45+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -882,59 +882,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -950,7 +950,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -958,7 +958,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

View File

@ -7,15 +7,15 @@ 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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-10-08 20:55+0000\n" "PO-Revision-Date: 2011-05-04 13:38+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Aleksi Kinnunen <Unknown>\n"
"Language-Team: Finnish <fi@li.org>\n" "Language-Team: Finnish <fi@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: 2011-04-30 04:38+0000\n" "X-Launchpad-Export-Date: 2011-05-05 04:37+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12959)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
msgid "Does absolutely nothing" msgid "Does absolutely nothing"
@ -199,7 +199,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:41
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:46
msgid "Cannot configure" msgid "Cannot configure"
msgstr "" msgstr "Ei voida määrittää"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:318 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:318
msgid "File type" msgid "File type"
@ -359,7 +359,7 @@ msgstr "Lisää/poista sarakkeita calibren kirjaluetteloon"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:916 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:916
msgid "Toolbar" msgid "Toolbar"
msgstr "" msgstr "Työkalurivi"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:922 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:922
msgid "" msgid ""
@ -530,11 +530,11 @@ msgstr "Sekalaiset kehittyneet asetukset"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1109 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1109
msgid "Kindle books from Amazon" msgid "Kindle books from Amazon"
msgstr "" msgstr "Amazonin Kindle-kirjat"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1114
msgid "Kindle books from Amazon.uk" msgid "Kindle books from Amazon.uk"
msgstr "" msgstr "Amazon.uk:in Kindle-kirjat"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119
msgid "Ebooks for readers." msgid "Ebooks for readers."
@ -542,7 +542,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1124 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1124
msgid "Books, Textbooks, eBooks, Toys, Games and More." msgid "Books, Textbooks, eBooks, Toys, Games and More."
msgstr "" msgstr "Kirjoja, oppikirjoja, e-kirjoja, leluja, pelejä ja paljon muuta."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1129 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1129
msgid "Publishers of fine books." msgid "Publishers of fine books."
@ -562,7 +562,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1149 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1149
msgid "Read anywhere." msgid "Read anywhere."
msgstr "" msgstr "Lue missä vain."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1154 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1154
msgid "The first producer of free ebooks." msgid "The first producer of free ebooks."
@ -570,11 +570,11 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1159 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1159
msgid "eReading: anytime. anyplace." msgid "eReading: anytime. anyplace."
msgstr "" msgstr "eReading: missä vain, milloin vain."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1164 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1164
msgid "The best ebooks at the best price: free!" msgid "The best ebooks at the best price: free!"
msgstr "" msgstr "Parhaat e-kirjat parhaaseen hintaan: ilmaiseksi!"
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1169 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1169
msgid "Ebooks handcrafted with the utmost care" msgid "Ebooks handcrafted with the utmost care"
@ -586,7 +586,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1179 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1179
msgid "Your ebook. Your way." msgid "Your ebook. Your way."
msgstr "" msgstr "Sinun e-kirjasi. Sinun tavallasi."
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184
msgid "Feel every word" msgid "Feel every word"
@ -598,7 +598,7 @@ msgstr ""
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1194
msgid "Kindle eBooks" msgid "Kindle eBooks"
msgstr "" msgstr "Kindlen e-kirjat"
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
msgid "Conversion Input" msgid "Conversion Input"
@ -744,6 +744,8 @@ msgid ""
"Intended for the Samsung Galaxy and similar tablet devices with a resolution " "Intended for the Samsung Galaxy and similar tablet devices with a resolution "
"of 600x1280" "of 600x1280"
msgstr "" msgstr ""
"Tarkoitettu Samsung Galaxy Tabille ja muille vastaaville tableteille joiden "
"resoluutio on 600x1280."
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:472 #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:472
msgid "This profile is intended for the Kobo Reader." msgid "This profile is intended for the Kobo Reader."
@ -907,46 +909,46 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Kommunikoi iTunesin/iBooksin kanssa" msgstr "Kommunikoi iTunesin/iBooksin kanssa"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Apple-laite havaittu, ladataan iTunes, odota hetki..." msgstr "Apple-laite havaittu, ladataan iTunes, odota hetki..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Päivittää laitteen metatietolistausta..." msgstr "Päivittää laitteen metatietolistausta..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d %d:stä" msgstr "%d %d:stä"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "Valmis" msgstr "Valmis"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -956,7 +958,7 @@ msgstr ""
"Poista iBooks-sovelluksella.\n" "Poista iBooks-sovelluksella.\n"
"Valitse 'Näytä yksityiskohdat' nähdäksesi listan." "Valitse 'Näytä yksityiskohdat' nähdäksesi listan."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -964,7 +966,7 @@ msgstr ""
"Osaa kansitaiteesta ei voitu kääntää.\n" "Osaa kansitaiteesta ei voitu kääntää.\n"
"Valitse 'Näytä yksityiskohdat' nähdäksesi listan." "Valitse 'Näytä yksityiskohdat' nähdäksesi listan."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -980,7 +982,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Uutiset" msgstr "Uutiset"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -988,7 +990,7 @@ msgstr "Uutiset"
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Kommunikoi iTunesin kanssa." msgstr "Kommunikoi iTunesin kanssa."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2010-06-11 18:48+0000\n" "PO-Revision-Date: 2010-06-11 18:48+0000\n"
"Last-Translator: Kovid Goyal <Unknown>\n" "Last-Translator: Kovid Goyal <Unknown>\n"
"Language-Team: Faroese <fo@li.org>\n" "Language-Team: Faroese <fo@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: 2011-04-30 04:38+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:38+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -861,59 +861,59 @@ msgstr ""
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -929,7 +929,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -937,7 +937,7 @@ msgstr ""
msgid "Catalog" msgid "Catalog"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "" msgstr ""

View File

@ -7,14 +7,14 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: calibre 0.4.22\n" "Project-Id-Version: calibre 0.4.22\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-29 12:01+0000\n" "PO-Revision-Date: 2011-04-29 12:01+0000\n"
"Last-Translator: sengian <Unknown>\n" "Last-Translator: sengian <Unknown>\n"
"Language-Team: Français <kde-i18n-doc@kde.org>\n" "Language-Team: Français <kde-i18n-doc@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: 2011-04-30 04:38+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:39+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
"X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n" "X-Poedit-Bookmarks: 1177,1104,-1,-1,-1,-1,-1,-1,-1,-1\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -940,19 +940,19 @@ msgstr ""
"Activer la mise en cache et l'affichage des couvertures provenant de " "Activer la mise en cache et l'affichage des couvertures provenant de "
"iTunes/iBooks" "iTunes/iBooks"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Appareil Apple" msgstr "Appareil Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Communiquer avec iTunes/iBooks." msgstr "Communiquer avec iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "Appareil Apple détecté, lancement d'iTunes, veuillez patienter..." msgstr "Appareil Apple détecté, lancement d'iTunes, veuillez patienter..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -961,28 +961,28 @@ msgstr ""
"le bureau à partir de la bibliothèque, puis ajouter à la fenêtre de la " "le bureau à partir de la bibliothèque, puis ajouter à la fenêtre de la "
"bibliothèque Calibre." "bibliothèque Calibre."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Mise à jour de la liste des métadonnées de l'appareil..." msgstr "Mise à jour de la liste des métadonnées de l'appareil..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d sur %d" msgstr "%d sur %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "Terminé" msgstr "Terminé"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -992,7 +992,7 @@ msgstr ""
"Les supprimer en utilisant l'application iBooks.\n" "Les supprimer en utilisant l'application iBooks.\n"
"Cliquer 'Afficher détails' pour obtenir la liste." "Cliquer 'Afficher détails' pour obtenir la liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -1000,7 +1000,7 @@ msgstr ""
"Certaines illustrations de couverture n'ont pu être converties.\n" "Certaines illustrations de couverture n'ont pu être converties.\n"
"Cliquer sur 'Afficher Détails' pour une liste." "Cliquer sur 'Afficher Détails' pour une liste."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1016,7 +1016,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Informations" msgstr "Informations"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1024,7 +1024,7 @@ msgstr "Informations"
msgid "Catalog" msgid "Catalog"
msgstr "Catalogue" msgstr "Catalogue"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Communiquer avec iTunes" msgstr "Communiquer avec iTunes"

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-04-07 18:57+0000\n" "PO-Revision-Date: 2011-04-07 18:57+0000\n"
"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n" "Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
"Language-Team: dev@gl.openoffice.org\n" "Language-Team: dev@gl.openoffice.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: 2011-04-30 04:39+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:40+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
"Language: gl\n" "Language: gl\n"
@ -934,20 +934,20 @@ msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
"Actíveo para amosar e gardar en caché as portadas de iTunes ou iBooks" "Actíveo para amosar e gardar en caché as portadas de iTunes ou iBooks"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "Dispositivo Apple" msgstr "Dispositivo Apple"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "Comunicar con iTunes/iBooks." msgstr "Comunicar con iTunes/iBooks."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "" msgstr ""
"Detectouse un dispositivo de Apple. Estase a iniciar o iTunes, agarde..." "Detectouse un dispositivo de Apple. Estase a iniciar o iTunes, agarde..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -956,28 +956,28 @@ msgstr ""
"biblioteca de iTunes ao escritorio, e logo, poderá engadilos na xanela " "biblioteca de iTunes ao escritorio, e logo, poderá engadilos na xanela "
"Biblioteca de Calibre." "Biblioteca de Calibre."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "Actualizando a relación de metadatos..." msgstr "Actualizando a relación de metadatos..."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d de %d" msgstr "%d de %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "rematado" msgstr "rematado"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -987,7 +987,7 @@ msgstr ""
"Eliminar co aplicativo do iBooks\n" "Eliminar co aplicativo do iBooks\n"
"Premer «Amosar detalles» para obter unha lista." "Premer «Amosar detalles» para obter unha lista."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -995,7 +995,7 @@ msgstr ""
"Algunhas cubertas non se converteron. \n" "Algunhas cubertas non se converteron. \n"
"Prema «Amosar detalles» para relacionalas." "Prema «Amosar detalles» para relacionalas."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -1011,7 +1011,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "Noticias" msgstr "Noticias"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -1019,7 +1019,7 @@ msgstr "Noticias"
msgid "Catalog" msgid "Catalog"
msgstr "Catálogo" msgstr "Catálogo"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "Comunicar con iTunes." msgstr "Comunicar con iTunes."

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: 2011-04-29 18:21+0000\n" "POT-Creation-Date: 2011-04-30 16:30+0000\n"
"PO-Revision-Date: 2011-01-28 13:47+0000\n" "PO-Revision-Date: 2011-01-28 13:47+0000\n"
"Last-Translator: Eran Cohen <Unknown>\n" "Last-Translator: Eran Cohen <Unknown>\n"
"Language-Team: Hebrew <he@li.org>\n" "Language-Team: Hebrew <he@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: 2011-04-30 04:40+0000\n" "X-Launchpad-Export-Date: 2011-05-01 04:40+0000\n"
"X-Generator: Launchpad (build 12758)\n" "X-Generator: Launchpad (build 12758)\n"
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
@ -886,19 +886,19 @@ msgstr "הטמן (cache) תמונות שער מ-iTunes/iBooks."
msgid "Enable to cache and display covers from iTunes/iBooks" msgid "Enable to cache and display covers from iTunes/iBooks"
msgstr "" msgstr ""
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:176 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178
msgid "Apple device" msgid "Apple device"
msgstr "התקן של אפל" msgstr "התקן של אפל"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:178 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:180
msgid "Communicate with iTunes/iBooks." msgid "Communicate with iTunes/iBooks."
msgstr "תקשר עם אייטונס/אייבוקס" msgstr "תקשר עם אייטונס/אייבוקס"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:190 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192
msgid "Apple device detected, launching iTunes, please wait ..." msgid "Apple device detected, launching iTunes, please wait ..."
msgstr "התגלתה חומרת 'אפל' (Apple). מתחיל את תוכנת iTunes, אנה חכה.." msgstr "התגלתה חומרת 'אפל' (Apple). מתחיל את תוכנת iTunes, אנה חכה.."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:192 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:194
msgid "" msgid ""
"Cannot copy books directly from iDevice. Drag from iTunes Library to " "Cannot copy books directly from iDevice. Drag from iTunes Library to "
"desktop, then add to calibre's Library window." "desktop, then add to calibre's Library window."
@ -906,28 +906,28 @@ msgstr ""
"קליבר לא מצליח להעתיק ספרים ישירות מחומרת ה-iDevice. גרור מספריית ה-iTunes " "קליבר לא מצליח להעתיק ספרים ישירות מחומרת ה-iDevice. גרור מספריית ה-iTunes "
"לשולחן העבודה. רק אז הוסף לחלון ספריית קליבר." "לשולחן העבודה. רק אז הוסף לחלון ספריית קליבר."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:353 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:355
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:356 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:358
msgid "Updating device metadata listing..." msgid "Updating device metadata listing..."
msgstr "מעדכן רישום נתוני מטא של החומרה" msgstr "מעדכן רישום נתוני מטא של החומרה"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:432 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:434
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:471 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:473
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1054 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1056
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1098 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1100
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3082 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3084
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3122 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3124
msgid "%d of %d" msgid "%d of %d"
msgstr "%d מתוך %d" msgstr "%d מתוך %d"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:478 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:480
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1103 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1105
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3128 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3130
#: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106 #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:106
msgid "finished" msgid "finished"
msgstr "הסתיים" msgstr "הסתיים"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:663 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:665
msgid "" msgid ""
"Some books not found in iTunes database.\n" "Some books not found in iTunes database.\n"
"Delete using the iBooks app.\n" "Delete using the iBooks app.\n"
@ -937,7 +937,7 @@ msgstr ""
"הסר בעזרת אפליקציית ה-iBooks.\n" "הסר בעזרת אפליקציית ה-iBooks.\n"
"לחץ על 'הצג פרטים' לקבלת רשימה." "לחץ על 'הצג פרטים' לקבלת רשימה."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1014 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1016
msgid "" msgid ""
"Some cover art could not be converted.\n" "Some cover art could not be converted.\n"
"Click 'Show Details' for a list." "Click 'Show Details' for a list."
@ -945,7 +945,7 @@ msgstr ""
"לא היה אפשר להמיר חלק מתמונות השער.\n" "לא היה אפשר להמיר חלק מתמונות השער.\n"
"לחץ על 'הצג פרטים' לקבלת רשימה." "לחץ על 'הצג פרטים' לקבלת רשימה."
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2664 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2666
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:100
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:447
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:470
@ -961,7 +961,7 @@ msgstr ""
msgid "News" msgid "News"
msgstr "חדשות" msgstr "חדשות"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2665 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2667
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:633 #: /home/kovid/work/calibre/src/calibre/library/catalog.py:633
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2750 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2750
@ -969,7 +969,7 @@ msgstr "חדשות"
msgid "Catalog" msgid "Catalog"
msgstr "קטלוג" msgstr "קטלוג"
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2986 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2988
msgid "Communicate with iTunes." msgid "Communicate with iTunes."
msgstr "תקשר עם אייטונס" msgstr "תקשר עם אייטונס"

Some files were not shown because too many files have changed in this diff Show More