mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
0.8.48
This commit is contained in:
commit
680bac5086
@ -19,6 +19,57 @@
|
|||||||
# new recipes:
|
# new recipes:
|
||||||
# - title:
|
# - title:
|
||||||
|
|
||||||
|
- version: 0.8.48
|
||||||
|
date: 2012-04-20
|
||||||
|
|
||||||
|
new features:
|
||||||
|
- title: "Conversion: The search and replace feature has been completely revamped."
|
||||||
|
description: "You can now use any number of search and replace
|
||||||
|
expression, not just three. You can also store and load frequently used
|
||||||
|
sets of search and replace expressions. Also, the wizard generates its
|
||||||
|
preview in a separate process to protect against crashes/memory leaks."
|
||||||
|
tickets: [983476,983484,983478]
|
||||||
|
|
||||||
|
- title: "Support for the new '.azw3' files that Amazon recently started generating. calibre will now detect them as ebooks. It can also view/convert them, if they are DRM free."
|
||||||
|
|
||||||
|
- title: "Drivers for Samsung Galaxy ACE GT-S5830L and HTC One X"
|
||||||
|
tickets: [981185]
|
||||||
|
|
||||||
|
bug fixes:
|
||||||
|
- title: "Get Books: Support the new website design of Barnes & Noble"
|
||||||
|
|
||||||
|
- title: "T1 driver: Fix books sent to SD card sometimes resulting problems when deleted."
|
||||||
|
tickets: [943586]
|
||||||
|
|
||||||
|
- title: "Do not allow author names to be set to blank via the Manage authors function. Blank authors are now automatically set to 'Unknown'"
|
||||||
|
|
||||||
|
- title: "MOBI Output: Handle background color specified on <td> and <tr> in addition to <table> tags."
|
||||||
|
tickets: [980813]
|
||||||
|
|
||||||
|
- title: "MOBI Output: Fix underline style applied to parent element not getting inherited by <a> children."
|
||||||
|
tickets: [985711]
|
||||||
|
|
||||||
|
improved recipes:
|
||||||
|
- xkcd
|
||||||
|
- Metro Nieuws
|
||||||
|
- Calgary Herald
|
||||||
|
- Orlando Sentinel
|
||||||
|
- countryfile
|
||||||
|
- Heise
|
||||||
|
|
||||||
|
new recipes:
|
||||||
|
- title: Various new Polish news sources
|
||||||
|
author: fenuks
|
||||||
|
|
||||||
|
- title: Various Italian news sources
|
||||||
|
author: faber1971
|
||||||
|
|
||||||
|
- title: Jakarta Globe
|
||||||
|
author: rty
|
||||||
|
|
||||||
|
- title: Acim Bilim Dergisi
|
||||||
|
author: thomass
|
||||||
|
|
||||||
- version: 0.8.47
|
- version: 0.8.47
|
||||||
date: 2012-04-13
|
date: 2012-04-13
|
||||||
|
|
||||||
|
27
recipes/acim_bilim_dergisi.recipe
Normal file
27
recipes/acim_bilim_dergisi.recipe
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class AdvancedUserRecipe1334868409(BasicNewsRecipe):
|
||||||
|
title = u'AÇIK BİLİM DERGİSİ'
|
||||||
|
description = ' Aylık çevrimiçi bilim dergisi'
|
||||||
|
__author__ = u'thomass'
|
||||||
|
oldest_article = 30
|
||||||
|
max_articles_per_feed = 300
|
||||||
|
auto_cleanup = True
|
||||||
|
encoding = 'UTF-8'
|
||||||
|
publisher = 'açık bilim'
|
||||||
|
category = 'haber, bilim,TR,dergi'
|
||||||
|
language = 'tr'
|
||||||
|
publication_type = 'magazine '
|
||||||
|
conversion_options = {
|
||||||
|
'tags' : category
|
||||||
|
,'language' : language
|
||||||
|
,'publisher' : publisher
|
||||||
|
,'linearize_tables': True
|
||||||
|
}
|
||||||
|
cover_img_url = 'http://www.acikbilim.com/wp-content/themes/Equilibrium/images/logodene.jpg'
|
||||||
|
masthead_url = 'http://www.acikbilim.com/wp-content/themes/Equilibrium/images/logodene.jpg'
|
||||||
|
|
||||||
|
|
||||||
|
feeds = [(u'Tüm Yayınlar', u'http://www.acikbilim.com/feed')]
|
@ -9,6 +9,7 @@ class Adventure_zone(BasicNewsRecipe):
|
|||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
oldest_article = 20
|
oldest_article = 20
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
|
index='http://www.adventure-zone.info/fusion/'
|
||||||
use_embedded_content=False
|
use_embedded_content=False
|
||||||
preprocess_regexps = [(re.compile(r"<td class='capmain'>Komentarze</td>", re.IGNORECASE), lambda m: '')]
|
preprocess_regexps = [(re.compile(r"<td class='capmain'>Komentarze</td>", re.IGNORECASE), lambda m: '')]
|
||||||
remove_tags_before= dict(name='td', attrs={'class':'main-bg'})
|
remove_tags_before= dict(name='td', attrs={'class':'main-bg'})
|
||||||
@ -45,6 +46,19 @@ class Adventure_zone(BasicNewsRecipe):
|
|||||||
skip_tag = skip_tag.findAll(name='a')
|
skip_tag = skip_tag.findAll(name='a')
|
||||||
for r in skip_tag:
|
for r in skip_tag:
|
||||||
if r.strong:
|
if r.strong:
|
||||||
word=r.strong.string
|
word=r.strong.string.lower()
|
||||||
if word and (('zapowied' in word) or ('recenzj' in word) or ('solucj' in word)):
|
if word and (('zapowied' in word) or ('recenzj' in word) or ('solucj' in word) or ('poradnik' in word)):
|
||||||
return self.index_to_soup('http://www.adventure-zone.info/fusion/print.php?type=A&item'+r['href'][r['href'].find('article_id')+7:], raw=True)
|
return self.index_to_soup('http://www.adventure-zone.info/fusion/print.php?type=A&item'+r['href'][r['href'].find('article_id')+7:], raw=True)
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
footer=soup.find(attrs={'class':'news-footer middle-border'})
|
||||||
|
if footer and len(footer('a'))>=2:
|
||||||
|
footer('a')[1].extract()
|
||||||
|
for item in soup.findAll(style=True):
|
||||||
|
del item['style']
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
||||||
|
|
||||||
|
|
@ -68,4 +68,7 @@ class Benchmark_pl(BasicNewsRecipe):
|
|||||||
self.image_article(soup, soup.body)
|
self.image_article(soup, soup.body)
|
||||||
else:
|
else:
|
||||||
self.append_page(soup, soup.body)
|
self.append_page(soup, soup.body)
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.INDEX + a['href']
|
||||||
return soup
|
return soup
|
||||||
|
@ -1,220 +1,35 @@
|
|||||||
#!/usr/bin/env python
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
class CalgaryHerald(BasicNewsRecipe):
|
||||||
__license__ = 'GPL v3'
|
title = u'Calgary Herald'
|
||||||
|
oldest_article = 3
|
||||||
'''
|
max_articles_per_feed = 100
|
||||||
www.canada.com
|
|
||||||
'''
|
feeds = [
|
||||||
|
(u'News', u'http://rss.canada.com/get/?F233'),
|
||||||
import re
|
(u'Calgary', u'http://www.calgaryherald.com/scripts/sp6query.aspx?catalog=cahr&tags=keyword|calgary&output=rss?link=http%3a%2f%2fwww.calgaryherald'),
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
(u'Alberta', u'http://www.calgaryherald.com/scripts/Sp6Query.aspx?catalog=CAHR&tags=Keyword|Alberta&output=rss?link=http%3A%2F%2Fwww.calgaryherald.com%2Fnews%2Falberta%2Findex.html'),
|
||||||
from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup
|
(u'Politics', u'http://rss.canada.com/get/?F7551'),
|
||||||
|
(u'National', u'http://rss.canada.com/get/?F7552'),
|
||||||
|
(u'World', u'http://rss.canada.com/get/?F7553'),
|
||||||
class CanWestPaper(BasicNewsRecipe):
|
]
|
||||||
|
__author__ = 'rty'
|
||||||
# un-comment the following four lines for the Victoria Times Colonist
|
pubisher = 'Calgary Herald'
|
||||||
## title = u'Victoria Times Colonist'
|
description = 'Calgary, Alberta, Canada'
|
||||||
## url_prefix = 'http://www.timescolonist.com'
|
category = 'News, Calgary, Alberta, Canada'
|
||||||
## description = u'News from Victoria, BC'
|
|
||||||
## fp_tag = 'CAN_TC'
|
|
||||||
|
remove_javascript = True
|
||||||
# un-comment the following four lines for the Vancouver Province
|
use_embedded_content = False
|
||||||
## title = u'Vancouver Province'
|
no_stylesheets = True
|
||||||
## url_prefix = 'http://www.theprovince.com'
|
language = 'en_CA'
|
||||||
## description = u'News from Vancouver, BC'
|
encoding = 'utf-8'
|
||||||
## fp_tag = 'CAN_VP'
|
conversion_options = {'linearize_tables':True}
|
||||||
|
##masthead_url = 'http://www.calgaryherald.com/index.html'
|
||||||
# un-comment the following four lines for the Vancouver Sun
|
keep_only_tags = [
|
||||||
## title = u'Vancouver Sun'
|
dict(name='div', attrs={'id':'storyheader'}),
|
||||||
## url_prefix = 'http://www.vancouversun.com'
|
dict(name='div', attrs={'id':'storycontent'})
|
||||||
## description = u'News from Vancouver, BC'
|
|
||||||
## fp_tag = 'CAN_VS'
|
]
|
||||||
|
remove_tags_after = {'class':"story_tool_hr"}
|
||||||
# un-comment the following four lines for the Edmonton Journal
|
|
||||||
## title = u'Edmonton Journal'
|
|
||||||
## url_prefix = 'http://www.edmontonjournal.com'
|
|
||||||
## description = u'News from Edmonton, AB'
|
|
||||||
## fp_tag = 'CAN_EJ'
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Calgary Herald
|
|
||||||
title = u'Calgary Herald'
|
|
||||||
url_prefix = 'http://www.calgaryherald.com'
|
|
||||||
description = u'News from Calgary, AB'
|
|
||||||
fp_tag = 'CAN_CH'
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Regina Leader-Post
|
|
||||||
## title = u'Regina Leader-Post'
|
|
||||||
## url_prefix = 'http://www.leaderpost.com'
|
|
||||||
## description = u'News from Regina, SK'
|
|
||||||
## fp_tag = ''
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Saskatoon Star-Phoenix
|
|
||||||
## title = u'Saskatoon Star-Phoenix'
|
|
||||||
## url_prefix = 'http://www.thestarphoenix.com'
|
|
||||||
## description = u'News from Saskatoon, SK'
|
|
||||||
## fp_tag = ''
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Windsor Star
|
|
||||||
## title = u'Windsor Star'
|
|
||||||
## url_prefix = 'http://www.windsorstar.com'
|
|
||||||
## description = u'News from Windsor, ON'
|
|
||||||
## fp_tag = 'CAN_'
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Ottawa Citizen
|
|
||||||
## title = u'Ottawa Citizen'
|
|
||||||
## url_prefix = 'http://www.ottawacitizen.com'
|
|
||||||
## description = u'News from Ottawa, ON'
|
|
||||||
## fp_tag = 'CAN_OC'
|
|
||||||
|
|
||||||
# un-comment the following four lines for the Montreal Gazette
|
|
||||||
## title = u'Montreal Gazette'
|
|
||||||
## url_prefix = 'http://www.montrealgazette.com'
|
|
||||||
## description = u'News from Montreal, QC'
|
|
||||||
## fp_tag = 'CAN_MG'
|
|
||||||
|
|
||||||
|
|
||||||
language = 'en_CA'
|
|
||||||
__author__ = 'Nick Redding'
|
|
||||||
no_stylesheets = True
|
|
||||||
timefmt = ' [%b %d]'
|
|
||||||
extra_css = '''
|
|
||||||
.timestamp { font-size:xx-small; display: block; }
|
|
||||||
#storyheader { font-size: medium; }
|
|
||||||
#storyheader h1 { font-size: x-large; }
|
|
||||||
#storyheader h2 { font-size: large; font-style: italic; }
|
|
||||||
.byline { font-size:xx-small; }
|
|
||||||
#photocaption { font-size: small; font-style: italic }
|
|
||||||
#photocredit { font-size: xx-small; }'''
|
|
||||||
keep_only_tags = [dict(name='div', attrs={'id':'storyheader'}),dict(name='div', attrs={'id':'storycontent'})]
|
|
||||||
remove_tags = [{'class':'comments'},
|
|
||||||
dict(name='div', attrs={'class':'navbar'}),dict(name='div', attrs={'class':'morelinks'}),
|
|
||||||
dict(name='div', attrs={'class':'viewmore'}),dict(name='li', attrs={'class':'email'}),
|
|
||||||
dict(name='div', attrs={'class':'story_tool_hr'}),dict(name='div', attrs={'class':'clear'}),
|
|
||||||
dict(name='div', attrs={'class':'story_tool'}),dict(name='div', attrs={'class':'copyright'}),
|
|
||||||
dict(name='div', attrs={'class':'rule_grey_solid'}),
|
|
||||||
dict(name='li', attrs={'class':'print'}),dict(name='li', attrs={'class':'share'}),dict(name='ul', attrs={'class':'bullet'})]
|
|
||||||
|
|
||||||
def get_cover_url(self):
|
|
||||||
from datetime import timedelta, date
|
|
||||||
if self.fp_tag=='':
|
|
||||||
return None
|
|
||||||
cover = 'http://webmedia.newseum.org/newseum-multimedia/dfp/jpg'+str(date.today().day)+'/lg/'+self.fp_tag+'.jpg'
|
|
||||||
br = BasicNewsRecipe.get_browser()
|
|
||||||
daysback=1
|
|
||||||
try:
|
|
||||||
br.open(cover)
|
|
||||||
except:
|
|
||||||
while daysback<7:
|
|
||||||
cover = 'http://webmedia.newseum.org/newseum-multimedia/dfp/jpg'+str((date.today() - timedelta(days=daysback)).day)+'/lg/'+self.fp_tag+'.jpg'
|
|
||||||
br = BasicNewsRecipe.get_browser()
|
|
||||||
try:
|
|
||||||
br.open(cover)
|
|
||||||
except:
|
|
||||||
daysback = daysback+1
|
|
||||||
continue
|
|
||||||
break
|
|
||||||
if daysback==7:
|
|
||||||
self.log("\nCover unavailable")
|
|
||||||
cover = None
|
|
||||||
return cover
|
|
||||||
|
|
||||||
def fixChars(self,string):
|
|
||||||
# Replace lsquo (\x91)
|
|
||||||
fixed = re.sub("\x91","‘",string)
|
|
||||||
# Replace rsquo (\x92)
|
|
||||||
fixed = re.sub("\x92","’",fixed)
|
|
||||||
# Replace ldquo (\x93)
|
|
||||||
fixed = re.sub("\x93","“",fixed)
|
|
||||||
# Replace rdquo (\x94)
|
|
||||||
fixed = re.sub("\x94","”",fixed)
|
|
||||||
# Replace ndash (\x96)
|
|
||||||
fixed = re.sub("\x96","–",fixed)
|
|
||||||
# Replace mdash (\x97)
|
|
||||||
fixed = re.sub("\x97","—",fixed)
|
|
||||||
fixed = re.sub("’","’",fixed)
|
|
||||||
return fixed
|
|
||||||
|
|
||||||
def massageNCXText(self, description):
|
|
||||||
# Kindle TOC descriptions won't render certain characters
|
|
||||||
if description:
|
|
||||||
massaged = unicode(BeautifulStoneSoup(description, convertEntities=BeautifulStoneSoup.HTML_ENTITIES))
|
|
||||||
# Replace '&' with '&'
|
|
||||||
massaged = re.sub("&","&", massaged)
|
|
||||||
return self.fixChars(massaged)
|
|
||||||
else:
|
|
||||||
return description
|
|
||||||
|
|
||||||
def populate_article_metadata(self, article, soup, first):
|
|
||||||
if first:
|
|
||||||
picdiv = soup.find('body').find('img')
|
|
||||||
if picdiv is not None:
|
|
||||||
self.add_toc_thumbnail(article,re.sub(r'links\\link\d+\\','',picdiv['src']))
|
|
||||||
xtitle = article.text_summary.strip()
|
|
||||||
if len(xtitle) == 0:
|
|
||||||
desc = soup.find('meta',attrs={'property':'og:description'})
|
|
||||||
if desc is not None:
|
|
||||||
article.summary = article.text_summary = desc['content']
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
def preprocess_html(self, soup):
|
|
||||||
return self.strip_anchors(soup)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def parse_index(self):
|
|
||||||
soup = self.index_to_soup(self.url_prefix+'/news/todays-paper/index.html')
|
|
||||||
|
|
||||||
articles = {}
|
|
||||||
key = 'News'
|
|
||||||
ans = ['News']
|
|
||||||
|
|
||||||
# Find each instance of class="sectiontitle", class="featurecontent"
|
|
||||||
for divtag in soup.findAll('div',attrs={'class' : ["section_title02","featurecontent"]}):
|
|
||||||
#self.log(" div class = %s" % divtag['class'])
|
|
||||||
if divtag['class'].startswith('section_title'):
|
|
||||||
# div contains section title
|
|
||||||
if not divtag.h3:
|
|
||||||
continue
|
|
||||||
key = self.tag_to_string(divtag.h3,False)
|
|
||||||
ans.append(key)
|
|
||||||
self.log("Section name %s" % key)
|
|
||||||
continue
|
|
||||||
# div contains article data
|
|
||||||
h1tag = divtag.find('h1')
|
|
||||||
if not h1tag:
|
|
||||||
continue
|
|
||||||
atag = h1tag.find('a',href=True)
|
|
||||||
if not atag:
|
|
||||||
continue
|
|
||||||
url = self.url_prefix+'/news/todays-paper/'+atag['href']
|
|
||||||
#self.log("Section %s" % key)
|
|
||||||
#self.log("url %s" % url)
|
|
||||||
title = self.tag_to_string(atag,False)
|
|
||||||
#self.log("title %s" % title)
|
|
||||||
pubdate = ''
|
|
||||||
description = ''
|
|
||||||
ptag = divtag.find('p');
|
|
||||||
if ptag:
|
|
||||||
description = self.tag_to_string(ptag,False)
|
|
||||||
#self.log("description %s" % description)
|
|
||||||
author = ''
|
|
||||||
autag = divtag.find('h4')
|
|
||||||
if autag:
|
|
||||||
author = self.tag_to_string(autag,False)
|
|
||||||
#self.log("author %s" % author)
|
|
||||||
if not articles.has_key(key):
|
|
||||||
articles[key] = []
|
|
||||||
articles[key].append(dict(title=title,url=url,date=pubdate,description=description,author=author,content=''))
|
|
||||||
|
|
||||||
ans = [(key, articles[key]) for key in ans if articles.has_key(key)]
|
|
||||||
return ans
|
|
||||||
|
17
recipes/camera_di_commercio_di_bari.recipe
Normal file
17
recipes/camera_di_commercio_di_bari.recipe
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class AdvancedUserRecipe1331729727(BasicNewsRecipe):
|
||||||
|
title = u'Camera di Commercio di Bari'
|
||||||
|
oldest_article = 7
|
||||||
|
__author__ = 'faber1971'
|
||||||
|
description = 'News from the Chamber of Commerce of Bari'
|
||||||
|
language = 'it'
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
auto_cleanup = True
|
||||||
|
masthead_url = 'http://www.ba.camcom.it/grafica/layout-bordo/logo_camcom_bari.png'
|
||||||
|
feeds = [(u'Camera di Commercio di Bari', u'http://feed43.com/4715147488845101.xml')]
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2012, faber1971'
|
||||||
|
__version__ = 'v1.00'
|
||||||
|
__date__ = '17, April 2012'
|
@ -6,6 +6,7 @@ class CD_Action(BasicNewsRecipe):
|
|||||||
description = 'cdaction.pl - polish games magazine site'
|
description = 'cdaction.pl - polish games magazine site'
|
||||||
category = 'games'
|
category = 'games'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://www.cdaction.pl'
|
||||||
oldest_article = 8
|
oldest_article = 8
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets= True
|
no_stylesheets= True
|
||||||
@ -17,4 +18,10 @@ class CD_Action(BasicNewsRecipe):
|
|||||||
def get_cover_url(self):
|
def get_cover_url(self):
|
||||||
soup = self.index_to_soup('http://www.cdaction.pl/magazyn/')
|
soup = self.index_to_soup('http://www.cdaction.pl/magazyn/')
|
||||||
self.cover_url='http://www.cdaction.pl'+ soup.find(id='wspolnik').div.a['href']
|
self.cover_url='http://www.cdaction.pl'+ soup.find(id='wspolnik').div.a['href']
|
||||||
return getattr(self, 'cover_url', self.cover_url)
|
return getattr(self, 'cover_url', self.cover_url)
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -1,11 +1,12 @@
|
|||||||
|
from calibre import browser
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class AdvancedUserRecipe1325006965(BasicNewsRecipe):
|
class AdvancedUserRecipe1325006965(BasicNewsRecipe):
|
||||||
title = u'Countryfile.com'
|
title = u'Countryfile.com'
|
||||||
cover_url = 'http://www.buysubscriptions.com/static_content/the-immediate/en/images/covers/CFIL_maxi.jpg'
|
#cover_url = 'http://www.countryfile.com/sites/default/files/imagecache/160px_wide/cover/2_1.jpg'
|
||||||
__author__ = 'Dave Asbury'
|
__author__ = 'Dave Asbury'
|
||||||
description = 'The official website of Countryfile Magazine'
|
description = 'The official website of Countryfile Magazine'
|
||||||
# last updated 29/1/12
|
# last updated 15/4/12
|
||||||
language = 'en_GB'
|
language = 'en_GB'
|
||||||
oldest_article = 30
|
oldest_article = 30
|
||||||
max_articles_per_feed = 25
|
max_articles_per_feed = 25
|
||||||
@ -13,7 +14,23 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe):
|
|||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
auto_cleanup = True
|
auto_cleanup = True
|
||||||
#articles_are_obfuscated = True
|
#articles_are_obfuscated = True
|
||||||
|
def get_cover_url(self):
|
||||||
|
soup = self.index_to_soup('http://www.countryfile.com/')
|
||||||
|
cov = soup.find(attrs={'class' : 'imagecache imagecache-160px_wide imagecache-linked imagecache-160px_wide_linked'})
|
||||||
|
#print '******** ',cov,' ***'
|
||||||
|
cov2 = str(cov)
|
||||||
|
cov2=cov2[124:-90]
|
||||||
|
#print '******** ',cov2,' ***'
|
||||||
|
|
||||||
|
# try to get cover - if can't get known cover
|
||||||
|
br = browser()
|
||||||
|
br.set_handle_redirect(False)
|
||||||
|
try:
|
||||||
|
br.open_novisit(cov2)
|
||||||
|
cover_url = cov2
|
||||||
|
except:
|
||||||
|
cover_url = 'http://www.countryfile.com/sites/default/files/imagecache/160px_wide/cover/2_1.jpg'
|
||||||
|
return cover_url
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
# dict(attrs={'class' : ['player']}),
|
# dict(attrs={'class' : ['player']}),
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ class Dobreprogramy_pl(BasicNewsRecipe):
|
|||||||
cover_url = 'http://userlogos.org/files/logos/Karmody/dobreprogramy_01.png'
|
cover_url = 'http://userlogos.org/files/logos/Karmody/dobreprogramy_01.png'
|
||||||
description = u'Aktualności i blogi z dobreprogramy.pl'
|
description = u'Aktualności i blogi z dobreprogramy.pl'
|
||||||
encoding = 'utf-8'
|
encoding = 'utf-8'
|
||||||
|
index='http://www.dobreprogramy.pl/'
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
extra_css = '.title {font-size:22px;}'
|
extra_css = '.title {font-size:22px;}'
|
||||||
@ -22,3 +23,10 @@ class Dobreprogramy_pl(BasicNewsRecipe):
|
|||||||
#remove_tags = [dict(name='div', attrs={'class':['komentarze', 'block', 'portalInfo', 'menuBar', 'topBar']})]
|
#remove_tags = [dict(name='div', attrs={'class':['komentarze', 'block', 'portalInfo', 'menuBar', 'topBar']})]
|
||||||
feeds = [(u'Aktualności', 'http://feeds.feedburner.com/dobreprogramy/Aktualnosci'),
|
feeds = [(u'Aktualności', 'http://feeds.feedburner.com/dobreprogramy/Aktualnosci'),
|
||||||
('Blogi', 'http://feeds.feedburner.com/dobreprogramy/BlogCzytelnikow')]
|
('Blogi', 'http://feeds.feedburner.com/dobreprogramy/BlogCzytelnikow')]
|
||||||
|
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -7,6 +7,7 @@ class Dzieje(BasicNewsRecipe):
|
|||||||
cover_url = 'http://www.dzieje.pl/sites/default/files/dzieje_logo.png'
|
cover_url = 'http://www.dzieje.pl/sites/default/files/dzieje_logo.png'
|
||||||
category = 'history'
|
category = 'history'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://dzieje.pl'
|
||||||
oldest_article = 8
|
oldest_article = 8
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
remove_javascript=True
|
remove_javascript=True
|
||||||
@ -15,3 +16,10 @@ class Dzieje(BasicNewsRecipe):
|
|||||||
remove_tags_after= dict(id='dogory')
|
remove_tags_after= dict(id='dogory')
|
||||||
remove_tags=[dict(id='dogory')]
|
remove_tags=[dict(id='dogory')]
|
||||||
feeds = [(u'Dzieje', u'http://dzieje.pl/rss.xml')]
|
feeds = [(u'Dzieje', u'http://dzieje.pl/rss.xml')]
|
||||||
|
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -21,3 +21,8 @@ class eioba(BasicNewsRecipe):
|
|||||||
(u'Rozrywka', u'http://www.eioba.pl/feed/categories/10.xml'),
|
(u'Rozrywka', u'http://www.eioba.pl/feed/categories/10.xml'),
|
||||||
(u'Rożne', u'http://www.eioba.pl/feed/categories/9.xml')
|
(u'Rożne', u'http://www.eioba.pl/feed/categories/9.xml')
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for item in soup.findAll(style=True):
|
||||||
|
del item['style']
|
||||||
|
return soup
|
||||||
|
@ -7,6 +7,7 @@ class eMuzyka(BasicNewsRecipe):
|
|||||||
description = u'Emuzyka to największa i najpopularniejsza strona o muzyce w Polsce'
|
description = u'Emuzyka to największa i najpopularniejsza strona o muzyce w Polsce'
|
||||||
category = 'music'
|
category = 'music'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://www.emuzyka.pl'
|
||||||
cover_url='http://s.emuzyka.pl/img/emuzyka_invert_small.jpg'
|
cover_url='http://s.emuzyka.pl/img/emuzyka_invert_small.jpg'
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
oldest_article = 7
|
oldest_article = 7
|
||||||
@ -14,3 +15,9 @@ class eMuzyka(BasicNewsRecipe):
|
|||||||
keep_only_tags=[dict(name='div', attrs={'id':'news_container'}), dict(name='h3'), dict(name='div', attrs={'class':'review_text'})]
|
keep_only_tags=[dict(name='div', attrs={'id':'news_container'}), dict(name='h3'), dict(name='div', attrs={'class':'review_text'})]
|
||||||
remove_tags=[dict(name='span', attrs={'id':'date'})]
|
remove_tags=[dict(name='span', attrs={'id':'date'})]
|
||||||
feeds = [(u'Aktualno\u015bci', u'http://www.emuzyka.pl/rss.php?f=1'), (u'Recenzje', u'http://www.emuzyka.pl/rss.php?f=2')]
|
feeds = [(u'Aktualno\u015bci', u'http://www.emuzyka.pl/rss.php?f=1'), (u'Recenzje', u'http://www.emuzyka.pl/rss.php?f=2')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -7,7 +7,7 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe):
|
|||||||
# cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/373529_38324934806_64930243_n.jpg'
|
# cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/373529_38324934806_64930243_n.jpg'
|
||||||
masthead_url = 'http://www.fhm.com/App_Resources/Images/Site/re-design/logo.gif'
|
masthead_url = 'http://www.fhm.com/App_Resources/Images/Site/re-design/logo.gif'
|
||||||
__author__ = 'Dave Asbury'
|
__author__ = 'Dave Asbury'
|
||||||
# last updated 17/3/12
|
# last updated 14/4/12
|
||||||
language = 'en_GB'
|
language = 'en_GB'
|
||||||
oldest_article = 28
|
oldest_article = 28
|
||||||
max_articles_per_feed = 12
|
max_articles_per_feed = 12
|
||||||
@ -28,7 +28,8 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe):
|
|||||||
|
|
||||||
#]
|
#]
|
||||||
feeds = [
|
feeds = [
|
||||||
(u'From the Homepage',u'http://feed43.com/8053226782885416.xml'),
|
(u'From the Homepage',u'http://feed43.com/0032328550253453.xml'),
|
||||||
|
#http://feed43.com/8053226782885416.xml'),
|
||||||
(u'Funny - The Very Best Of The Internet',u'http://feed43.com/4538510106331565.xml'),
|
(u'Funny - The Very Best Of The Internet',u'http://feed43.com/4538510106331565.xml'),
|
||||||
(u'Upgrade',u'http://feed43.com/0877305847443234.xml'),
|
(u'Upgrade',u'http://feed43.com/0877305847443234.xml'),
|
||||||
#(u'The Final Countdown', u'http://feed43.com/3576106158530118.xml'),
|
#(u'The Final Countdown', u'http://feed43.com/3576106158530118.xml'),
|
||||||
|
@ -7,6 +7,7 @@ class Filmweb_pl(BasicNewsRecipe):
|
|||||||
cover_url = 'http://userlogos.org/files/logos/crudus/filmweb.png'
|
cover_url = 'http://userlogos.org/files/logos/crudus/filmweb.png'
|
||||||
category = 'movies'
|
category = 'movies'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://www.filmweb.pl'
|
||||||
oldest_article = 8
|
oldest_article = 8
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets= True
|
no_stylesheets= True
|
||||||
@ -39,3 +40,9 @@ class Filmweb_pl(BasicNewsRecipe):
|
|||||||
self.log.warn(skip_tag)
|
self.log.warn(skip_tag)
|
||||||
return self.index_to_soup(skip_tag['href'], raw=True)
|
return self.index_to_soup(skip_tag['href'], raw=True)
|
||||||
|
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
16
recipes/fotoblogia_pl.recipe
Normal file
16
recipes/fotoblogia_pl.recipe
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Fotoblogia_pl(BasicNewsRecipe):
|
||||||
|
title = u'Fotoblogia.pl'
|
||||||
|
__author__ = 'fenuks'
|
||||||
|
category = 'photography'
|
||||||
|
language = 'pl'
|
||||||
|
masthead_url = 'http://img.interia.pl/komputery/nimg/u/0/fotoblogia21.jpg'
|
||||||
|
cover_url= 'http://fotoblogia.pl/images/2009/03/fotoblogia2.jpg'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
use_embedded_content = False
|
||||||
|
keep_only_tags=[dict(name='div', attrs={'class':'post-view post-standard'})]
|
||||||
|
remove_tags=[dict(attrs={'class':['external fotoblogia', 'categories', 'tags']})]
|
||||||
|
feeds = [(u'Wszystko', u'http://fotoblogia.pl/feed/rss2')]
|
@ -6,16 +6,24 @@ class Gameplay_pl(BasicNewsRecipe):
|
|||||||
description = u'gameplay.pl - serwis o naszych zainteresowaniach, grach, filmach, książkach, muzyce, fotografii i konsolach.'
|
description = u'gameplay.pl - serwis o naszych zainteresowaniach, grach, filmach, książkach, muzyce, fotografii i konsolach.'
|
||||||
category = 'games, movies, books, music'
|
category = 'games, movies, books, music'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://gameplay.pl'
|
||||||
masthead_url= 'http://gameplay.pl/img/gpy_top_logo.png'
|
masthead_url= 'http://gameplay.pl/img/gpy_top_logo.png'
|
||||||
cover_url= 'http://gameplay.pl/img/gpy_top_logo.png'
|
cover_url= 'http://gameplay.pl/img/gpy_top_logo.png'
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
|
remove_javascript= True
|
||||||
no_stylesheets= True
|
no_stylesheets= True
|
||||||
keep_only_tags=[dict(name='div', attrs={'class':['news_endpage_tit', 'news']})]
|
keep_only_tags=[dict(name='div', attrs={'class':['news_endpage_tit', 'news']})]
|
||||||
remove_tags=[dict(name='div', attrs={'class':['galeria', 'noedit center im']})]
|
remove_tags=[dict(name='div', attrs={'class':['galeria', 'noedit center im', 'news_list', 'news_list_autor', 'stop_bot', 'tagi']}), dict(attrs={'usemap':'#map'})]
|
||||||
feeds = [(u'Wiadomo\u015bci', u'http://gameplay.pl/rss/')]
|
feeds = [(u'Wiadomo\u015bci', u'http://gameplay.pl/rss/')]
|
||||||
|
|
||||||
def image_url_processor(self, baseurl, url):
|
def image_url_processor(self, baseurl, url):
|
||||||
if 'http' not in url:
|
if 'http' not in url:
|
||||||
return 'http://gameplay.pl'+ url[2:]
|
return 'http://gameplay.pl'+ url[2:]
|
||||||
else:
|
else:
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and '../' in a['href']:
|
||||||
|
a['href']=self.index + a['href'][2:]
|
||||||
|
return soup
|
@ -9,6 +9,7 @@ class Gildia(BasicNewsRecipe):
|
|||||||
language = 'pl'
|
language = 'pl'
|
||||||
oldest_article = 8
|
oldest_article = 8
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
|
remove_empty_feeds=True
|
||||||
no_stylesheets=True
|
no_stylesheets=True
|
||||||
remove_tags=[dict(name='div', attrs={'class':'backlink'}), dict(name='div', attrs={'class':'im_img'}), dict(name='div', attrs={'class':'addthis_toolbox addthis_default_style'})]
|
remove_tags=[dict(name='div', attrs={'class':'backlink'}), dict(name='div', attrs={'class':'im_img'}), dict(name='div', attrs={'class':'addthis_toolbox addthis_default_style'})]
|
||||||
keep_only_tags=dict(name='div', attrs={'class':'widetext'})
|
keep_only_tags=dict(name='div', attrs={'class':'widetext'})
|
||||||
@ -24,3 +25,16 @@ class Gildia(BasicNewsRecipe):
|
|||||||
self.log.warn('odnosnik')
|
self.log.warn('odnosnik')
|
||||||
self.log.warn(link['href'])
|
self.log.warn(link['href'])
|
||||||
return self.index_to_soup(link['href'], raw=True)
|
return self.index_to_soup(link['href'], raw=True)
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
if '/gry/' in a['href']:
|
||||||
|
a['href']='http://www.gry.gildia.pl' + a['href']
|
||||||
|
elif u'książk' in soup.title.string.lower() or u'komiks' in soup.title.string.lower():
|
||||||
|
a['href']='http://www.literatura.gildia.pl' + a['href']
|
||||||
|
elif u'komiks' in soup.title.string.lower():
|
||||||
|
a['href']='http://www.literatura.gildia.pl' + a['href']
|
||||||
|
else:
|
||||||
|
a['href']='http://www.gildia.pl' + a['href']
|
||||||
|
return soup
|
||||||
|
@ -7,6 +7,7 @@ class Gram_pl(BasicNewsRecipe):
|
|||||||
category = 'games'
|
category = 'games'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
oldest_article = 8
|
oldest_article = 8
|
||||||
|
index='http://www.gram.pl'
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets= True
|
no_stylesheets= True
|
||||||
extra_css = 'h2 {font-style: italic; font-size:20px;} .picbox div {float: left;}'
|
extra_css = 'h2 {font-style: italic; font-size:20px;} .picbox div {float: left;}'
|
||||||
@ -52,4 +53,7 @@ class Gram_pl(BasicNewsRecipe):
|
|||||||
tag=soup.findAll(name='div', attrs={'class':'picbox'})
|
tag=soup.findAll(name='div', attrs={'class':'picbox'})
|
||||||
for t in tag:
|
for t in tag:
|
||||||
t['style']='float: left;'
|
t['style']='float: left;'
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
return soup
|
return soup
|
@ -59,6 +59,7 @@ class heiseDe(BasicNewsRecipe):
|
|||||||
dict(name='span', attrs={'class':'rsaquo'}),
|
dict(name='span', attrs={'class':'rsaquo'}),
|
||||||
dict(name='div', attrs={'class':'news_logo'}),
|
dict(name='div', attrs={'class':'news_logo'}),
|
||||||
dict(name='div', attrs={'class':'bcadv ISI_IGNORE'}),
|
dict(name='div', attrs={'class':'bcadv ISI_IGNORE'}),
|
||||||
|
dict(name='div', attrs={'class':'navi_top_container'}),
|
||||||
dict(name='p', attrs={'class':'news_option'}),
|
dict(name='p', attrs={'class':'news_option'}),
|
||||||
dict(name='p', attrs={'class':'news_navi'}),
|
dict(name='p', attrs={'class':'news_navi'}),
|
||||||
dict(name='div', attrs={'class':'news_foren'})]
|
dict(name='div', attrs={'class':'news_foren'})]
|
||||||
@ -69,3 +70,5 @@ class heiseDe(BasicNewsRecipe):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
20
recipes/historia_news.recipe
Normal file
20
recipes/historia_news.recipe
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class historia_news(BasicNewsRecipe):
|
||||||
|
title = u'historia-news'
|
||||||
|
__author__ = 'fenuks'
|
||||||
|
description = u'Historia-news to portal dla ludzi kochających historię. Najnowsze newsy z historii bliższej i dalszej, archeologii, paleontologii oraz ciekawostki i podcasty z historii kultury, sportu, motoryzacji i inne.'
|
||||||
|
masthead_url = 'http://historia-news.pl/templates/hajak4/images/header.jpg'
|
||||||
|
cover_url= 'http://www.historia-news.pl/templates/hajak4/images/header.jpg'
|
||||||
|
category = 'history'
|
||||||
|
language = 'pl'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
remove_empty_feeds = True
|
||||||
|
remove_tags=[dict(name='form'), dict(name='img', attrs={'alt':'Print'}), dict(attrs={'class':['commbutt', 'cpr']}), dict(id=['plusone', 'facebook'])]
|
||||||
|
feeds = [(u'Wiadomo\u015bci', u'http://historia-news.pl/wiadomoci.feed?type=rss'), (u'Artyku\u0142y', u'http://historia-news.pl/artykuy.feed?type=rss')]
|
||||||
|
|
||||||
|
|
||||||
|
def print_version(self, url):
|
||||||
|
return url + '?tmpl=component&print=1&layout=default&page='
|
BIN
recipes/icons/fotoblogia_pl.png
Normal file
BIN
recipes/icons/fotoblogia_pl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 379 B |
BIN
recipes/icons/historia_news.png
Normal file
BIN
recipes/icons/historia_news.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 833 B |
BIN
recipes/icons/swiat_obrazu.png
Normal file
BIN
recipes/icons/swiat_obrazu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1006 B |
@ -8,6 +8,7 @@ class in4(BasicNewsRecipe):
|
|||||||
description = u'Serwis Informacyjny - Aktualnosci, recenzje'
|
description = u'Serwis Informacyjny - Aktualnosci, recenzje'
|
||||||
category = 'IT'
|
category = 'IT'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://www.in4.pl/'
|
||||||
#cover_url= 'http://www.in4.pl/recenzje/337/in4pl.jpg'
|
#cover_url= 'http://www.in4.pl/recenzje/337/in4pl.jpg'
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
remove_empty_feeds = True
|
remove_empty_feeds = True
|
||||||
@ -39,6 +40,7 @@ class in4(BasicNewsRecipe):
|
|||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
self.append_page(soup, soup.body)
|
self.append_page(soup, soup.body)
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ class INFRA(BasicNewsRecipe):
|
|||||||
description = u'Serwis Informacyjny INFRA - UFO, Zjawiska Paranormalne, Duchy, Tajemnice świata.'
|
description = u'Serwis Informacyjny INFRA - UFO, Zjawiska Paranormalne, Duchy, Tajemnice świata.'
|
||||||
cover_url = 'http://npn.nazwa.pl/templates/ja_teline_ii/images/logo.jpg'
|
cover_url = 'http://npn.nazwa.pl/templates/ja_teline_ii/images/logo.jpg'
|
||||||
category = 'UFO'
|
category = 'UFO'
|
||||||
|
index='http://infra.org.pl'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheers=True
|
no_stylesheers=True
|
||||||
@ -15,3 +16,11 @@ class INFRA(BasicNewsRecipe):
|
|||||||
remove_tags_after=dict(attrs={'class':'pagenav'})
|
remove_tags_after=dict(attrs={'class':'pagenav'})
|
||||||
remove_tags=[dict(attrs={'class':'pagenav'})]
|
remove_tags=[dict(attrs={'class':'pagenav'})]
|
||||||
feeds = [(u'Najnowsze wiadomo\u015bci', u'http://www.infra.org.pl/index.php?option=com_rd_rss&id=1')]
|
feeds = [(u'Najnowsze wiadomo\u015bci', u'http://www.infra.org.pl/index.php?option=com_rd_rss&id=1')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for item in soup.findAll(style=True):
|
||||||
|
del item['style']
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
34
recipes/jakarta_globe.recipe
Normal file
34
recipes/jakarta_globe.recipe
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class JakartaGlobe(BasicNewsRecipe):
|
||||||
|
title = u'Jakarta Globe'
|
||||||
|
oldest_article = 3
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
|
||||||
|
feeds = [
|
||||||
|
(u'News', u'http://www.thejakartaglobe.com/pages/getrss/getrss-news.php'),
|
||||||
|
(u'Business', u'http://www.thejakartaglobe.com/pages/getrss/getrss-business.php'),
|
||||||
|
(u'Technology', u'http://www.thejakartaglobe.com/pages/getrss/getrss-tech.php'),
|
||||||
|
(u'My Jakarta', u'http://www.thejakartaglobe.com/pages/getrss/getrss-myjakarta.php'),
|
||||||
|
(u'International', u'http://www.thejakartaglobe.com/pages/getrss/getrss-international.php'),
|
||||||
|
(u'Life and Times', u'http://www.thejakartaglobe.com/pages/getrss/getrss-lifeandtimes.php'),
|
||||||
|
]
|
||||||
|
__author__ = 'rty'
|
||||||
|
pubisher = 'JakartaGlobe.com'
|
||||||
|
description = 'JakartaGlobe, Indonesia, Newspaper'
|
||||||
|
category = 'News, Indonesia'
|
||||||
|
|
||||||
|
|
||||||
|
remove_javascript = True
|
||||||
|
use_embedded_content = False
|
||||||
|
no_stylesheets = True
|
||||||
|
language = 'en_ID'
|
||||||
|
encoding = 'utf-8'
|
||||||
|
conversion_options = {'linearize_tables':True}
|
||||||
|
masthead_url = 'http://www.thejakartaglobe.com/pages/2010/images/jak-globe-logo.jpg'
|
||||||
|
keep_only_tags = [
|
||||||
|
dict(name='div', attrs={'class':'story'}),
|
||||||
|
dict(name='span', attrs={'class':'headline'}),
|
||||||
|
dict(name='div', attrs={'class':'story'}),
|
||||||
|
dict(name='p', attrs={'id':'bodytext'})
|
||||||
|
]
|
@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
|
|
||||||
class Konflikty(BasicNewsRecipe):
|
class Konflikty(BasicNewsRecipe):
|
||||||
title = u'Konflikty Zbrojne'
|
title = u'Konflikty Zbrojne'
|
||||||
@ -10,6 +11,23 @@ class Konflikty(BasicNewsRecipe):
|
|||||||
category='military, history'
|
category='military, history'
|
||||||
oldest_article = 7
|
oldest_article = 7
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
auto_cleanup = True
|
no_stylesheets = True
|
||||||
|
keep_only_tags=[dict(attrs={'class':['title1', 'image']}), dict(id='body')]
|
||||||
|
|
||||||
feeds = [(u'Aktualności', u'http://www.konflikty.pl/rss_aktualnosci_10.xml'), (u'Artyku\u0142y', u'http://www.konflikty.pl/rss_artykuly_10.xml'), (u'Relacje', u'http://www.konflikty.pl/rss_relacje_10.xml'), (u'Recenzje', u'http://www.konflikty.pl/rss_recenzje_10.xml')]
|
feeds = [(u'Aktualności', u'http://www.konflikty.pl/rss_aktualnosci_10.xml'),
|
||||||
|
(u'Artyku\u0142y', u'http://www.konflikty.pl/rss_artykuly_10.xml'),
|
||||||
|
(u'Historia', u'http://www.konflikty.pl/rss_historia_10.xml'),
|
||||||
|
(u'Militaria', u'http://www.konflikty.pl/rss_militaria_10.xml'),
|
||||||
|
(u'Relacje', u'http://www.konflikty.pl/rss_relacje_10.xml'),
|
||||||
|
(u'Recenzje', u'http://www.konflikty.pl/rss_recenzje_10.xml'),
|
||||||
|
(u'Teksty źródłowe', u'http://www.konflikty.pl/rss_tekstyzrodlowe_10.xml')]
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for item in soup.findAll(style=True):
|
||||||
|
del item['style']
|
||||||
|
for image in soup.findAll(name='a', attrs={'class':'image'}):
|
||||||
|
if image.img and image.img.has_key('alt'):
|
||||||
|
image.name='div'
|
||||||
|
pos = len(image.contents)
|
||||||
|
image.insert(pos, BeautifulSoup('<p style="font-style:italic;">'+image.img['alt']+'</p>'))
|
||||||
|
return soup
|
||||||
|
12
recipes/liberatorio_politico.recipe
Normal file
12
recipes/liberatorio_politico.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class AdvancedUserRecipe1334649829(BasicNewsRecipe):
|
||||||
|
title = u'Liberatorio Politico'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
auto_cleanup = True
|
||||||
|
masthead_url = 'http://liberatorio.altervista.org/wp-content/uploads/2012/01/Testata-LIBERATORIO-Altervista1.jpg'
|
||||||
|
feeds = [(u'Liberatorio Politico', u'http://liberatorio.altervista.org/feed/')]
|
||||||
|
__author__ = 'faber1971'
|
||||||
|
description = 'Inquiry journalism - a blog on Molfetta, Land of Bari, Apulia and Italy - v1.00 (07, April 2012)'
|
||||||
|
language = 'it'
|
50
recipes/limes.recipe
Normal file
50
recipes/limes.recipe
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2012, faber1971'
|
||||||
|
__version__ = 'v1.00'
|
||||||
|
__date__ = '16, April 2012'
|
||||||
|
__description__ = 'Geopolitical Italian magazine'
|
||||||
|
|
||||||
|
|
||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Limes(BasicNewsRecipe):
|
||||||
|
description = 'Italian weekly magazine'
|
||||||
|
__author__ = 'faber1971'
|
||||||
|
|
||||||
|
cover_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif'
|
||||||
|
title = 'Limes'
|
||||||
|
category = 'Geopolitical news'
|
||||||
|
|
||||||
|
language = 'it'
|
||||||
|
# encoding = 'cp1252'
|
||||||
|
timefmt = '[%a, %d %b, %Y]'
|
||||||
|
|
||||||
|
oldest_article = 16
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
use_embedded_content = False
|
||||||
|
recursion = 10
|
||||||
|
|
||||||
|
remove_javascript = True
|
||||||
|
no_stylesheets = True
|
||||||
|
masthead_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif'
|
||||||
|
|
||||||
|
feeds = [
|
||||||
|
(u'Limes', u'http://temi.repubblica.it/limes/feed/')
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
keep_only_tags = [
|
||||||
|
dict(name='div', attrs={'class':['testo','copertina','occhiello','firma','didascalia','content-second-right','detail-articles','titolo-local','generic-articles']}),
|
||||||
|
dict(name='div', attrs={'class':['generic-articles','summary','detail-articles']}),
|
||||||
|
dict(name='div', attrs={'id':['content-second-right','content2']})
|
||||||
|
]
|
||||||
|
|
||||||
|
remove_tags = [
|
||||||
|
dict(name='div',attrs={'class':['servizi','aggiungi','label-web','bottom-mobile','box-abbonamenti','box-cerca','big','little','stampaweb']}),
|
||||||
|
dict(name='div',attrs={'id':['topheader','header','navigation-new','navigation','content-second-left','menutext']}),
|
||||||
|
dict(name='ul',attrs={'id':'user-utility'}),
|
||||||
|
dict(name=['script','noscript','iframe'])
|
||||||
|
]
|
||||||
|
|
@ -3,25 +3,6 @@ from calibre.web.feeds.news import BasicNewsRecipe
|
|||||||
import re
|
import re
|
||||||
from calibre.utils.magick import Image
|
from calibre.utils.magick import Image
|
||||||
from BeautifulSoup import BeautifulSoup
|
from BeautifulSoup import BeautifulSoup
|
||||||
try:
|
|
||||||
from calibre_plugins.drMerry.debug import debuglogger as mlog
|
|
||||||
print 'drMerry debuglogger found, debug options can be used'
|
|
||||||
from calibre_plugins.drMerry.stats import statslogger as mstat
|
|
||||||
print 'drMerry stats tracker found, stat can be tracked'
|
|
||||||
mlog.setLoglevel(1) #-1 == no log; 0 for normal output
|
|
||||||
mstat.calculateStats(False) #track stats (to track stats loglevel must be > 0
|
|
||||||
KEEPSTATS = mstat.keepmystats()
|
|
||||||
SHOWDEBUG0 = mlog.showdebuglevel(0)
|
|
||||||
SHOWDEBUG1 = mlog.showdebuglevel(1)
|
|
||||||
SHOWDEBUG2 = mlog.showdebuglevel(2)
|
|
||||||
except:
|
|
||||||
#print 'drMerry debuglogger not found, skipping debug options'
|
|
||||||
SHOWDEBUG0 = False
|
|
||||||
SHOWDEBUG1 = False
|
|
||||||
SHOWDEBUG2 = False
|
|
||||||
KEEPSTATS = False
|
|
||||||
|
|
||||||
#print ('level0: %s\nlevel1: %s\nlevel2: %s' % (SHOWDEBUG0,SHOWDEBUG1,SHOWDEBUG2))
|
|
||||||
|
|
||||||
''' Version 1.2, updated cover image to match the changed website.
|
''' Version 1.2, updated cover image to match the changed website.
|
||||||
added info date on title
|
added info date on title
|
||||||
@ -43,6 +24,9 @@ except:
|
|||||||
extended timeout from 2 to 10
|
extended timeout from 2 to 10
|
||||||
changed oldest article from 10 to 1.2
|
changed oldest article from 10 to 1.2
|
||||||
changed max articles from 15 to 25
|
changed max articles from 15 to 25
|
||||||
|
Version 1.9.1 18-04-2012
|
||||||
|
removed some debug settings
|
||||||
|
updated code to match new metro-layout
|
||||||
'''
|
'''
|
||||||
|
|
||||||
class AdvancedUserRecipe1306097511(BasicNewsRecipe):
|
class AdvancedUserRecipe1306097511(BasicNewsRecipe):
|
||||||
@ -70,34 +54,40 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe):
|
|||||||
'author_sort' : 'Metro Nederland & calibre & DrMerry',
|
'author_sort' : 'Metro Nederland & calibre & DrMerry',
|
||||||
'publisher' : 'DrMerry/Metro Nederland'
|
'publisher' : 'DrMerry/Metro Nederland'
|
||||||
}
|
}
|
||||||
extra_css = 'body {padding:5px 0px; background:#fff;font-size: 13px;}\
|
extra_css = 'body {padding:5px 0; background-color:#fff;font-size: 1em}\
|
||||||
#date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name {clear: both;margin-bottom: 10px;font-size:0.5em; color: #616262;}\
|
#date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name {margin-bottom: 10px}\
|
||||||
.article-box-fact.module-title {clear:both;padding: 8px 0;color: #24763b;font-family: arial, sans-serif;font-size: 14px;font-weight: bold;}\
|
#date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name, p.article-image-caption .credits {font-size:0.5em}\
|
||||||
h1.title {color: #000000;font-size: 44px;padding-bottom: 10px;font-weight: 300;} h2.subtitle {font-size: 13px;font-weight: 700;padding-bottom: 10px;}\
|
.article-box-fact.module-title, #date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name {clear:both}\
|
||||||
.article-body p{padding-bottom:10px;}div.column-1-3{margin-left: 19px;padding-right: 9px;}\
|
.article-box-fact.module-title {padding: 8px 0}\
|
||||||
div.column-1-2 {display: inline;padding-right: 7px;}\
|
h1.title {color: #000;font-size: 1.4em}\
|
||||||
p.article-image-caption {font-size: 12px;font-weight: 300;color: #616262;margin-top: 5px;} \
|
.article-box-fact.module-title, h2.subtitle {font-size: 1.2em}\
|
||||||
p.article-image-caption .credits {font-style: italic;font-size: 10px;}\
|
h1.title, h2.subtitle, .article-body p{padding-bottom:10px}\
|
||||||
div.article-image-caption {width: 246px;margin-bottom: 5px;margin-left: 10px;}\
|
h1.title, p.article-image-caption {font-weight: 300}\
|
||||||
div.article-image-caption-2column {margin-bottom: 10px;width: 373px;} div.article-image-caption-3column {}\
|
div.column-1-3{margin-left: 19px;padding-right: 9px}\
|
||||||
img {border:0px; padding:2px;} hr.merryhr {width:30%; border-width:0px; color:green; margin-left:5px; background-color: green} div.column-3 {background-color:#eee; width:50%; margin:2px; float:right; padding:2px;} div.column-3 module-title {border: 1px solid #aaa} div.article-box-fact div.subtitle {font-weight:bold; color:green;}'
|
div.column-1-2 {display: inline;padding-right: 7px}\
|
||||||
|
p.article-image-caption {font-size: 0.6em;margin-top: 5px}\
|
||||||
|
p.article-image-caption, #date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name {color: #616262}\
|
||||||
|
p.article-image-caption .credits {font-style: italic}\
|
||||||
|
div.article-image-caption {width: 246px;margin: 5px}\
|
||||||
|
div.article-image-caption-2column {width: 373px}\
|
||||||
|
div.article-image-caption-2column, div.article-image-caption-3column {margin-bottom: 5px}\
|
||||||
|
img {border:0}\
|
||||||
|
img, div.column-3 {padding:2px}\
|
||||||
|
hr.merryhr {width:30%; border-width:0; margin-left:5px; background-color: #24763b}\
|
||||||
|
div.column-3 {background-color:#eee; width:50%; margin:2px; float:right}\
|
||||||
|
div.column-3 module-title {border: 1px solid #aaa}\
|
||||||
|
div.article-box-fact div.subtitle, .article-box-fact.module-title, h2.subtitle {font-weight:bold}\
|
||||||
|
div.article-box-fact div.subtitle, hr.merryhr, .article-box-fact.module-title {color: #24763b}'
|
||||||
|
|
||||||
|
|
||||||
preprocess_regexps = [
|
preprocess_regexps = [
|
||||||
(re.compile(r'<img[^>]+top-line[^>]+>', re.DOTALL|re.IGNORECASE),
|
(re.compile(r'<img[^>]+top-line[^>]+>', re.DOTALL|re.IGNORECASE),
|
||||||
lambda match: '<hr class="merryhr" />'),
|
lambda match: '<hr class="merryhr" />'),
|
||||||
(re.compile(r'(<img[^>]+metronieuws\.nl/[^>]+/templates/[^>]+jpe?g[^>]+>|metronieuws\.nl/internal\-roxen\-unit\.gif)', re.DOTALL|re.IGNORECASE),
|
(re.compile(r'<img[^>]+(metronieuws\.nl/[^>]+/templates/[^>]+jpe?g|metronieuws\.nl/internal\-roxen\-unit\.gif)[^>]+>', re.DOTALL|re.IGNORECASE),
|
||||||
lambda match: ''),
|
lambda match: ''),
|
||||||
]
|
]
|
||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.setdefaults()
|
|
||||||
mlog.addTextAndTag(['Show debug = on with level'], [str(mlog.debuglevel)])
|
|
||||||
if KEEPSTATS == True:
|
|
||||||
mlog.addDebug('Stats will be calculated')
|
|
||||||
else:
|
|
||||||
mlog.addTextAndTag(['Stats won\'t be calculated\nTo be enabled, stats must be true, currently','and debug level must be 1 or higher, currently'],[mstat.dokeepmystats, mlog.debuglevel])
|
|
||||||
mlog.showDebug()
|
|
||||||
myProcess = MerryProcess()
|
myProcess = MerryProcess()
|
||||||
myProcess.removeUnwantedTags(soup)
|
myProcess.removeUnwantedTags(soup)
|
||||||
return soup
|
return soup
|
||||||
@ -105,18 +95,6 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe):
|
|||||||
def postprocess_html(self, soup, first):
|
def postprocess_html(self, soup, first):
|
||||||
myProcess = MerryProcess()
|
myProcess = MerryProcess()
|
||||||
myProcess.optimizeLayout(soup)
|
myProcess.optimizeLayout(soup)
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
if KEEPSTATS == True:
|
|
||||||
statinfo = 'generated stats:'
|
|
||||||
statinfo += str(mstat.stats(mstat.statslist))
|
|
||||||
print statinfo
|
|
||||||
statinfo = 'generated stats (for removed tags):'
|
|
||||||
statinfo += str(mstat.stats(mstat.removedtagslist))
|
|
||||||
print statinfo
|
|
||||||
#show all Debug info we forgot to report
|
|
||||||
#Using print to be sure that this text will not be added at the end of the log.
|
|
||||||
print '\n!!!!!unreported messages:\n(should be empty)\n'
|
|
||||||
mlog.showDebug()
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
@ -142,44 +120,24 @@ class MerryPreProcess():
|
|||||||
return soup
|
return soup
|
||||||
|
|
||||||
def optimizePicture(self,soup):
|
def optimizePicture(self,soup):
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addDebug('start image optimize')
|
|
||||||
for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')):
|
for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')):
|
||||||
iurl = tag['src']
|
iurl = tag['src']
|
||||||
img = Image()
|
img = Image()
|
||||||
img.open(iurl)
|
img.open(iurl)
|
||||||
img.trim(0)
|
img.trim(0)
|
||||||
img.save(iurl)
|
img.save(iurl)
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addDebug('Images optimized')
|
|
||||||
mlog.showDebug()
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
class MerryExtract():
|
class MerryExtract():
|
||||||
def safeRemovePart(self, killingSoup, soupIsArray):
|
def safeRemovePart(self, killingSoup, soupIsArray):
|
||||||
if killingSoup and not killingSoup == None:
|
if killingSoup and not killingSoup == None:
|
||||||
if SHOWDEBUG2 == True:
|
|
||||||
mlog.addTextAndTag(['items to remove'],[killingSoup])
|
|
||||||
try:
|
try:
|
||||||
if soupIsArray == True:
|
if soupIsArray == True:
|
||||||
for killer in killingSoup:
|
for killer in killingSoup:
|
||||||
killer.extract()
|
killer.extract()
|
||||||
else:
|
else:
|
||||||
killingSoup.extract()
|
killingSoup.extract()
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('tag extracted')
|
|
||||||
mlog.showDebug()
|
|
||||||
if KEEPSTATS == True:
|
|
||||||
try:
|
|
||||||
mstat.addstat(mstat.removedtagslist,str(killingSoup.name))
|
|
||||||
except:
|
|
||||||
mstat.addstat(mstat.removedtagslist,'unknown')
|
|
||||||
except:
|
except:
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('tag extraction failed')
|
|
||||||
mlog.showDebug()
|
|
||||||
if KEEPSTATS == True:
|
|
||||||
mstat.addstat(mstat.removedtagslist,'exception')
|
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
@ -230,60 +188,26 @@ class MerryProcess(BeautifulSoup):
|
|||||||
|
|
||||||
def optimizeLayout(self,soup):
|
def optimizeLayout(self,soup):
|
||||||
self.myPrepare.optimizePicture(soup)
|
self.myPrepare.optimizePicture(soup)
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addDebug('End of Optimize Layout')
|
|
||||||
mlog.showDebug()
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def insertFacts(self, soup):
|
def insertFacts(self, soup):
|
||||||
allfacts = soup.findAll('div', {'class':re.compile('^article-box-fact.*$')})
|
allfacts = soup.findAll('div', {'class':re.compile('^article-box-fact.*$')})
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addTextAndTag(['allfacts'],[allfacts])
|
|
||||||
mlog.showDebug()
|
|
||||||
if allfacts and not allfacts == None:
|
if allfacts and not allfacts == None:
|
||||||
allfactsparent = soup.find('div', {'class':re.compile('^article-box-fact.*$')}).parent
|
allfactsparent = soup.find('div', {'class':re.compile('^article-box-fact.*$')}).parent
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addTextAndTag(['allfactsparent'],[allfactsparent])
|
|
||||||
mlog.showDebug()
|
|
||||||
for part in allfactsparent:
|
for part in allfactsparent:
|
||||||
if not part in allfacts:
|
if not part in allfacts:
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addTextAndTag(['FOUND A non-fact'],[part])
|
|
||||||
mlog.showDebug()
|
|
||||||
self.myKiller.safeRemovePart(part, True)
|
self.myKiller.safeRemovePart(part, True)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addTextAndTag(['New All Facts'],[allfacts])
|
|
||||||
mlog.showDebug()
|
|
||||||
articlefacts = soup.find('div', {'class':'article-box-fact column'})
|
articlefacts = soup.find('div', {'class':'article-box-fact column'})
|
||||||
errorOccured=False
|
|
||||||
if (articlefacts and not articlefacts==None):
|
if (articlefacts and not articlefacts==None):
|
||||||
try:
|
try:
|
||||||
contenttag = soup.find('div', {'class':'article-body'})
|
contenttag = soup.find('div', {'class':'article-body'})
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addTextAndTag(['curcontag'],[contenttag])
|
|
||||||
mlog.showDebug()
|
|
||||||
foundrighttag = False
|
foundrighttag = False
|
||||||
if contenttag and not contenttag == None:
|
if contenttag and not contenttag == None:
|
||||||
foundrighttag = True
|
foundrighttag = True
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
if errorOccured == False:
|
|
||||||
mlog.addTextAndTag(['type','curcontag (in while)'],[type(contenttag),contenttag])
|
|
||||||
else:
|
|
||||||
mlog.addDebug('Could not find right parent tag. Error Occured')
|
|
||||||
mlog.showDebug()
|
|
||||||
if foundrighttag == True:
|
if foundrighttag == True:
|
||||||
contenttag.insert(0, allfactsparent)
|
contenttag.insert(0, allfactsparent)
|
||||||
if SHOWDEBUG2 == True:
|
|
||||||
mlog.addTextAndTag(['added parent'],[soup.prettify()])
|
|
||||||
mlog.showDebug()
|
|
||||||
except:
|
except:
|
||||||
errorOccured=True
|
pass
|
||||||
mlog.addTrace()
|
|
||||||
else:
|
|
||||||
errorOccured=True
|
|
||||||
if SHOWDEBUG0 == True and errorOccured == True:
|
|
||||||
mlog.addTextAndTag(['no articlefacts'],[articlefacts])
|
|
||||||
mlog.showDebug()
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def previousNextSibRemover(self, soup, previous=True, soupIsArray=False):
|
def previousNextSibRemover(self, soup, previous=True, soupIsArray=False):
|
||||||
@ -300,71 +224,38 @@ class MerryProcess(BeautifulSoup):
|
|||||||
sibs = findsibsof.nextSiblingGenerator()
|
sibs = findsibsof.nextSiblingGenerator()
|
||||||
for sib in sibs:
|
for sib in sibs:
|
||||||
self.myKiller.safeRemovePart(sib, True)
|
self.myKiller.safeRemovePart(sib, True)
|
||||||
else:
|
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Not any sib found')
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def removeUnwantedTags(self,soup):
|
def removeUnwantedTags(self,soup):
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addTextAndTag(['Len of Soup before RemoveTagsByName'],[len(str(soup))])
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeTagsByName(soup)
|
self.removeTagsByName(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before firstandlastpart: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.insertFacts(soup)
|
self.insertFacts(soup)
|
||||||
self.removeFirstAndLastPart(soup)
|
self.removeFirstAndLastPart(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before unwantedpart: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeUnwantedParts(soup)
|
self.removeUnwantedParts(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before EmptyParts: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeEmptyTags(soup)
|
self.removeEmptyTags(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup after EmptyParts: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.myReplacer.replaceATag(soup)
|
self.myReplacer.replaceATag(soup)
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeUnwantedParts(self, soup):
|
def removeUnwantedParts(self, soup):
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before UnwantedID: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeUnwantedTagsByID(soup)
|
self.removeUnwantedTagsByID(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before Class: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeUnwantedTagsByClass(soup)
|
self.removeUnwantedTagsByClass(soup)
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('Len of Soup before Style: %s' % len(str(soup)))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeUnwantedTagsByStyle(soup)
|
self.removeUnwantedTagsByStyle(soup)
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeUnwantedTagsByStyle(self,soup):
|
def removeUnwantedTagsByStyle(self,soup):
|
||||||
self.removeArrayOfTags(soup.findAll(attrs={'style' : re.compile("^(.*(display\s?:\s?none|img-mask|white)\s?;?.*)$")}))
|
self.removeArrayOfTags(soup.findAll(attrs={'style':re.compile("^(.*(display\s?:\s?none|img-mask|white)\s?;?.*)$")}))
|
||||||
if SHOWDEBUG0 == True:
|
self.removeArrayOfTags(soup.findAll(attrs={'title':'volledig scherm'}))
|
||||||
mlog.addDebug('end remove by style')
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeArrayOfTags(self,souparray):
|
def removeArrayOfTags(self,souparray):
|
||||||
return self.myKiller.safeRemovePart(souparray, True)
|
return self.myKiller.safeRemovePart(souparray, True)
|
||||||
|
|
||||||
def removeUnwantedTagsByClass(self,soup):
|
def removeUnwantedTagsByClass(self,soup):
|
||||||
if SHOWDEBUG0 == True:
|
self.removeArrayOfTags(soup.findAll("div", { "class" :re.compile('^(promo.*?|share-tools-top|share-tools-bottom|article-tools-below-title|metroCommentFormWrap|ad|share-tools|tools|header-links|related-links|padding-top-15|footer-[a-zA-Z0-9]+)$')}))
|
||||||
mlog.addDebug('start remove by class')
|
|
||||||
self.removeArrayOfTags(soup.findAll("div", { "class" :re.compile('^(promo.*?|article-tools-below-title|metroCommentFormWrap|ad|share-tools|tools|header-links|related-links|padding-top-15)$')}))
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeUnwantedTagsByID(self,soup):
|
def removeUnwantedTagsByID(self,soup):
|
||||||
defaultids = ['footer-extra',re.compile('^ad(\d+|adcomp.*?)?$'),'column-4-5','navigation','header',re.compile('^column-1-5-(top|bottom)$'),'footer','hidden_div','sidebar',re.compile('^article-\d$'),'comments','footer']
|
defaultids = ['footer-extra',re.compile('^ad(\d+|adcomp.*?)?$'),'column-4-5','navigation','header',re.compile('^column-1-5-(top|bottom)$'),'footer','hidden_div','sidebar',re.compile('^article-\d$'),'comments','footer','gallery-1']
|
||||||
for removeid in defaultids:
|
for removeid in defaultids:
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('RemoveTagByID, tag: %s, Len of Soup: %s' % (str(removeid), len(str(soup))))
|
|
||||||
mlog.showDebug()
|
|
||||||
self.removeArrayOfTags(soup.findAll(id=removeid))
|
self.removeArrayOfTags(soup.findAll(id=removeid))
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
@ -380,33 +271,12 @@ class MerryProcess(BeautifulSoup):
|
|||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeEmptyTags(self,soup,run=0):
|
def removeEmptyTags(self,soup,run=0):
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
mlog.addDebug('starting removeEmptyTags')
|
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
run += 1
|
|
||||||
mlog.addDebug(run)
|
|
||||||
if SHOWDEBUG2 == True:
|
|
||||||
mlog.addDebug(str(soup.prettify()))
|
|
||||||
mlog.showDebug()
|
|
||||||
emptymatches = re.compile('^( |\s|\n|\r|\t)*$')
|
emptymatches = re.compile('^( |\s|\n|\r|\t)*$')
|
||||||
emptytags = soup.findAll(lambda tag: tag.find(True) is None and (tag.string is None or tag.string.strip()=="" or tag.string.strip()==emptymatches) and not tag.isSelfClosing)
|
emptytags = soup.findAll(lambda tag: tag.find(True) is None and (tag.string is None or tag.string.strip()=="" or tag.string.strip()==emptymatches) and not tag.isSelfClosing)
|
||||||
if emptytags and not (emptytags == None or emptytags == []):
|
if emptytags and not (emptytags == None or emptytags == []):
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('tags found')
|
|
||||||
mlog.addDebug(str(emptytags))
|
|
||||||
self.removeArrayOfTags(emptytags)
|
self.removeArrayOfTags(emptytags)
|
||||||
#recursive in case removing empty tag creates new empty tag
|
#recursive in case removing empty tag creates new empty tag
|
||||||
self.removeEmptyTags(soup, run=run)
|
self.removeEmptyTags(soup, run=run)
|
||||||
else:
|
|
||||||
if SHOWDEBUG1 == True:
|
|
||||||
mlog.addDebug('no empty tags found')
|
|
||||||
mlog.showDebug()
|
|
||||||
if SHOWDEBUG0 == True:
|
|
||||||
if SHOWDEBUG2 == True:
|
|
||||||
mlog.addDebug('new soup:')
|
|
||||||
mlog.addDebug(str(soup.prettify()))
|
|
||||||
mlog.addDebug('RemoveEmptyTags Completed')
|
|
||||||
mlog.showDebug()
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def removeFirstAndLastPart(self,soup):
|
def removeFirstAndLastPart(self,soup):
|
||||||
|
@ -9,8 +9,9 @@ from calibre.web.feeds.recipes import BasicNewsRecipe
|
|||||||
class recipeMagic(BasicNewsRecipe):
|
class recipeMagic(BasicNewsRecipe):
|
||||||
title = 'National Geographic PL'
|
title = 'National Geographic PL'
|
||||||
__author__ = 'Marcin Urban 2011'
|
__author__ = 'Marcin Urban 2011'
|
||||||
|
__modified_by__ = 'fenuks'
|
||||||
description = 'legenda wśród magazynów z historią sięgającą 120 lat'
|
description = 'legenda wśród magazynów z historią sięgającą 120 lat'
|
||||||
cover_url = 'http://www.guj.pl/var/guj/storage/images/media/nasze_magazyny/national_geographic/logo/ng_logo/2606-1-pol-PL/ng_logo.jpg'
|
#cover_url = 'http://www.guj.pl/var/guj/storage/images/media/nasze_magazyny/national_geographic/logo/ng_logo/2606-1-pol-PL/ng_logo.jpg'
|
||||||
oldest_article = 7
|
oldest_article = 7
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
@ -42,11 +43,43 @@ class recipeMagic(BasicNewsRecipe):
|
|||||||
]
|
]
|
||||||
|
|
||||||
remove_attributes = ['width','height']
|
remove_attributes = ['width','height']
|
||||||
|
feeds=[]
|
||||||
|
|
||||||
feeds = [
|
def find_articles(self, url):
|
||||||
('National Geographic PL', 'http://www.national-geographic.pl/rss/'),
|
articles = []
|
||||||
]
|
soup=self.index_to_soup(url)
|
||||||
|
tag=soup.find(attrs={'class':'arl'})
|
||||||
|
art=tag.ul.findAll('li')
|
||||||
|
for i in art:
|
||||||
|
title=i.a['title']
|
||||||
|
url=i.a['href']
|
||||||
|
#date=soup.find(id='footer').ul.li.string[41:-1]
|
||||||
|
desc=i.div.p.string
|
||||||
|
articles.append({'title' : title,
|
||||||
|
'url' : url,
|
||||||
|
'date' : '',
|
||||||
|
'description' : desc
|
||||||
|
})
|
||||||
|
return articles
|
||||||
|
|
||||||
|
def parse_index(self):
|
||||||
|
feeds = []
|
||||||
|
feeds.append((u"Aktualności", self.find_articles('http://www.national-geographic.pl/aktualnosci/')))
|
||||||
|
feeds.append((u"Artykuły", self.find_articles('http://www.national-geographic.pl/artykuly/')))
|
||||||
|
|
||||||
|
return feeds
|
||||||
|
|
||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
return url.replace('artykuly0Cpokaz', 'drukuj-artykul')
|
if 'artykuly' in url:
|
||||||
|
return url.replace('artykuly/pokaz', 'drukuj-artykul')
|
||||||
|
elif 'aktualnosci' in url:
|
||||||
|
return url.replace('aktualnosci/pokaz', 'drukuj-artykul')
|
||||||
|
else:
|
||||||
|
return url
|
||||||
|
|
||||||
|
def get_cover_url(self):
|
||||||
|
soup = self.index_to_soup('http://www.national-geographic.pl/biezace-wydania/')
|
||||||
|
tag=soup.find(attrs={'class':'txt jus'})
|
||||||
|
self.cover_url=tag.img['src']
|
||||||
|
return getattr(self, 'cover_url', self.cover_url)
|
||||||
|
|
||||||
|
@ -81,5 +81,7 @@ class Nowa_Fantastyka(BasicNewsRecipe):
|
|||||||
title=soup.find(attrs={'class':'tytul'})
|
title=soup.find(attrs={'class':'tytul'})
|
||||||
if title:
|
if title:
|
||||||
title['style']='font-size: 20px; font-weight: bold;'
|
title['style']='font-size: 20px; font-weight: bold;'
|
||||||
self.log.warn(soup)
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.INDEX + a['href']
|
||||||
return soup
|
return soup
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import urllib, re
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class AdvancedUserRecipe1279258912(BasicNewsRecipe):
|
class AdvancedUserRecipe1279258912(BasicNewsRecipe):
|
||||||
@ -27,12 +28,30 @@ class AdvancedUserRecipe1279258912(BasicNewsRecipe):
|
|||||||
encoding = 'utf-8'
|
encoding = 'utf-8'
|
||||||
conversion_options = {'linearize_tables':True}
|
conversion_options = {'linearize_tables':True}
|
||||||
masthead_url = 'http://www.orlandosentinel.com/media/graphic/2009-07/46844851.gif'
|
masthead_url = 'http://www.orlandosentinel.com/media/graphic/2009-07/46844851.gif'
|
||||||
keep_only_tags = [
|
|
||||||
dict(name='div', attrs={'class':'story'})
|
auto_cleanup = True
|
||||||
]
|
|
||||||
remove_tags = [
|
def get_article_url(self, article):
|
||||||
dict(name='div', attrs={'class':['articlerail','tools','comment-group','clearfix']}),
|
ans = None
|
||||||
]
|
try:
|
||||||
remove_tags_after = [
|
s = article.summary
|
||||||
dict(name='p', attrs={'class':'copyright'}),
|
ans = urllib.unquote(
|
||||||
]
|
re.search(r'href=".+?bookmark.cfm.+?link=(.+?)"', s).group(1))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if ans is None:
|
||||||
|
link = article.get('feedburner_origlink', None)
|
||||||
|
if link and link.split('/')[-1]=="story01.htm":
|
||||||
|
link=link.split('/')[-2]
|
||||||
|
encoding = {'0B': '.', '0C': '/', '0A': '0', '0F': '=', '0G': '&',
|
||||||
|
'0D': '?', '0E': '-', '0N': '.com', '0L': 'http:',
|
||||||
|
'0S':'//'}
|
||||||
|
for k, v in encoding.iteritems():
|
||||||
|
link = link.replace(k, v)
|
||||||
|
ans = link
|
||||||
|
elif link:
|
||||||
|
ans = link
|
||||||
|
if ans is not None:
|
||||||
|
return ans.replace('?track=rss', '')
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ class PC_Arena(BasicNewsRecipe):
|
|||||||
description = u'Najnowsze informacje z branży IT - testy, recenzje, aktualności, rankingi, wywiady. Twoje źródło informacji o sprzęcie komputerowym.'
|
description = u'Najnowsze informacje z branży IT - testy, recenzje, aktualności, rankingi, wywiady. Twoje źródło informacji o sprzęcie komputerowym.'
|
||||||
category = 'IT'
|
category = 'IT'
|
||||||
language = 'pl'
|
language = 'pl'
|
||||||
|
index='http://pcarena.pl'
|
||||||
masthead_url='http://pcarena.pl/pcarena/img/logo.png'
|
masthead_url='http://pcarena.pl/pcarena/img/logo.png'
|
||||||
cover_url= 'http://pcarena.pl/pcarena/img/logo.png'
|
cover_url= 'http://pcarena.pl/pcarena/img/logo.png'
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
@ -22,4 +23,10 @@ class PC_Arena(BasicNewsRecipe):
|
|||||||
if 'http' not in url:
|
if 'http' not in url:
|
||||||
return 'http://pcarena.pl' + url
|
return 'http://pcarena.pl' + url
|
||||||
else:
|
else:
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -1,5 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
readitlaterlist.com
|
Pocket Calibre Recipe v1.0
|
||||||
"""
|
"""
|
||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '''
|
__copyright__ = '''
|
||||||
@ -12,22 +12,23 @@ from calibre import strftime
|
|||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
|
||||||
class Readitlater(BasicNewsRecipe):
|
class Pocket(BasicNewsRecipe):
|
||||||
title = 'ReadItLater'
|
title = 'Pocket'
|
||||||
__author__ = 'Darko Miletic, Przemyslaw Kryger, Keith Callenberg, tBunnyMan'
|
__author__ = 'Darko Miletic, Przemyslaw Kryger, Keith Callenberg, tBunnyMan'
|
||||||
description = '''Personalized news feeds. Go to readitlaterlist.com to setup \
|
description = '''Personalized news feeds. Go to getpocket.com to setup up \
|
||||||
up your news. This version displays pages of articles from \
|
your news. This version displays pages of articles from \
|
||||||
oldest to newest, with max & minimum counts, and marks articles \
|
oldest to newest, with max & minimum counts, and marks articles \
|
||||||
read after downloading.'''
|
read after downloading.'''
|
||||||
publisher = 'readitlaterlist.com'
|
publisher = 'getpocket.com'
|
||||||
category = 'news, custom'
|
category = 'news, custom'
|
||||||
oldest_article = 7
|
oldest_article = 7
|
||||||
max_articles_per_feed = 50
|
max_articles_per_feed = 50
|
||||||
minimum_articles = 1
|
minimum_articles = 10
|
||||||
|
mark_as_read_after_dl = True
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
needs_subscription = True
|
needs_subscription = True
|
||||||
INDEX = u'http://readitlaterlist.com'
|
INDEX = u'http://getpocket.com'
|
||||||
LOGIN = INDEX + u'/l'
|
LOGIN = INDEX + u'/l'
|
||||||
readList = []
|
readList = []
|
||||||
|
|
||||||
@ -100,9 +101,31 @@ class Readitlater(BasicNewsRecipe):
|
|||||||
br = self.get_browser()
|
br = self.get_browser()
|
||||||
for link in markList:
|
for link in markList:
|
||||||
url = self.INDEX + link
|
url = self.INDEX + link
|
||||||
|
print 'Marking read: ', url
|
||||||
response = br.open(url)
|
response = br.open(url)
|
||||||
response
|
print response.info()
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.mark_as_read(self.readList)
|
if self.mark_as_read_after_dl:
|
||||||
|
self.mark_as_read(self.readList)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def default_cover(self, cover_file):
|
||||||
|
'''
|
||||||
|
Create a generic cover for recipes that don't have a cover
|
||||||
|
This override adds time to the cover
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
from calibre.ebooks import calibre_cover
|
||||||
|
title = self.title if isinstance(self.title, unicode) else \
|
||||||
|
self.title.decode('utf-8', 'replace')
|
||||||
|
date = strftime(self.timefmt)
|
||||||
|
time = strftime('[%I:%M %p]')
|
||||||
|
img_data = calibre_cover(title, date, time)
|
||||||
|
cover_file.write(img_data)
|
||||||
|
cover_file.flush()
|
||||||
|
except:
|
||||||
|
self.log.exception('Failed to generate default cover')
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
25
recipes/swiat_obrazu.recipe
Normal file
25
recipes/swiat_obrazu.recipe
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Swiat_Obrazu(BasicNewsRecipe):
|
||||||
|
title = u'Swiat Obrazu'
|
||||||
|
__author__ = 'fenuks'
|
||||||
|
description = u'Internetowy Dziennik o Fotografii i Wideo www.SwiatObrazu.pl to źródło informacji o technice fotografii i wideo, o sprzęcie najbardziej znanych i uznanych firm: Canon, Nikon, Sony, Hasselblad i wielu innych. Znajdziecie tu programy do obróbki zdjęć, forum foto i forum wideo i galerie zdjęć. Codziennie najświeższe informacje: aktualności, testy, poradniki, wywiady, felietony. Swiatobrazu.pl stale organizuje konkursy oraz warsztaty fotograficzne i wideo.'
|
||||||
|
category = 'photography'
|
||||||
|
masthead_url = 'http://www.swiatobrazu.pl/img/logo.jpg'
|
||||||
|
cover_url = 'http://www.swiatobrazu.pl/img/logo.jpg'
|
||||||
|
language = 'pl'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
remove_javascript= True
|
||||||
|
use_embedded_content = False
|
||||||
|
feeds = [(u'Wszystko', u'http://www.swiatobrazu.pl/rss')]
|
||||||
|
|
||||||
|
def print_version(self, url):
|
||||||
|
return url + ',drukuj'
|
||||||
|
|
||||||
|
def image_url_processor(self, baseurl, url):
|
||||||
|
if 'http://' not in url or 'https://' not in url:
|
||||||
|
return 'http://www.swiatobrazu.pl' + url[5:]
|
||||||
|
else:
|
||||||
|
return url
|
@ -34,4 +34,12 @@ class tanuki(BasicNewsRecipe):
|
|||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
self.append_page(soup, soup.body)
|
self.append_page(soup, soup.body)
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
if 'tanuki-anime' in soup.title.string.lower():
|
||||||
|
a['href']='http://anime.tanuki.pl' + a['href']
|
||||||
|
elif 'tanuki-manga' in soup.title.string.lower():
|
||||||
|
a['href']='http://manga.tanuki.pl' + a['href']
|
||||||
|
elif 'tanuki-czytelnia' in soup.title.string.lower():
|
||||||
|
a['href']='http://czytelnia.tanuki.pl' + a['href']
|
||||||
return soup
|
return soup
|
@ -8,6 +8,7 @@ class webhosting_pl(BasicNewsRecipe):
|
|||||||
cover_url='http://webhosting.pl/images/logo.png'
|
cover_url='http://webhosting.pl/images/logo.png'
|
||||||
masthead_url='http://webhosting.pl/images/logo.png'
|
masthead_url='http://webhosting.pl/images/logo.png'
|
||||||
oldest_article = 7
|
oldest_article = 7
|
||||||
|
index='http://webhosting.pl'
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
remove_empty_feeds = True
|
remove_empty_feeds = True
|
||||||
@ -36,4 +37,10 @@ class webhosting_pl(BasicNewsRecipe):
|
|||||||
(u'Marketing', u'http://webhosting.pl/feed/rss/n/11535')]
|
(u'Marketing', u'http://webhosting.pl/feed/rss/n/11535')]
|
||||||
|
|
||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
return url.replace('webhosting.pl', 'webhosting.pl/print')
|
return url.replace('webhosting.pl', 'webhosting.pl/print')
|
||||||
|
|
||||||
|
def preprocess_html(self, soup):
|
||||||
|
for a in soup('a'):
|
||||||
|
if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']:
|
||||||
|
a['href']=self.index + a['href']
|
||||||
|
return soup
|
@ -21,7 +21,7 @@ class XkcdCom(BasicNewsRecipe):
|
|||||||
|
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
oldest_article = 60
|
oldest_article = 60
|
||||||
keep_only_tags = [dict(id='middleContent')]
|
keep_only_tags = [dict(id='middleContainer')]
|
||||||
remove_tags = [dict(name='ul'), dict(name='h3'), dict(name='br')]
|
remove_tags = [dict(name='ul'), dict(name='h3'), dict(name='br')]
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
# turn image bubblehelp into a paragraph
|
# turn image bubblehelp into a paragraph
|
||||||
|
@ -26,7 +26,7 @@ def login_to_google(username, password):
|
|||||||
br.form['Email'] = username
|
br.form['Email'] = username
|
||||||
br.form['Passwd'] = password
|
br.form['Passwd'] = password
|
||||||
raw = br.submit().read()
|
raw = br.submit().read()
|
||||||
if re.search(br'<title>.*?Account Settings</title>', raw) is None:
|
if re.search(br'(?i)<title>.*?Account Settings</title>', raw) is None:
|
||||||
x = re.search(br'(?is)<title>.*?</title>', raw)
|
x = re.search(br'(?is)<title>.*?</title>', raw)
|
||||||
if x is not None:
|
if x is not None:
|
||||||
print ('Title of post login page: %s'%x.group())
|
print ('Title of post login page: %s'%x.group())
|
||||||
|
@ -12,14 +12,14 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-"
|
"Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-"
|
||||||
"devel@lists.alioth.debian.org>\n"
|
"devel@lists.alioth.debian.org>\n"
|
||||||
"POT-Creation-Date: 2011-11-25 14:01+0000\n"
|
"POT-Creation-Date: 2011-11-25 14:01+0000\n"
|
||||||
"PO-Revision-Date: 2011-12-14 19:48+0000\n"
|
"PO-Revision-Date: 2012-04-12 09:56+0000\n"
|
||||||
"Last-Translator: Ferran Rius <frius64@hotmail.com>\n"
|
"Last-Translator: Dídac Rios <didac@niorcs.com>\n"
|
||||||
"Language-Team: Catalan <linux@softcatala.org>\n"
|
"Language-Team: Catalan <linux@softcatala.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-12-15 05:18+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-13 05:26+0000\n"
|
||||||
"X-Generator: Launchpad (build 14487)\n"
|
"X-Generator: Launchpad (build 15070)\n"
|
||||||
"Language: ca\n"
|
"Language: ca\n"
|
||||||
|
|
||||||
#. name for aaa
|
#. name for aaa
|
||||||
@ -9584,31 +9584,31 @@ msgstr ""
|
|||||||
|
|
||||||
#. name for hoi
|
#. name for hoi
|
||||||
msgid "Holikachuk"
|
msgid "Holikachuk"
|
||||||
msgstr ""
|
msgstr "Holikachuk"
|
||||||
|
|
||||||
#. name for hoj
|
#. name for hoj
|
||||||
msgid "Hadothi"
|
msgid "Hadothi"
|
||||||
msgstr ""
|
msgstr "Hadothi"
|
||||||
|
|
||||||
#. name for hol
|
#. name for hol
|
||||||
msgid "Holu"
|
msgid "Holu"
|
||||||
msgstr ""
|
msgstr "Holu"
|
||||||
|
|
||||||
#. name for hom
|
#. name for hom
|
||||||
msgid "Homa"
|
msgid "Homa"
|
||||||
msgstr ""
|
msgstr "Homa"
|
||||||
|
|
||||||
#. name for hoo
|
#. name for hoo
|
||||||
msgid "Holoholo"
|
msgid "Holoholo"
|
||||||
msgstr ""
|
msgstr "Holoholo"
|
||||||
|
|
||||||
#. name for hop
|
#. name for hop
|
||||||
msgid "Hopi"
|
msgid "Hopi"
|
||||||
msgstr ""
|
msgstr "Hopi"
|
||||||
|
|
||||||
#. name for hor
|
#. name for hor
|
||||||
msgid "Horo"
|
msgid "Horo"
|
||||||
msgstr ""
|
msgstr "Horo"
|
||||||
|
|
||||||
#. name for hos
|
#. name for hos
|
||||||
msgid "Ho Chi Minh City Sign Language"
|
msgid "Ho Chi Minh City Sign Language"
|
||||||
@ -9616,15 +9616,15 @@ msgstr "Llenguatge de signes de la ciutat de Ho Chi Minh"
|
|||||||
|
|
||||||
#. name for hot
|
#. name for hot
|
||||||
msgid "Hote"
|
msgid "Hote"
|
||||||
msgstr ""
|
msgstr "Hote"
|
||||||
|
|
||||||
#. name for hov
|
#. name for hov
|
||||||
msgid "Hovongan"
|
msgid "Hovongan"
|
||||||
msgstr ""
|
msgstr "Hovongan"
|
||||||
|
|
||||||
#. name for how
|
#. name for how
|
||||||
msgid "Honi"
|
msgid "Honi"
|
||||||
msgstr ""
|
msgstr "Honi"
|
||||||
|
|
||||||
#. name for hoy
|
#. name for hoy
|
||||||
msgid "Holiya"
|
msgid "Holiya"
|
||||||
@ -9636,7 +9636,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. name for hpo
|
#. name for hpo
|
||||||
msgid "Hpon"
|
msgid "Hpon"
|
||||||
msgstr ""
|
msgstr "Hpon"
|
||||||
|
|
||||||
#. name for hps
|
#. name for hps
|
||||||
msgid "Hawai'i Pidgin Sign Language"
|
msgid "Hawai'i Pidgin Sign Language"
|
||||||
@ -9644,35 +9644,35 @@ msgstr "Hawaià Pidgin; llenguatge de signes"
|
|||||||
|
|
||||||
#. name for hra
|
#. name for hra
|
||||||
msgid "Hrangkhol"
|
msgid "Hrangkhol"
|
||||||
msgstr ""
|
msgstr "Hrangkhol"
|
||||||
|
|
||||||
#. name for hre
|
#. name for hre
|
||||||
msgid "Hre"
|
msgid "Hre"
|
||||||
msgstr ""
|
msgstr "Hre"
|
||||||
|
|
||||||
#. name for hrk
|
#. name for hrk
|
||||||
msgid "Haruku"
|
msgid "Haruku"
|
||||||
msgstr ""
|
msgstr "Haruku"
|
||||||
|
|
||||||
#. name for hrm
|
#. name for hrm
|
||||||
msgid "Miao; Horned"
|
msgid "Miao; Horned"
|
||||||
msgstr ""
|
msgstr "Miao; Horned"
|
||||||
|
|
||||||
#. name for hro
|
#. name for hro
|
||||||
msgid "Haroi"
|
msgid "Haroi"
|
||||||
msgstr ""
|
msgstr "Haroi"
|
||||||
|
|
||||||
#. name for hrr
|
#. name for hrr
|
||||||
msgid "Horuru"
|
msgid "Horuru"
|
||||||
msgstr ""
|
msgstr "Horuru"
|
||||||
|
|
||||||
#. name for hrt
|
#. name for hrt
|
||||||
msgid "Hértevin"
|
msgid "Hértevin"
|
||||||
msgstr ""
|
msgstr "Hértevin"
|
||||||
|
|
||||||
#. name for hru
|
#. name for hru
|
||||||
msgid "Hruso"
|
msgid "Hruso"
|
||||||
msgstr ""
|
msgstr "Hruso"
|
||||||
|
|
||||||
#. name for hrv
|
#. name for hrv
|
||||||
msgid "Croatian"
|
msgid "Croatian"
|
||||||
@ -9680,11 +9680,11 @@ msgstr "Croat"
|
|||||||
|
|
||||||
#. name for hrx
|
#. name for hrx
|
||||||
msgid "Hunsrik"
|
msgid "Hunsrik"
|
||||||
msgstr ""
|
msgstr "Hunsrik"
|
||||||
|
|
||||||
#. name for hrz
|
#. name for hrz
|
||||||
msgid "Harzani"
|
msgid "Harzani"
|
||||||
msgstr ""
|
msgstr "Harzani"
|
||||||
|
|
||||||
#. name for hsb
|
#. name for hsb
|
||||||
msgid "Sorbian; Upper"
|
msgid "Sorbian; Upper"
|
||||||
@ -9704,31 +9704,31 @@ msgstr "Xinès; Xiang"
|
|||||||
|
|
||||||
#. name for hss
|
#. name for hss
|
||||||
msgid "Harsusi"
|
msgid "Harsusi"
|
||||||
msgstr ""
|
msgstr "Harsusi"
|
||||||
|
|
||||||
#. name for hti
|
#. name for hti
|
||||||
msgid "Hoti"
|
msgid "Hoti"
|
||||||
msgstr ""
|
msgstr "Hoti"
|
||||||
|
|
||||||
#. name for hto
|
#. name for hto
|
||||||
msgid "Huitoto; Minica"
|
msgid "Huitoto; Minica"
|
||||||
msgstr ""
|
msgstr "Huitoto; Minica"
|
||||||
|
|
||||||
#. name for hts
|
#. name for hts
|
||||||
msgid "Hadza"
|
msgid "Hadza"
|
||||||
msgstr ""
|
msgstr "Hadza"
|
||||||
|
|
||||||
#. name for htu
|
#. name for htu
|
||||||
msgid "Hitu"
|
msgid "Hitu"
|
||||||
msgstr ""
|
msgstr "Hitu"
|
||||||
|
|
||||||
#. name for htx
|
#. name for htx
|
||||||
msgid "Hittite; Middle"
|
msgid "Hittite; Middle"
|
||||||
msgstr ""
|
msgstr "Hittite; Middle"
|
||||||
|
|
||||||
#. name for hub
|
#. name for hub
|
||||||
msgid "Huambisa"
|
msgid "Huambisa"
|
||||||
msgstr ""
|
msgstr "Huambisa"
|
||||||
|
|
||||||
#. name for huc
|
#. name for huc
|
||||||
msgid "=/Hua"
|
msgid "=/Hua"
|
||||||
@ -9736,27 +9736,27 @@ msgstr ""
|
|||||||
|
|
||||||
#. name for hud
|
#. name for hud
|
||||||
msgid "Huaulu"
|
msgid "Huaulu"
|
||||||
msgstr ""
|
msgstr "Huaulu"
|
||||||
|
|
||||||
#. name for hue
|
#. name for hue
|
||||||
msgid "Huave; San Francisco Del Mar"
|
msgid "Huave; San Francisco Del Mar"
|
||||||
msgstr ""
|
msgstr "Huave; San Francisco Del Mar"
|
||||||
|
|
||||||
#. name for huf
|
#. name for huf
|
||||||
msgid "Humene"
|
msgid "Humene"
|
||||||
msgstr ""
|
msgstr "Humene"
|
||||||
|
|
||||||
#. name for hug
|
#. name for hug
|
||||||
msgid "Huachipaeri"
|
msgid "Huachipaeri"
|
||||||
msgstr ""
|
msgstr "Huachipaeri"
|
||||||
|
|
||||||
#. name for huh
|
#. name for huh
|
||||||
msgid "Huilliche"
|
msgid "Huilliche"
|
||||||
msgstr ""
|
msgstr "Huilliche"
|
||||||
|
|
||||||
#. name for hui
|
#. name for hui
|
||||||
msgid "Huli"
|
msgid "Huli"
|
||||||
msgstr ""
|
msgstr "Huli"
|
||||||
|
|
||||||
#. name for huj
|
#. name for huj
|
||||||
msgid "Miao; Northern Guiyang"
|
msgid "Miao; Northern Guiyang"
|
||||||
@ -9764,15 +9764,15 @@ msgstr "Miao; Guiyang septentrional"
|
|||||||
|
|
||||||
#. name for huk
|
#. name for huk
|
||||||
msgid "Hulung"
|
msgid "Hulung"
|
||||||
msgstr ""
|
msgstr "Hulung"
|
||||||
|
|
||||||
#. name for hul
|
#. name for hul
|
||||||
msgid "Hula"
|
msgid "Hula"
|
||||||
msgstr ""
|
msgstr "Hula"
|
||||||
|
|
||||||
#. name for hum
|
#. name for hum
|
||||||
msgid "Hungana"
|
msgid "Hungana"
|
||||||
msgstr ""
|
msgstr "Hungana"
|
||||||
|
|
||||||
#. name for hun
|
#. name for hun
|
||||||
msgid "Hungarian"
|
msgid "Hungarian"
|
||||||
@ -9780,43 +9780,43 @@ msgstr "Hongarès"
|
|||||||
|
|
||||||
#. name for huo
|
#. name for huo
|
||||||
msgid "Hu"
|
msgid "Hu"
|
||||||
msgstr ""
|
msgstr "Hu"
|
||||||
|
|
||||||
#. name for hup
|
#. name for hup
|
||||||
msgid "Hupa"
|
msgid "Hupa"
|
||||||
msgstr ""
|
msgstr "Hupa"
|
||||||
|
|
||||||
#. name for huq
|
#. name for huq
|
||||||
msgid "Tsat"
|
msgid "Tsat"
|
||||||
msgstr ""
|
msgstr "Tsat"
|
||||||
|
|
||||||
#. name for hur
|
#. name for hur
|
||||||
msgid "Halkomelem"
|
msgid "Halkomelem"
|
||||||
msgstr ""
|
msgstr "Halkomelem"
|
||||||
|
|
||||||
#. name for hus
|
#. name for hus
|
||||||
msgid "Huastec"
|
msgid "Huastec"
|
||||||
msgstr ""
|
msgstr "Huastec"
|
||||||
|
|
||||||
#. name for hut
|
#. name for hut
|
||||||
msgid "Humla"
|
msgid "Humla"
|
||||||
msgstr ""
|
msgstr "Humla"
|
||||||
|
|
||||||
#. name for huu
|
#. name for huu
|
||||||
msgid "Huitoto; Murui"
|
msgid "Huitoto; Murui"
|
||||||
msgstr ""
|
msgstr "Huitoto; Murui"
|
||||||
|
|
||||||
#. name for huv
|
#. name for huv
|
||||||
msgid "Huave; San Mateo Del Mar"
|
msgid "Huave; San Mateo Del Mar"
|
||||||
msgstr ""
|
msgstr "Huave; San Mateo Del Mar"
|
||||||
|
|
||||||
#. name for huw
|
#. name for huw
|
||||||
msgid "Hukumina"
|
msgid "Hukumina"
|
||||||
msgstr ""
|
msgstr "Hukumina"
|
||||||
|
|
||||||
#. name for hux
|
#. name for hux
|
||||||
msgid "Huitoto; Nüpode"
|
msgid "Huitoto; Nüpode"
|
||||||
msgstr ""
|
msgstr "Huitoto; Nüpode"
|
||||||
|
|
||||||
#. name for huy
|
#. name for huy
|
||||||
msgid "Hulaulá"
|
msgid "Hulaulá"
|
||||||
|
@ -8,14 +8,14 @@ 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-11-25 14:01+0000\n"
|
"POT-Creation-Date: 2011-11-25 14:01+0000\n"
|
||||||
"PO-Revision-Date: 2012-03-11 10:13+0000\n"
|
"PO-Revision-Date: 2012-04-18 20:56+0000\n"
|
||||||
"Last-Translator: Jellby <Unknown>\n"
|
"Last-Translator: David de Obregon <Unknown>\n"
|
||||||
"Language-Team: Spanish <es@li.org>\n"
|
"Language-Team: Spanish <es@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: 2012-03-12 04:38+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-19 04:37+0000\n"
|
||||||
"X-Generator: Launchpad (build 14933)\n"
|
"X-Generator: Launchpad (build 15108)\n"
|
||||||
|
|
||||||
#. name for aaa
|
#. name for aaa
|
||||||
msgid "Ghotuo"
|
msgid "Ghotuo"
|
||||||
@ -4931,7 +4931,7 @@ msgstr "Como karim"
|
|||||||
|
|
||||||
#. name for cfm
|
#. name for cfm
|
||||||
msgid "Chin; Falam"
|
msgid "Chin; Falam"
|
||||||
msgstr ""
|
msgstr "Chin; Falam"
|
||||||
|
|
||||||
#. name for cga
|
#. name for cga
|
||||||
msgid "Changriwa"
|
msgid "Changriwa"
|
||||||
@ -5071,7 +5071,7 @@ msgstr "Chinali"
|
|||||||
|
|
||||||
#. name for cik
|
#. name for cik
|
||||||
msgid "Kinnauri; Chitkuli"
|
msgid "Kinnauri; Chitkuli"
|
||||||
msgstr ""
|
msgstr "Kinnauri; Chitkuli"
|
||||||
|
|
||||||
#. name for cim
|
#. name for cim
|
||||||
msgid "Cimbrian"
|
msgid "Cimbrian"
|
||||||
@ -5147,7 +5147,7 @@ msgstr "Chino jin"
|
|||||||
|
|
||||||
#. name for cka
|
#. name for cka
|
||||||
msgid "Chin; Khumi Awa"
|
msgid "Chin; Khumi Awa"
|
||||||
msgstr ""
|
msgstr "Chin; Khumi Awa"
|
||||||
|
|
||||||
#. name for ckb
|
#. name for ckb
|
||||||
msgid "Kurdish; Central"
|
msgid "Kurdish; Central"
|
||||||
@ -5287,7 +5287,7 @@ msgstr "Mnong central"
|
|||||||
|
|
||||||
#. name for cmr
|
#. name for cmr
|
||||||
msgid "Chin; Mro"
|
msgid "Chin; Mro"
|
||||||
msgstr ""
|
msgstr "Chin; Mro"
|
||||||
|
|
||||||
#. name for cms
|
#. name for cms
|
||||||
msgid "Messapic"
|
msgid "Messapic"
|
||||||
@ -5303,7 +5303,7 @@ msgstr "Changthang"
|
|||||||
|
|
||||||
#. name for cnb
|
#. name for cnb
|
||||||
msgid "Chin; Chinbon"
|
msgid "Chin; Chinbon"
|
||||||
msgstr ""
|
msgstr "Chin; Chinbon"
|
||||||
|
|
||||||
#. name for cnc
|
#. name for cnc
|
||||||
msgid "Côông"
|
msgid "Côông"
|
||||||
@ -5315,7 +5315,7 @@ msgstr "Qiang septentrional"
|
|||||||
|
|
||||||
#. name for cnh
|
#. name for cnh
|
||||||
msgid "Chin; Haka"
|
msgid "Chin; Haka"
|
||||||
msgstr ""
|
msgstr "Chin; Haka"
|
||||||
|
|
||||||
#. name for cni
|
#. name for cni
|
||||||
msgid "Asháninka"
|
msgid "Asháninka"
|
||||||
@ -5323,7 +5323,7 @@ msgstr "Asháninka"
|
|||||||
|
|
||||||
#. name for cnk
|
#. name for cnk
|
||||||
msgid "Chin; Khumi"
|
msgid "Chin; Khumi"
|
||||||
msgstr ""
|
msgstr "Chin; Khumi"
|
||||||
|
|
||||||
#. name for cnl
|
#. name for cnl
|
||||||
msgid "Chinantec; Lalana"
|
msgid "Chinantec; Lalana"
|
||||||
@ -5347,7 +5347,7 @@ msgstr "Chenoua"
|
|||||||
|
|
||||||
#. name for cnw
|
#. name for cnw
|
||||||
msgid "Chin; Ngawn"
|
msgid "Chin; Ngawn"
|
||||||
msgstr ""
|
msgstr "Chin; Ngawn"
|
||||||
|
|
||||||
#. name for cnx
|
#. name for cnx
|
||||||
msgid "Cornish; Middle"
|
msgid "Cornish; Middle"
|
||||||
@ -5459,7 +5459,7 @@ msgstr "Chinanteco de Palantla"
|
|||||||
|
|
||||||
#. name for cpb
|
#. name for cpb
|
||||||
msgid "Ashéninka; Ucayali-Yurúa"
|
msgid "Ashéninka; Ucayali-Yurúa"
|
||||||
msgstr ""
|
msgstr "Ashéninka; Ucayali-Yurúa"
|
||||||
|
|
||||||
#. name for cpc
|
#. name for cpc
|
||||||
msgid "Ajyíninka Apurucayali"
|
msgid "Ajyíninka Apurucayali"
|
||||||
@ -5483,7 +5483,7 @@ msgstr "Capiznon"
|
|||||||
|
|
||||||
#. name for cpu
|
#. name for cpu
|
||||||
msgid "Ashéninka; Pichis"
|
msgid "Ashéninka; Pichis"
|
||||||
msgstr ""
|
msgstr "Ashéninka; Pichis"
|
||||||
|
|
||||||
#. name for cpx
|
#. name for cpx
|
||||||
msgid "Chinese; Pu-Xian"
|
msgid "Chinese; Pu-Xian"
|
||||||
@ -5491,11 +5491,11 @@ msgstr "Chino puxian"
|
|||||||
|
|
||||||
#. name for cpy
|
#. name for cpy
|
||||||
msgid "Ashéninka; South Ucayali"
|
msgid "Ashéninka; South Ucayali"
|
||||||
msgstr ""
|
msgstr "Ashéninka; South Ucayali"
|
||||||
|
|
||||||
#. name for cqd
|
#. name for cqd
|
||||||
msgid "Miao; Chuanqiandian Cluster"
|
msgid "Miao; Chuanqiandian Cluster"
|
||||||
msgstr ""
|
msgstr "Miao; Chuanqiandian Cluster"
|
||||||
|
|
||||||
#. name for cqu
|
#. name for cqu
|
||||||
msgid "Quechua; Chilean"
|
msgid "Quechua; Chilean"
|
||||||
@ -5507,7 +5507,7 @@ msgstr "Chara"
|
|||||||
|
|
||||||
#. name for crb
|
#. name for crb
|
||||||
msgid "Carib; Island"
|
msgid "Carib; Island"
|
||||||
msgstr ""
|
msgstr "Carib; Island"
|
||||||
|
|
||||||
#. name for crc
|
#. name for crc
|
||||||
msgid "Lonwolwol"
|
msgid "Lonwolwol"
|
||||||
@ -5539,23 +5539,23 @@ msgstr "Forro"
|
|||||||
|
|
||||||
#. name for crj
|
#. name for crj
|
||||||
msgid "Cree; Southern East"
|
msgid "Cree; Southern East"
|
||||||
msgstr ""
|
msgstr "Cree; Southern East"
|
||||||
|
|
||||||
#. name for crk
|
#. name for crk
|
||||||
msgid "Cree; Plains"
|
msgid "Cree; Plains"
|
||||||
msgstr ""
|
msgstr "Cree; Plains"
|
||||||
|
|
||||||
#. name for crl
|
#. name for crl
|
||||||
msgid "Cree; Northern East"
|
msgid "Cree; Northern East"
|
||||||
msgstr ""
|
msgstr "Cree; Northern East"
|
||||||
|
|
||||||
#. name for crm
|
#. name for crm
|
||||||
msgid "Cree; Moose"
|
msgid "Cree; Moose"
|
||||||
msgstr ""
|
msgstr "Cree; Moose"
|
||||||
|
|
||||||
#. name for crn
|
#. name for crn
|
||||||
msgid "Cora; El Nayar"
|
msgid "Cora; El Nayar"
|
||||||
msgstr ""
|
msgstr "Cora; El Nayar"
|
||||||
|
|
||||||
#. name for cro
|
#. name for cro
|
||||||
msgid "Crow"
|
msgid "Crow"
|
||||||
@ -5563,11 +5563,11 @@ msgstr "Crow"
|
|||||||
|
|
||||||
#. name for crq
|
#. name for crq
|
||||||
msgid "Chorote; Iyo'wujwa"
|
msgid "Chorote; Iyo'wujwa"
|
||||||
msgstr ""
|
msgstr "Chorote; Iyo'wujwa"
|
||||||
|
|
||||||
#. name for crr
|
#. name for crr
|
||||||
msgid "Algonquian; Carolina"
|
msgid "Algonquian; Carolina"
|
||||||
msgstr ""
|
msgstr "Algonquian; Carolina"
|
||||||
|
|
||||||
#. name for crs
|
#. name for crs
|
||||||
msgid "Creole French; Seselwa"
|
msgid "Creole French; Seselwa"
|
||||||
@ -5575,7 +5575,7 @@ msgstr "Francés criollo seychellense"
|
|||||||
|
|
||||||
#. name for crt
|
#. name for crt
|
||||||
msgid "Chorote; Iyojwa'ja"
|
msgid "Chorote; Iyojwa'ja"
|
||||||
msgstr ""
|
msgstr "Chorote; Iyojwa'ja"
|
||||||
|
|
||||||
#. name for crv
|
#. name for crv
|
||||||
msgid "Chaura"
|
msgid "Chaura"
|
||||||
@ -5627,11 +5627,11 @@ msgstr "Lengua de signos chilena"
|
|||||||
|
|
||||||
#. name for csh
|
#. name for csh
|
||||||
msgid "Chin; Asho"
|
msgid "Chin; Asho"
|
||||||
msgstr ""
|
msgstr "Chin; Asho"
|
||||||
|
|
||||||
#. name for csi
|
#. name for csi
|
||||||
msgid "Miwok; Coast"
|
msgid "Miwok; Coast"
|
||||||
msgstr ""
|
msgstr "Miwok; Coast"
|
||||||
|
|
||||||
#. name for csk
|
#. name for csk
|
||||||
msgid "Jola-Kasa"
|
msgid "Jola-Kasa"
|
||||||
@ -5643,7 +5643,7 @@ msgstr "Lengua de signos china"
|
|||||||
|
|
||||||
#. name for csm
|
#. name for csm
|
||||||
msgid "Miwok; Central Sierra"
|
msgid "Miwok; Central Sierra"
|
||||||
msgstr ""
|
msgstr "Miwok; Central Sierra"
|
||||||
|
|
||||||
#. name for csn
|
#. name for csn
|
||||||
msgid "Colombian Sign Language"
|
msgid "Colombian Sign Language"
|
||||||
@ -5671,11 +5671,11 @@ msgstr "Ohlone septentrional"
|
|||||||
|
|
||||||
#. name for csw
|
#. name for csw
|
||||||
msgid "Cree; Swampy"
|
msgid "Cree; Swampy"
|
||||||
msgstr ""
|
msgstr "Cree; Swampy"
|
||||||
|
|
||||||
#. name for csy
|
#. name for csy
|
||||||
msgid "Chin; Siyin"
|
msgid "Chin; Siyin"
|
||||||
msgstr ""
|
msgstr "Chin; Siyin"
|
||||||
|
|
||||||
#. name for csz
|
#. name for csz
|
||||||
msgid "Coos"
|
msgid "Coos"
|
||||||
@ -5691,7 +5691,7 @@ msgstr "Chetco"
|
|||||||
|
|
||||||
#. name for ctd
|
#. name for ctd
|
||||||
msgid "Chin; Tedim"
|
msgid "Chin; Tedim"
|
||||||
msgstr ""
|
msgstr "Chin; Tedim"
|
||||||
|
|
||||||
#. name for cte
|
#. name for cte
|
||||||
msgid "Chinantec; Tepinapa"
|
msgid "Chinantec; Tepinapa"
|
||||||
@ -5727,7 +5727,7 @@ msgstr "Pandan"
|
|||||||
|
|
||||||
#. name for ctt
|
#. name for ctt
|
||||||
msgid "Chetti; Wayanad"
|
msgid "Chetti; Wayanad"
|
||||||
msgstr ""
|
msgstr "Chetti; Wayanad"
|
||||||
|
|
||||||
#. name for ctu
|
#. name for ctu
|
||||||
msgid "Chol"
|
msgid "Chol"
|
||||||
@ -5767,7 +5767,7 @@ msgstr "Mashco piro"
|
|||||||
|
|
||||||
#. name for cuk
|
#. name for cuk
|
||||||
msgid "Kuna; San Blas"
|
msgid "Kuna; San Blas"
|
||||||
msgstr ""
|
msgstr "Kuna; San Blas"
|
||||||
|
|
||||||
#. name for cul
|
#. name for cul
|
||||||
msgid "Culina"
|
msgid "Culina"
|
||||||
@ -5795,7 +5795,7 @@ msgstr "Chhulung"
|
|||||||
|
|
||||||
#. name for cut
|
#. name for cut
|
||||||
msgid "Cuicatec; Teutila"
|
msgid "Cuicatec; Teutila"
|
||||||
msgstr ""
|
msgstr "Cuicatec; Teutila"
|
||||||
|
|
||||||
#. name for cuu
|
#. name for cuu
|
||||||
msgid "Tai Ya"
|
msgid "Tai Ya"
|
||||||
@ -5811,7 +5811,7 @@ msgstr "Chukwa"
|
|||||||
|
|
||||||
#. name for cux
|
#. name for cux
|
||||||
msgid "Cuicatec; Tepeuxila"
|
msgid "Cuicatec; Tepeuxila"
|
||||||
msgstr ""
|
msgstr "Cuicatec; Tepeuxila"
|
||||||
|
|
||||||
#. name for cvg
|
#. name for cvg
|
||||||
msgid "Chug"
|
msgid "Chug"
|
||||||
@ -5831,7 +5831,7 @@ msgstr "Maindo"
|
|||||||
|
|
||||||
#. name for cwd
|
#. name for cwd
|
||||||
msgid "Cree; Woods"
|
msgid "Cree; Woods"
|
||||||
msgstr ""
|
msgstr "Cree; Woods"
|
||||||
|
|
||||||
#. name for cwe
|
#. name for cwe
|
||||||
msgid "Kwere"
|
msgid "Kwere"
|
||||||
@ -5879,7 +5879,7 @@ msgstr "Chino minzhong"
|
|||||||
|
|
||||||
#. name for czt
|
#. name for czt
|
||||||
msgid "Chin; Zotung"
|
msgid "Chin; Zotung"
|
||||||
msgstr ""
|
msgstr "Chin; Zotung"
|
||||||
|
|
||||||
#. name for daa
|
#. name for daa
|
||||||
msgid "Dangaléat"
|
msgid "Dangaléat"
|
||||||
@ -5935,7 +5935,7 @@ msgstr "Danés"
|
|||||||
|
|
||||||
#. name for dao
|
#. name for dao
|
||||||
msgid "Chin; Daai"
|
msgid "Chin; Daai"
|
||||||
msgstr ""
|
msgstr "Chin; Daai"
|
||||||
|
|
||||||
#. name for dap
|
#. name for dap
|
||||||
msgid "Nisi (India)"
|
msgid "Nisi (India)"
|
||||||
@ -5943,7 +5943,7 @@ msgstr "Nisi (India)"
|
|||||||
|
|
||||||
#. name for daq
|
#. name for daq
|
||||||
msgid "Maria; Dandami"
|
msgid "Maria; Dandami"
|
||||||
msgstr ""
|
msgstr "Maria; Dandami"
|
||||||
|
|
||||||
#. name for dar
|
#. name for dar
|
||||||
msgid "Dargwa"
|
msgid "Dargwa"
|
||||||
@ -5995,7 +5995,7 @@ msgstr "Edopi"
|
|||||||
|
|
||||||
#. name for dbg
|
#. name for dbg
|
||||||
msgid "Dogon; Dogul Dom"
|
msgid "Dogon; Dogul Dom"
|
||||||
msgstr ""
|
msgstr "Dogon; Dogul Dom"
|
||||||
|
|
||||||
#. name for dbi
|
#. name for dbi
|
||||||
msgid "Doka"
|
msgid "Doka"
|
||||||
@ -6035,7 +6035,7 @@ msgstr "Dabarre"
|
|||||||
|
|
||||||
#. name for dbu
|
#. name for dbu
|
||||||
msgid "Dogon; Bondum Dom"
|
msgid "Dogon; Bondum Dom"
|
||||||
msgstr ""
|
msgstr "Dogon; Bondum Dom"
|
||||||
|
|
||||||
#. name for dbv
|
#. name for dbv
|
||||||
msgid "Dungu"
|
msgid "Dungu"
|
||||||
@ -6067,7 +6067,7 @@ msgstr "Fataluku"
|
|||||||
|
|
||||||
#. name for ddi
|
#. name for ddi
|
||||||
msgid "Goodenough; West"
|
msgid "Goodenough; West"
|
||||||
msgstr ""
|
msgstr "Goodenough; West"
|
||||||
|
|
||||||
#. name for ddj
|
#. name for ddj
|
||||||
msgid "Jaru"
|
msgid "Jaru"
|
||||||
@ -6083,7 +6083,7 @@ msgstr "Dido"
|
|||||||
|
|
||||||
#. name for dds
|
#. name for dds
|
||||||
msgid "Dogon; Donno So"
|
msgid "Dogon; Donno So"
|
||||||
msgstr ""
|
msgstr "Dogon; Donno So"
|
||||||
|
|
||||||
#. name for ddw
|
#. name for ddw
|
||||||
msgid "Dawera-Daweloor"
|
msgid "Dawera-Daweloor"
|
||||||
@ -6135,7 +6135,7 @@ msgstr "Slave (atabascano)"
|
|||||||
|
|
||||||
#. name for dep
|
#. name for dep
|
||||||
msgid "Delaware; Pidgin"
|
msgid "Delaware; Pidgin"
|
||||||
msgstr ""
|
msgstr "Delaware; Pidgin"
|
||||||
|
|
||||||
#. name for deq
|
#. name for deq
|
||||||
msgid "Dendi (Central African Republic)"
|
msgid "Dendi (Central African Republic)"
|
||||||
@ -6167,11 +6167,11 @@ msgstr "Dagaare meridional"
|
|||||||
|
|
||||||
#. name for dgb
|
#. name for dgb
|
||||||
msgid "Dogon; Bunoge"
|
msgid "Dogon; Bunoge"
|
||||||
msgstr ""
|
msgstr "Dogon; Bunoge"
|
||||||
|
|
||||||
#. name for dgc
|
#. name for dgc
|
||||||
msgid "Agta; Casiguran Dumagat"
|
msgid "Agta; Casiguran Dumagat"
|
||||||
msgstr ""
|
msgstr "Agta; Casiguran Dumagat"
|
||||||
|
|
||||||
#. name for dgd
|
#. name for dgd
|
||||||
msgid "Dagaari Dioula"
|
msgid "Dagaari Dioula"
|
||||||
@ -6283,7 +6283,7 @@ msgstr "Dinka centromeridional"
|
|||||||
|
|
||||||
#. name for dic
|
#. name for dic
|
||||||
msgid "Dida; Lakota"
|
msgid "Dida; Lakota"
|
||||||
msgstr ""
|
msgstr "Dida; Lakota"
|
||||||
|
|
||||||
#. name for did
|
#. name for did
|
||||||
msgid "Didinga"
|
msgid "Didinga"
|
||||||
@ -6411,7 +6411,7 @@ msgstr "Djiwarli"
|
|||||||
|
|
||||||
#. name for djm
|
#. name for djm
|
||||||
msgid "Dogon; Jamsay"
|
msgid "Dogon; Jamsay"
|
||||||
msgstr ""
|
msgstr "Dogon; Jamsay"
|
||||||
|
|
||||||
#. name for djn
|
#. name for djn
|
||||||
msgid "Djauan"
|
msgid "Djauan"
|
||||||
@ -6471,7 +6471,7 @@ msgstr "Duma"
|
|||||||
|
|
||||||
#. name for dmb
|
#. name for dmb
|
||||||
msgid "Dogon; Mombo"
|
msgid "Dogon; Mombo"
|
||||||
msgstr ""
|
msgstr "Dogon; Mombo"
|
||||||
|
|
||||||
#. name for dmc
|
#. name for dmc
|
||||||
msgid "Dimir"
|
msgid "Dimir"
|
||||||
@ -6483,7 +6483,7 @@ msgstr "Dugwor"
|
|||||||
|
|
||||||
#. name for dmg
|
#. name for dmg
|
||||||
msgid "Kinabatangan; Upper"
|
msgid "Kinabatangan; Upper"
|
||||||
msgstr ""
|
msgstr "Kinabatangan; Upper"
|
||||||
|
|
||||||
#. name for dmk
|
#. name for dmk
|
||||||
msgid "Domaaki"
|
msgid "Domaaki"
|
||||||
@ -6503,7 +6503,7 @@ msgstr "Kemezung"
|
|||||||
|
|
||||||
#. name for dmr
|
#. name for dmr
|
||||||
msgid "Damar; East"
|
msgid "Damar; East"
|
||||||
msgstr ""
|
msgstr "Damar; East"
|
||||||
|
|
||||||
#. name for dms
|
#. name for dms
|
||||||
msgid "Dampelas"
|
msgid "Dampelas"
|
||||||
@ -6527,7 +6527,7 @@ msgstr "Demta"
|
|||||||
|
|
||||||
#. name for dna
|
#. name for dna
|
||||||
msgid "Dani; Upper Grand Valley"
|
msgid "Dani; Upper Grand Valley"
|
||||||
msgstr ""
|
msgstr "Dani; Upper Grand Valley"
|
||||||
|
|
||||||
#. name for dnd
|
#. name for dnd
|
||||||
msgid "Daonda"
|
msgid "Daonda"
|
||||||
@ -6543,7 +6543,7 @@ msgstr "Dungan"
|
|||||||
|
|
||||||
#. name for dni
|
#. name for dni
|
||||||
msgid "Dani; Lower Grand Valley"
|
msgid "Dani; Lower Grand Valley"
|
||||||
msgstr ""
|
msgstr "Dani; Lower Grand Valley"
|
||||||
|
|
||||||
#. name for dnk
|
#. name for dnk
|
||||||
msgid "Dengka"
|
msgid "Dengka"
|
||||||
@ -6559,7 +6559,7 @@ msgstr "Danaru"
|
|||||||
|
|
||||||
#. name for dnt
|
#. name for dnt
|
||||||
msgid "Dani; Mid Grand Valley"
|
msgid "Dani; Mid Grand Valley"
|
||||||
msgstr ""
|
msgstr "Dani; Mid Grand Valley"
|
||||||
|
|
||||||
#. name for dnu
|
#. name for dnu
|
||||||
msgid "Danau"
|
msgid "Danau"
|
||||||
@ -6695,7 +6695,7 @@ msgstr "Damar occidental"
|
|||||||
|
|
||||||
#. name for dro
|
#. name for dro
|
||||||
msgid "Melanau; Daro-Matu"
|
msgid "Melanau; Daro-Matu"
|
||||||
msgstr ""
|
msgstr "Melanau; Daro-Matu"
|
||||||
|
|
||||||
#. name for drq
|
#. name for drq
|
||||||
msgid "Dura"
|
msgid "Dura"
|
||||||
@ -6723,7 +6723,7 @@ msgstr "Darai"
|
|||||||
|
|
||||||
#. name for dsb
|
#. name for dsb
|
||||||
msgid "Sorbian; Lower"
|
msgid "Sorbian; Lower"
|
||||||
msgstr ""
|
msgstr "Sorbian; Lower"
|
||||||
|
|
||||||
#. name for dse
|
#. name for dse
|
||||||
msgid "Dutch Sign Language"
|
msgid "Dutch Sign Language"
|
||||||
@ -6759,7 +6759,7 @@ msgstr "Daur"
|
|||||||
|
|
||||||
#. name for dtb
|
#. name for dtb
|
||||||
msgid "Kadazan; Labuk-Kinabatangan"
|
msgid "Kadazan; Labuk-Kinabatangan"
|
||||||
msgstr ""
|
msgstr "Kadazan; Labuk-Kinabatangan"
|
||||||
|
|
||||||
#. name for dtd
|
#. name for dtd
|
||||||
msgid "Ditidaht"
|
msgid "Ditidaht"
|
||||||
@ -6767,15 +6767,15 @@ msgstr "Ditidaht"
|
|||||||
|
|
||||||
#. name for dti
|
#. name for dti
|
||||||
msgid "Dogon; Ana Tinga"
|
msgid "Dogon; Ana Tinga"
|
||||||
msgstr ""
|
msgstr "Dogon; Ana Tinga"
|
||||||
|
|
||||||
#. name for dtk
|
#. name for dtk
|
||||||
msgid "Dogon; Tene Kan"
|
msgid "Dogon; Tene Kan"
|
||||||
msgstr ""
|
msgstr "Dogon; Tene Kan"
|
||||||
|
|
||||||
#. name for dtm
|
#. name for dtm
|
||||||
msgid "Dogon; Tomo Kan"
|
msgid "Dogon; Tomo Kan"
|
||||||
msgstr ""
|
msgstr "Dogon; Tomo Kan"
|
||||||
|
|
||||||
#. name for dtp
|
#. name for dtp
|
||||||
msgid "Dusun; Central"
|
msgid "Dusun; Central"
|
||||||
@ -6787,15 +6787,15 @@ msgstr "Lotud"
|
|||||||
|
|
||||||
#. name for dts
|
#. name for dts
|
||||||
msgid "Dogon; Toro So"
|
msgid "Dogon; Toro So"
|
||||||
msgstr ""
|
msgstr "Dogon; Toro So"
|
||||||
|
|
||||||
#. name for dtt
|
#. name for dtt
|
||||||
msgid "Dogon; Toro Tegu"
|
msgid "Dogon; Toro Tegu"
|
||||||
msgstr ""
|
msgstr "Dogon; Toro Tegu"
|
||||||
|
|
||||||
#. name for dtu
|
#. name for dtu
|
||||||
msgid "Dogon; Tebul Ure"
|
msgid "Dogon; Tebul Ure"
|
||||||
msgstr ""
|
msgstr "Dogon; Tebul Ure"
|
||||||
|
|
||||||
#. name for dua
|
#. name for dua
|
||||||
msgid "Duala"
|
msgid "Duala"
|
||||||
@ -6815,7 +6815,7 @@ msgstr "Hun-saare"
|
|||||||
|
|
||||||
#. name for due
|
#. name for due
|
||||||
msgid "Agta; Umiray Dumaget"
|
msgid "Agta; Umiray Dumaget"
|
||||||
msgstr ""
|
msgstr "Agta; Umiray Dumaget"
|
||||||
|
|
||||||
#. name for duf
|
#. name for duf
|
||||||
msgid "Dumbea"
|
msgid "Dumbea"
|
||||||
@ -6843,7 +6843,7 @@ msgstr "Uyajitaya"
|
|||||||
|
|
||||||
#. name for dul
|
#. name for dul
|
||||||
msgid "Agta; Alabat Island"
|
msgid "Agta; Alabat Island"
|
||||||
msgstr ""
|
msgstr "Agta; Alabat Island"
|
||||||
|
|
||||||
#. name for dum
|
#. name for dum
|
||||||
msgid "Dutch; Middle (ca. 1050-1350)"
|
msgid "Dutch; Middle (ca. 1050-1350)"
|
||||||
@ -6855,7 +6855,7 @@ msgstr "Dusun deyah"
|
|||||||
|
|
||||||
#. name for duo
|
#. name for duo
|
||||||
msgid "Agta; Dupaninan"
|
msgid "Agta; Dupaninan"
|
||||||
msgstr ""
|
msgstr "Agta; Dupaninan"
|
||||||
|
|
||||||
#. name for dup
|
#. name for dup
|
||||||
msgid "Duano"
|
msgid "Duano"
|
||||||
@ -6891,7 +6891,7 @@ msgstr "Duungooma"
|
|||||||
|
|
||||||
#. name for duy
|
#. name for duy
|
||||||
msgid "Agta; Dicamay"
|
msgid "Agta; Dicamay"
|
||||||
msgstr ""
|
msgstr "Agta; Dicamay"
|
||||||
|
|
||||||
#. name for duz
|
#. name for duz
|
||||||
msgid "Duli"
|
msgid "Duli"
|
||||||
@ -6907,7 +6907,7 @@ msgstr "Diri"
|
|||||||
|
|
||||||
#. name for dwl
|
#. name for dwl
|
||||||
msgid "Dogon; Walo Kumbe"
|
msgid "Dogon; Walo Kumbe"
|
||||||
msgstr ""
|
msgstr "Dogon; Walo Kumbe"
|
||||||
|
|
||||||
#. name for dwr
|
#. name for dwr
|
||||||
msgid "Dawro"
|
msgid "Dawro"
|
||||||
@ -6935,15 +6935,15 @@ msgstr "Dyugun"
|
|||||||
|
|
||||||
#. name for dyg
|
#. name for dyg
|
||||||
msgid "Agta; Villa Viciosa"
|
msgid "Agta; Villa Viciosa"
|
||||||
msgstr ""
|
msgstr "Agta; Villa Viciosa"
|
||||||
|
|
||||||
#. name for dyi
|
#. name for dyi
|
||||||
msgid "Senoufo; Djimini"
|
msgid "Senoufo; Djimini"
|
||||||
msgstr ""
|
msgstr "Senoufo; Djimini"
|
||||||
|
|
||||||
#. name for dym
|
#. name for dym
|
||||||
msgid "Dogon; Yanda Dom"
|
msgid "Dogon; Yanda Dom"
|
||||||
msgstr ""
|
msgstr "Dogon; Yanda Dom"
|
||||||
|
|
||||||
#. name for dyn
|
#. name for dyn
|
||||||
msgid "Dyangadi"
|
msgid "Dyangadi"
|
||||||
@ -7095,19 +7095,19 @@ msgstr "Kol"
|
|||||||
|
|
||||||
#. name for ekm
|
#. name for ekm
|
||||||
msgid "Elip"
|
msgid "Elip"
|
||||||
msgstr ""
|
msgstr "Elip"
|
||||||
|
|
||||||
#. name for eko
|
#. name for eko
|
||||||
msgid "Koti"
|
msgid "Koti"
|
||||||
msgstr ""
|
msgstr "Koti"
|
||||||
|
|
||||||
#. name for ekp
|
#. name for ekp
|
||||||
msgid "Ekpeye"
|
msgid "Ekpeye"
|
||||||
msgstr ""
|
msgstr "Ekpeye"
|
||||||
|
|
||||||
#. name for ekr
|
#. name for ekr
|
||||||
msgid "Yace"
|
msgid "Yace"
|
||||||
msgstr ""
|
msgstr "Yace"
|
||||||
|
|
||||||
#. name for eky
|
#. name for eky
|
||||||
msgid "Kayah; Eastern"
|
msgid "Kayah; Eastern"
|
||||||
@ -7115,19 +7115,19 @@ msgstr "Kayah oriental"
|
|||||||
|
|
||||||
#. name for ele
|
#. name for ele
|
||||||
msgid "Elepi"
|
msgid "Elepi"
|
||||||
msgstr ""
|
msgstr "Elepi"
|
||||||
|
|
||||||
#. name for elh
|
#. name for elh
|
||||||
msgid "El Hugeirat"
|
msgid "El Hugeirat"
|
||||||
msgstr ""
|
msgstr "El Hugeirat"
|
||||||
|
|
||||||
#. name for eli
|
#. name for eli
|
||||||
msgid "Nding"
|
msgid "Nding"
|
||||||
msgstr ""
|
msgstr "Nding"
|
||||||
|
|
||||||
#. name for elk
|
#. name for elk
|
||||||
msgid "Elkei"
|
msgid "Elkei"
|
||||||
msgstr ""
|
msgstr "Elkei"
|
||||||
|
|
||||||
#. name for ell
|
#. name for ell
|
||||||
msgid "Greek; Modern (1453-)"
|
msgid "Greek; Modern (1453-)"
|
||||||
@ -7135,19 +7135,19 @@ msgstr "Griego moderno (1453-)"
|
|||||||
|
|
||||||
#. name for elm
|
#. name for elm
|
||||||
msgid "Eleme"
|
msgid "Eleme"
|
||||||
msgstr ""
|
msgstr "Eleme"
|
||||||
|
|
||||||
#. name for elo
|
#. name for elo
|
||||||
msgid "El Molo"
|
msgid "El Molo"
|
||||||
msgstr ""
|
msgstr "El Molo"
|
||||||
|
|
||||||
#. name for elp
|
#. name for elp
|
||||||
msgid "Elpaputih"
|
msgid "Elpaputih"
|
||||||
msgstr ""
|
msgstr "Elpaputih"
|
||||||
|
|
||||||
#. name for elu
|
#. name for elu
|
||||||
msgid "Elu"
|
msgid "Elu"
|
||||||
msgstr ""
|
msgstr "Elu"
|
||||||
|
|
||||||
#. name for elx
|
#. name for elx
|
||||||
msgid "Elamite"
|
msgid "Elamite"
|
||||||
@ -7155,15 +7155,15 @@ msgstr "Elamita"
|
|||||||
|
|
||||||
#. name for ema
|
#. name for ema
|
||||||
msgid "Emai-Iuleha-Ora"
|
msgid "Emai-Iuleha-Ora"
|
||||||
msgstr ""
|
msgstr "Emai-Iuleha-Ora"
|
||||||
|
|
||||||
#. name for emb
|
#. name for emb
|
||||||
msgid "Embaloh"
|
msgid "Embaloh"
|
||||||
msgstr ""
|
msgstr "Embaloh"
|
||||||
|
|
||||||
#. name for eme
|
#. name for eme
|
||||||
msgid "Emerillon"
|
msgid "Emerillon"
|
||||||
msgstr ""
|
msgstr "Emerillon"
|
||||||
|
|
||||||
#. name for emg
|
#. name for emg
|
||||||
msgid "Meohang; Eastern"
|
msgid "Meohang; Eastern"
|
||||||
@ -7171,7 +7171,7 @@ msgstr "Meohang oriental"
|
|||||||
|
|
||||||
#. name for emi
|
#. name for emi
|
||||||
msgid "Mussau-Emira"
|
msgid "Mussau-Emira"
|
||||||
msgstr ""
|
msgstr "Mussau-Emira"
|
||||||
|
|
||||||
#. name for emk
|
#. name for emk
|
||||||
msgid "Maninkakan; Eastern"
|
msgid "Maninkakan; Eastern"
|
||||||
@ -7179,15 +7179,15 @@ msgstr "Maninkakan oriental"
|
|||||||
|
|
||||||
#. name for emm
|
#. name for emm
|
||||||
msgid "Mamulique"
|
msgid "Mamulique"
|
||||||
msgstr ""
|
msgstr "Mamulique"
|
||||||
|
|
||||||
#. name for emn
|
#. name for emn
|
||||||
msgid "Eman"
|
msgid "Eman"
|
||||||
msgstr ""
|
msgstr "Eman"
|
||||||
|
|
||||||
#. name for emo
|
#. name for emo
|
||||||
msgid "Emok"
|
msgid "Emok"
|
||||||
msgstr ""
|
msgstr "Emok"
|
||||||
|
|
||||||
#. name for emp
|
#. name for emp
|
||||||
msgid "Emberá; Northern"
|
msgid "Emberá; Northern"
|
||||||
@ -7203,11 +7203,11 @@ msgstr "Muria oriental"
|
|||||||
|
|
||||||
#. name for emw
|
#. name for emw
|
||||||
msgid "Emplawas"
|
msgid "Emplawas"
|
||||||
msgstr ""
|
msgstr "Emplawas"
|
||||||
|
|
||||||
#. name for emx
|
#. name for emx
|
||||||
msgid "Erromintxela"
|
msgid "Erromintxela"
|
||||||
msgstr ""
|
msgstr "Erromintxela"
|
||||||
|
|
||||||
#. name for emy
|
#. name for emy
|
||||||
msgid "Mayan; Epigraphic"
|
msgid "Mayan; Epigraphic"
|
||||||
|
@ -9,14 +9,14 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-"
|
"Report-Msgid-Bugs-To: Debian iso-codes team <pkg-isocodes-"
|
||||||
"devel@lists.alioth.debian.org>\n"
|
"devel@lists.alioth.debian.org>\n"
|
||||||
"POT-Creation-Date: 2011-11-25 14:01+0000\n"
|
"POT-Creation-Date: 2011-11-25 14:01+0000\n"
|
||||||
"PO-Revision-Date: 2012-03-06 13:55+0000\n"
|
"PO-Revision-Date: 2012-04-18 13:08+0000\n"
|
||||||
"Last-Translator: Asier Iturralde Sarasola <Unknown>\n"
|
"Last-Translator: Asier Iturralde Sarasola <Unknown>\n"
|
||||||
"Language-Team: Euskara <itzulpena@comtropos.com>\n"
|
"Language-Team: Euskara <itzulpena@comtropos.com>\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: 2012-03-07 05:12+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-19 04:36+0000\n"
|
||||||
"X-Generator: Launchpad (build 14907)\n"
|
"X-Generator: Launchpad (build 15108)\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
|
|
||||||
#. name for aaa
|
#. name for aaa
|
||||||
@ -27125,7 +27125,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. name for vie
|
#. name for vie
|
||||||
msgid "Vietnamese"
|
msgid "Vietnamese"
|
||||||
msgstr "Mahastiak"
|
msgstr "Vietnamera"
|
||||||
|
|
||||||
#. name for vif
|
#. name for vif
|
||||||
msgid "Vili"
|
msgid "Vili"
|
||||||
|
@ -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, 8, 47)
|
numeric_version = (0, 8, 48)
|
||||||
__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>"
|
||||||
|
|
||||||
|
@ -259,7 +259,7 @@ class LRXMetadataReader(MetadataReaderPlugin):
|
|||||||
class MOBIMetadataReader(MetadataReaderPlugin):
|
class MOBIMetadataReader(MetadataReaderPlugin):
|
||||||
|
|
||||||
name = 'Read MOBI metadata'
|
name = 'Read MOBI metadata'
|
||||||
file_types = set(['mobi', 'prc', 'azw', 'azw4', 'pobi'])
|
file_types = set(['mobi', 'prc', 'azw', 'azw3', 'azw4', 'pobi'])
|
||||||
description = _('Read metadata from %s files')%'MOBI'
|
description = _('Read metadata from %s files')%'MOBI'
|
||||||
|
|
||||||
def get_metadata(self, stream, ftype):
|
def get_metadata(self, stream, ftype):
|
||||||
|
@ -40,6 +40,7 @@ class ANDROID(USBMS):
|
|||||||
0xcac : [0x100, 0x0227, 0x0226, 0x222],
|
0xcac : [0x100, 0x0227, 0x0226, 0x222],
|
||||||
0xccf : [0x100, 0x0227, 0x0226, 0x222],
|
0xccf : [0x100, 0x0227, 0x0226, 0x222],
|
||||||
0x2910 : [0x222],
|
0x2910 : [0x222],
|
||||||
|
0xff9 : [0x9999],
|
||||||
},
|
},
|
||||||
|
|
||||||
# Eken
|
# Eken
|
||||||
@ -174,7 +175,7 @@ class ANDROID(USBMS):
|
|||||||
'TELECHIP', 'HUAWEI', 'T-MOBILE', 'SEMC', 'LGE', 'NVIDIA',
|
'TELECHIP', 'HUAWEI', 'T-MOBILE', 'SEMC', 'LGE', 'NVIDIA',
|
||||||
'GENERIC-', 'ZTE', 'MID', 'QUALCOMM', 'PANDIGIT', 'HYSTON',
|
'GENERIC-', 'ZTE', 'MID', 'QUALCOMM', 'PANDIGIT', 'HYSTON',
|
||||||
'VIZIO', 'GOOGLE', 'FREESCAL', 'KOBO_INC', 'LENOVO', 'ROCKCHIP',
|
'VIZIO', 'GOOGLE', 'FREESCAL', 'KOBO_INC', 'LENOVO', 'ROCKCHIP',
|
||||||
'POCKET', 'ONDA_MID', 'ZENITHIN', 'INGENIC']
|
'POCKET', 'ONDA_MID', 'ZENITHIN', 'INGENIC', 'PMID701C']
|
||||||
WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE',
|
WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE',
|
||||||
'__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897',
|
'__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897',
|
||||||
'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959_CARD', 'SGH-T959', 'SAMSUNG_ANDROID',
|
'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959_CARD', 'SGH-T959', 'SAMSUNG_ANDROID',
|
||||||
@ -189,7 +190,8 @@ class ANDROID(USBMS):
|
|||||||
'UMS', '.K080', 'P990', 'LTE', 'MB853', 'GT-S5660_CARD', 'A107',
|
'UMS', '.K080', 'P990', 'LTE', 'MB853', 'GT-S5660_CARD', 'A107',
|
||||||
'GT-I9003_CARD', 'XT912', 'FILE-CD_GADGET', 'RK29_SDK', 'MB855',
|
'GT-I9003_CARD', 'XT912', 'FILE-CD_GADGET', 'RK29_SDK', 'MB855',
|
||||||
'XT910', 'BOOK_A10', 'USB_2.0_DRIVER', 'I9100T', 'P999DW',
|
'XT910', 'BOOK_A10', 'USB_2.0_DRIVER', 'I9100T', 'P999DW',
|
||||||
'KTABLET_PC', 'INGENIC', 'GT-I9001_CARD']
|
'KTABLET_PC', 'INGENIC', 'GT-I9001_CARD', 'USB_2.0_DRIVER',
|
||||||
|
'GT-S5830L_CARD']
|
||||||
WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897',
|
WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897',
|
||||||
'FILE-STOR_GADGET', 'SGH-T959_CARD', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD',
|
'FILE-STOR_GADGET', 'SGH-T959_CARD', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD',
|
||||||
'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD',
|
'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD',
|
||||||
@ -197,7 +199,7 @@ class ANDROID(USBMS):
|
|||||||
'ANDROID_MID', 'P990_SD_CARD', '.K080', 'LTE_CARD', 'MB853',
|
'ANDROID_MID', 'P990_SD_CARD', '.K080', 'LTE_CARD', 'MB853',
|
||||||
'A1-07___C0541A4F', 'XT912', 'MB855', 'XT910', 'BOOK_A10_CARD',
|
'A1-07___C0541A4F', 'XT912', 'MB855', 'XT910', 'BOOK_A10_CARD',
|
||||||
'USB_2.0_DRIVER', 'I9100T', 'P999DW_SD_CARD', 'KTABLET_PC',
|
'USB_2.0_DRIVER', 'I9100T', 'P999DW_SD_CARD', 'KTABLET_PC',
|
||||||
'FILE-CD_GADGET', 'GT-I9001_CARD']
|
'FILE-CD_GADGET', 'GT-I9001_CARD', 'USB_2.0_DRIVER']
|
||||||
|
|
||||||
OSX_MAIN_MEM = 'Android Device Main Memory'
|
OSX_MAIN_MEM = 'Android Device Main Memory'
|
||||||
|
|
||||||
|
@ -325,6 +325,10 @@ class KINDLE2(KINDLE):
|
|||||||
OPT_APNX_ACCURATE = 1
|
OPT_APNX_ACCURATE = 1
|
||||||
OPT_APNX_CUST_COL = 2
|
OPT_APNX_CUST_COL = 2
|
||||||
|
|
||||||
|
def formats_to_scan_for(self):
|
||||||
|
ans = USBMS.formats_to_scan_for(self) | {'azw3'}
|
||||||
|
return ans
|
||||||
|
|
||||||
def books(self, oncard=None, end_session=True):
|
def books(self, oncard=None, end_session=True):
|
||||||
bl = USBMS.books(self, oncard=oncard, end_session=end_session)
|
bl = USBMS.books(self, oncard=oncard, end_session=end_session)
|
||||||
# Read collections information
|
# Read collections information
|
||||||
@ -423,6 +427,8 @@ class KINDLE_FIRE(KINDLE2):
|
|||||||
name = 'Kindle Fire Device Interface'
|
name = 'Kindle Fire Device Interface'
|
||||||
description = _('Communicate with the Kindle Fire')
|
description = _('Communicate with the Kindle Fire')
|
||||||
gui_name = 'Fire'
|
gui_name = 'Fire'
|
||||||
|
FORMATS = list(KINDLE2.FORMATS)
|
||||||
|
FORMATS.insert(0, 'azw3')
|
||||||
|
|
||||||
PRODUCT_ID = [0x0006]
|
PRODUCT_ID = [0x0006]
|
||||||
BCD = [0x216, 0x100]
|
BCD = [0x216, 0x100]
|
||||||
|
@ -298,7 +298,7 @@ class KOBO(USBMS):
|
|||||||
changed = False
|
changed = False
|
||||||
for i, row in enumerate(cursor):
|
for i, row in enumerate(cursor):
|
||||||
# self.report_progress((i+1) / float(numrows), _('Getting list of books on device...'))
|
# self.report_progress((i+1) / float(numrows), _('Getting list of books on device...'))
|
||||||
if row[3].startswith("file:///usr/local/Kobo/help/"):
|
if not hasattr(row[3], 'startswith') or row[3].startswith("file:///usr/local/Kobo/help/"):
|
||||||
# These are internal to the Kobo device and do not exist
|
# These are internal to the Kobo device and do not exist
|
||||||
continue
|
continue
|
||||||
path = self.path_from_contentid(row[3], row[5], row[4], oncard)
|
path = self.path_from_contentid(row[3], row[5], row[4], oncard)
|
||||||
|
@ -307,11 +307,21 @@ class PRST1(USBMS):
|
|||||||
|
|
||||||
# Work-around for Sony Bug (SD Card DB not using right SQLite sequence)
|
# Work-around for Sony Bug (SD Card DB not using right SQLite sequence)
|
||||||
if source_id == 1:
|
if source_id == 1:
|
||||||
|
# Update any existing sequence numbers in the table that aren't in the required range
|
||||||
sdcard_sequence_start = '4294967296'
|
sdcard_sequence_start = '4294967296'
|
||||||
query = 'UPDATE sqlite_sequence SET seq = ? WHERE seq < ?'
|
query = 'UPDATE sqlite_sequence SET seq = ? WHERE seq < ?'
|
||||||
t = (sdcard_sequence_start, sdcard_sequence_start,)
|
t = (sdcard_sequence_start, sdcard_sequence_start,)
|
||||||
cursor.execute(query, t)
|
cursor.execute(query, t)
|
||||||
|
|
||||||
|
# Insert sequence numbers for tables we will be manipulating, if they don't already exist
|
||||||
|
query = ('INSERT INTO sqlite_sequence (name, seq) '
|
||||||
|
'SELECT ?, ? '
|
||||||
|
'WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = ?)');
|
||||||
|
cursor.execute(query, ('books',sdcard_sequence_start,'books',))
|
||||||
|
cursor.execute(query, ('collection',sdcard_sequence_start,'collection',))
|
||||||
|
cursor.execute(query, ('collections',sdcard_sequence_start,'collections',))
|
||||||
|
|
||||||
|
|
||||||
for book in booklist:
|
for book in booklist:
|
||||||
# Run through plugboard if needed
|
# Run through plugboard if needed
|
||||||
if plugboard is not None:
|
if plugboard is not None:
|
||||||
|
@ -128,6 +128,9 @@ class USBMS(CLI, Device):
|
|||||||
elif location_code == 'B':
|
elif location_code == 'B':
|
||||||
self._update_driveinfo_file(self._card_b_prefix, location_code, name)
|
self._update_driveinfo_file(self._card_b_prefix, location_code, name)
|
||||||
|
|
||||||
|
def formats_to_scan_for(self):
|
||||||
|
return set(self.settings().format_map) | set(self.FORMATS)
|
||||||
|
|
||||||
def books(self, oncard=None, end_session=True):
|
def books(self, oncard=None, end_session=True):
|
||||||
from calibre.ebooks.metadata.meta import path_to_ext
|
from calibre.ebooks.metadata.meta import path_to_ext
|
||||||
|
|
||||||
@ -166,7 +169,7 @@ class USBMS(CLI, Device):
|
|||||||
for idx,b in enumerate(bl):
|
for idx,b in enumerate(bl):
|
||||||
bl_cache[b.lpath] = idx
|
bl_cache[b.lpath] = idx
|
||||||
|
|
||||||
all_formats = set(self.settings().format_map) | set(self.FORMATS)
|
all_formats = self.formats_to_scan_for()
|
||||||
|
|
||||||
def update_booklist(filename, path, prefix):
|
def update_booklist(filename, path, prefix):
|
||||||
changed = False
|
changed = False
|
||||||
|
@ -31,7 +31,7 @@ BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'txtz', 'text', 'ht
|
|||||||
'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
|
'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
|
||||||
'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml', 'pmlz', 'mbp', 'tan', 'snb',
|
'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml', 'pmlz', 'mbp', 'tan', 'snb',
|
||||||
'xps', 'oxps', 'azw4', 'book', 'zbf', 'pobi', 'docx', 'md',
|
'xps', 'oxps', 'azw4', 'book', 'zbf', 'pobi', 'docx', 'md',
|
||||||
'textile', 'markdown', 'ibook', 'iba']
|
'textile', 'markdown', 'ibook', 'iba', 'azw3']
|
||||||
|
|
||||||
class HTMLRenderer(object):
|
class HTMLRenderer(object):
|
||||||
|
|
||||||
|
@ -156,9 +156,10 @@ def add_pipeline_options(parser, plumber):
|
|||||||
'SEARCH AND REPLACE' : (
|
'SEARCH AND REPLACE' : (
|
||||||
_('Modify the document text and structure using user defined patterns.'),
|
_('Modify the document text and structure using user defined patterns.'),
|
||||||
[
|
[
|
||||||
'sr1_search', 'sr1_replace',
|
'sr1_search', 'sr1_replace',
|
||||||
'sr2_search', 'sr2_replace',
|
'sr2_search', 'sr2_replace',
|
||||||
'sr3_search', 'sr3_replace',
|
'sr3_search', 'sr3_replace',
|
||||||
|
'search_replace',
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -211,6 +212,7 @@ def add_pipeline_options(parser, plumber):
|
|||||||
if rec.level < rec.HIGH:
|
if rec.level < rec.HIGH:
|
||||||
option_recommendation_to_cli_option(add_option, rec)
|
option_recommendation_to_cli_option(add_option, rec)
|
||||||
|
|
||||||
|
|
||||||
def option_parser():
|
def option_parser():
|
||||||
parser = OptionParser(usage=USAGE)
|
parser = OptionParser(usage=USAGE)
|
||||||
parser.add_option('--list-recipes', default=False, action='store_true',
|
parser.add_option('--list-recipes', default=False, action='store_true',
|
||||||
@ -271,6 +273,34 @@ def abspath(x):
|
|||||||
return x
|
return x
|
||||||
return os.path.abspath(os.path.expanduser(x))
|
return os.path.abspath(os.path.expanduser(x))
|
||||||
|
|
||||||
|
def read_sr_patterns(path, log=None):
|
||||||
|
import json, re, codecs
|
||||||
|
pats = []
|
||||||
|
with codecs.open(path, 'r', 'utf-8') as f:
|
||||||
|
pat = None
|
||||||
|
for line in f.readlines():
|
||||||
|
if line.endswith(u'\n'):
|
||||||
|
line = line[:-1]
|
||||||
|
|
||||||
|
if pat is None:
|
||||||
|
if not line.strip():
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
re.compile(line)
|
||||||
|
except:
|
||||||
|
msg = u'Invalid regular expression: %r from file: %r'%(
|
||||||
|
line, path)
|
||||||
|
if log is not None:
|
||||||
|
log.error(msg)
|
||||||
|
raise SystemExit(1)
|
||||||
|
else:
|
||||||
|
raise ValueError(msg)
|
||||||
|
pat = line
|
||||||
|
else:
|
||||||
|
pats.append((pat, line))
|
||||||
|
pat = None
|
||||||
|
return json.dumps(pats)
|
||||||
|
|
||||||
def main(args=sys.argv):
|
def main(args=sys.argv):
|
||||||
log = Log()
|
log = Log()
|
||||||
parser, plumber = create_option_parser(args, log)
|
parser, plumber = create_option_parser(args, log)
|
||||||
@ -278,6 +308,9 @@ def main(args=sys.argv):
|
|||||||
for x in ('read_metadata_from_opf', 'cover'):
|
for x in ('read_metadata_from_opf', 'cover'):
|
||||||
if getattr(opts, x, None) is not None:
|
if getattr(opts, x, None) is not None:
|
||||||
setattr(opts, x, abspath(getattr(opts, x)))
|
setattr(opts, x, abspath(getattr(opts, x)))
|
||||||
|
if opts.search_replace:
|
||||||
|
opts.search_replace = read_sr_patterns(opts.search_replace, log)
|
||||||
|
|
||||||
recommendations = [(n.dest, getattr(opts, n.dest),
|
recommendations = [(n.dest, getattr(opts, n.dest),
|
||||||
OptionRecommendation.HIGH) \
|
OptionRecommendation.HIGH) \
|
||||||
for n in parser.options_iter()
|
for n in parser.options_iter()
|
||||||
|
@ -28,7 +28,7 @@ class MOBIInput(InputFormatPlugin):
|
|||||||
name = 'MOBI Input'
|
name = 'MOBI Input'
|
||||||
author = 'Kovid Goyal'
|
author = 'Kovid Goyal'
|
||||||
description = 'Convert MOBI files (.mobi, .prc, .azw) to HTML'
|
description = 'Convert MOBI files (.mobi, .prc, .azw) to HTML'
|
||||||
file_types = set(['mobi', 'prc', 'azw'])
|
file_types = set(['mobi', 'prc', 'azw', 'azw3'])
|
||||||
|
|
||||||
def convert(self, stream, options, file_ext, log,
|
def convert(self, stream, options, file_ext, log,
|
||||||
accelerators):
|
accelerators):
|
||||||
|
@ -6,8 +6,6 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
from cStringIO import StringIO
|
|
||||||
|
|
||||||
from calibre.customize.conversion import OutputFormatPlugin
|
from calibre.customize.conversion import OutputFormatPlugin
|
||||||
from calibre.customize.conversion import OptionRecommendation
|
from calibre.customize.conversion import OptionRecommendation
|
||||||
|
|
||||||
@ -79,18 +77,9 @@ class MOBIOutput(OutputFormatPlugin):
|
|||||||
def check_for_masthead(self):
|
def check_for_masthead(self):
|
||||||
found = 'masthead' in self.oeb.guide
|
found = 'masthead' in self.oeb.guide
|
||||||
if not found:
|
if not found:
|
||||||
|
from calibre.ebooks import generate_masthead
|
||||||
self.oeb.log.debug('No masthead found in manifest, generating default mastheadImage...')
|
self.oeb.log.debug('No masthead found in manifest, generating default mastheadImage...')
|
||||||
try:
|
raw = generate_masthead(unicode(self.oeb.metadata['title'][0]))
|
||||||
from PIL import Image as PILImage
|
|
||||||
PILImage
|
|
||||||
except ImportError:
|
|
||||||
import Image as PILImage
|
|
||||||
|
|
||||||
raw = open(P('content_server/calibre_banner.png'), 'rb')
|
|
||||||
im = PILImage.open(raw)
|
|
||||||
of = StringIO()
|
|
||||||
im.save(of, 'GIF')
|
|
||||||
raw = of.getvalue()
|
|
||||||
id, href = self.oeb.manifest.generate('masthead', 'masthead')
|
id, href = self.oeb.manifest.generate('masthead', 'masthead')
|
||||||
self.oeb.manifest.add(id, href, 'image/gif', data=raw)
|
self.oeb.manifest.add(id, href, 'image/gif', data=raw)
|
||||||
self.oeb.guide.add('masthead', 'Masthead Image', href)
|
self.oeb.guide.add('masthead', 'Masthead Image', href)
|
||||||
@ -151,17 +140,46 @@ class MOBIOutput(OutputFormatPlugin):
|
|||||||
# Fix up the periodical href to point to first section href
|
# Fix up the periodical href to point to first section href
|
||||||
toc.nodes[0].href = toc.nodes[0].nodes[0].href
|
toc.nodes[0].href = toc.nodes[0].nodes[0].href
|
||||||
|
|
||||||
|
def remove_html_cover(self):
|
||||||
|
from calibre.ebooks.oeb.base import OEB_DOCS
|
||||||
|
|
||||||
|
oeb = self.oeb
|
||||||
|
if not oeb.metadata.cover \
|
||||||
|
or 'cover' not in oeb.guide:
|
||||||
|
return
|
||||||
|
href = oeb.guide['cover'].href
|
||||||
|
del oeb.guide['cover']
|
||||||
|
item = oeb.manifest.hrefs[href]
|
||||||
|
if item.spine_position is not None:
|
||||||
|
self.log.warn('Found an HTML cover: ', item.href, 'removing it.',
|
||||||
|
'If you find some content missing from the output MOBI, it '
|
||||||
|
'is because you misidentified the HTML cover in the input '
|
||||||
|
'document')
|
||||||
|
oeb.spine.remove(item)
|
||||||
|
if item.media_type in OEB_DOCS:
|
||||||
|
self.oeb.manifest.remove(item)
|
||||||
|
|
||||||
def convert(self, oeb, output_path, input_plugin, opts, log):
|
def convert(self, oeb, output_path, input_plugin, opts, log):
|
||||||
|
from calibre.utils.config import tweaks
|
||||||
|
from calibre.ebooks.mobi.writer2.resources import Resources
|
||||||
self.log, self.opts, self.oeb = log, opts, oeb
|
self.log, self.opts, self.oeb = log, opts, oeb
|
||||||
|
|
||||||
kf8 = self.create_kf8()
|
create_kf8 = tweaks.get('create_kf8', False)
|
||||||
self.write_mobi(input_plugin, output_path, kf8)
|
|
||||||
|
|
||||||
def create_kf8(self):
|
self.remove_html_cover()
|
||||||
|
resources = Resources(oeb, opts, self.is_periodical,
|
||||||
|
add_fonts=create_kf8)
|
||||||
|
|
||||||
|
kf8 = self.create_kf8(resources) if create_kf8 else None
|
||||||
|
|
||||||
|
self.log('Creating MOBI 6 output')
|
||||||
|
self.write_mobi(input_plugin, output_path, kf8, resources)
|
||||||
|
|
||||||
|
def create_kf8(self, resources):
|
||||||
from calibre.ebooks.mobi.writer8.main import KF8Writer
|
from calibre.ebooks.mobi.writer8.main import KF8Writer
|
||||||
return KF8Writer(self.oeb, self.opts)
|
return KF8Writer(self.oeb, self.opts, resources)
|
||||||
|
|
||||||
def write_mobi(self, input_plugin, output_path, kf8):
|
def write_mobi(self, input_plugin, output_path, kf8, resources):
|
||||||
from calibre.ebooks.mobi.mobiml import MobiMLizer
|
from calibre.ebooks.mobi.mobiml import MobiMLizer
|
||||||
from calibre.ebooks.oeb.transforms.manglecase import CaseMangler
|
from calibre.ebooks.oeb.transforms.manglecase import CaseMangler
|
||||||
from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer, Unavailable
|
from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer, Unavailable
|
||||||
@ -180,12 +198,15 @@ class MOBIOutput(OutputFormatPlugin):
|
|||||||
rasterizer(oeb, opts)
|
rasterizer(oeb, opts)
|
||||||
except Unavailable:
|
except Unavailable:
|
||||||
self.log.warn('SVG rasterizer unavailable, SVG will not be converted')
|
self.log.warn('SVG rasterizer unavailable, SVG will not be converted')
|
||||||
|
else:
|
||||||
|
# Add rasterized SVG images
|
||||||
|
resources.add_extra_images()
|
||||||
mobimlizer = MobiMLizer(ignore_tables=opts.linearize_tables)
|
mobimlizer = MobiMLizer(ignore_tables=opts.linearize_tables)
|
||||||
mobimlizer(oeb, opts)
|
mobimlizer(oeb, opts)
|
||||||
self.check_for_periodical()
|
self.check_for_periodical()
|
||||||
write_page_breaks_after_item = input_plugin is not plugin_for_input_format('cbz')
|
write_page_breaks_after_item = input_plugin is not plugin_for_input_format('cbz')
|
||||||
from calibre.ebooks.mobi.writer2.main import MobiWriter
|
from calibre.ebooks.mobi.writer2.main import MobiWriter
|
||||||
writer = MobiWriter(opts,
|
writer = MobiWriter(opts, resources, kf8,
|
||||||
write_page_breaks_after_item=write_page_breaks_after_item)
|
write_page_breaks_after_item=write_page_breaks_after_item)
|
||||||
writer(oeb, output_path)
|
writer(oeb, output_path)
|
||||||
|
|
||||||
|
@ -626,6 +626,14 @@ OptionRecommendation(name='sr3_search',
|
|||||||
OptionRecommendation(name='sr3_replace',
|
OptionRecommendation(name='sr3_replace',
|
||||||
recommended_value='', level=OptionRecommendation.LOW,
|
recommended_value='', level=OptionRecommendation.LOW,
|
||||||
help=_('Replacement to replace the text found with sr3-search.')),
|
help=_('Replacement to replace the text found with sr3-search.')),
|
||||||
|
|
||||||
|
OptionRecommendation(name='search_replace',
|
||||||
|
recommended_value=None, level=OptionRecommendation.LOW, help=_(
|
||||||
|
'Path to a file containing search and replace regular expressions. '
|
||||||
|
'The file must contain alternating lines of regular expression '
|
||||||
|
'followed by replacement pattern (which can be an empty line). '
|
||||||
|
'The regular expression must be in the python regex syntax and '
|
||||||
|
'the file must be UTF-8 encoded.')),
|
||||||
]
|
]
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import functools, re
|
import functools, re, json
|
||||||
|
|
||||||
from calibre import entity_to_unicode, as_unicode
|
from calibre import entity_to_unicode, as_unicode
|
||||||
|
|
||||||
@ -515,18 +515,31 @@ class HTMLPreProcessor(object):
|
|||||||
if not getattr(self.extra_opts, 'keep_ligatures', False):
|
if not getattr(self.extra_opts, 'keep_ligatures', False):
|
||||||
html = _ligpat.sub(lambda m:LIGATURES[m.group()], html)
|
html = _ligpat.sub(lambda m:LIGATURES[m.group()], html)
|
||||||
|
|
||||||
for search, replace in [['sr3_search', 'sr3_replace'], ['sr2_search', 'sr2_replace'], ['sr1_search', 'sr1_replace']]:
|
# Function for processing search and replace
|
||||||
|
def do_search_replace(search_pattern, replace_txt):
|
||||||
|
try:
|
||||||
|
search_re = re.compile(search_pattern)
|
||||||
|
if not replace_txt:
|
||||||
|
replace_txt = ''
|
||||||
|
rules.insert(0, (search_re, replace_txt))
|
||||||
|
except Exception as e:
|
||||||
|
self.log.error('Failed to parse %r regexp because %s' %
|
||||||
|
(search, as_unicode(e)))
|
||||||
|
|
||||||
|
# search / replace using the sr?_search / sr?_replace options
|
||||||
|
for i in range(1, 4):
|
||||||
|
search, replace = 'sr%d_search'%i, 'sr%d_replace'%i
|
||||||
search_pattern = getattr(self.extra_opts, search, '')
|
search_pattern = getattr(self.extra_opts, search, '')
|
||||||
|
replace_txt = getattr(self.extra_opts, replace, '')
|
||||||
if search_pattern:
|
if search_pattern:
|
||||||
try:
|
do_search_replace(search_pattern, replace_txt)
|
||||||
search_re = re.compile(search_pattern)
|
|
||||||
replace_txt = getattr(self.extra_opts, replace, '')
|
# multi-search / replace using the search_replace option
|
||||||
if not replace_txt:
|
search_replace = getattr(self.extra_opts, 'search_replace', None)
|
||||||
replace_txt = ''
|
if search_replace:
|
||||||
rules.insert(0, (search_re, replace_txt))
|
search_replace = json.loads(search_replace)
|
||||||
except Exception as e:
|
for search_pattern, replace_txt in search_replace:
|
||||||
self.log.error('Failed to parse %r regexp because %s' %
|
do_search_replace(search_pattern, replace_txt)
|
||||||
(search, as_unicode(e)))
|
|
||||||
|
|
||||||
end_rules = []
|
end_rules = []
|
||||||
# delete soft hyphens - moved here so it's executed after header/footer removal
|
# delete soft hyphens - moved here so it's executed after header/footer removal
|
||||||
|
@ -308,8 +308,10 @@ class MOBIHeader(object): # {{{
|
|||||||
self.extra_data_flags = 0
|
self.extra_data_flags = 0
|
||||||
if self.has_extra_data_flags:
|
if self.has_extra_data_flags:
|
||||||
self.unknown4 = self.raw[180:192]
|
self.unknown4 = self.raw[180:192]
|
||||||
self.fdst_idx, self.fdst_count = struct.unpack_from(b'>II',
|
self.fdst_idx, self.fdst_count = struct.unpack_from(b'>LL',
|
||||||
self.raw, 192)
|
self.raw, 192)
|
||||||
|
if self.fdst_count <= 1:
|
||||||
|
self.fdst_idx = NULL_INDEX
|
||||||
(self.fcis_number, self.fcis_count, self.flis_number,
|
(self.fcis_number, self.fcis_count, self.flis_number,
|
||||||
self.flis_count) = struct.unpack(b'>IIII',
|
self.flis_count) = struct.unpack(b'>IIII',
|
||||||
self.raw[200:216])
|
self.raw[200:216])
|
||||||
@ -342,7 +344,7 @@ class MOBIHeader(object): # {{{
|
|||||||
'first_non_book_record', 'datp_record_offset', 'fcis_number',
|
'first_non_book_record', 'datp_record_offset', 'fcis_number',
|
||||||
'flis_number', 'primary_index_record', 'fdst_idx',
|
'flis_number', 'primary_index_record', 'fdst_idx',
|
||||||
'first_image_index'):
|
'first_image_index'):
|
||||||
if hasattr(self, x):
|
if hasattr(self, x) and getattr(self, x) != NULL_INDEX:
|
||||||
setattr(self, x, self.header_offset+getattr(self, x))
|
setattr(self, x, self.header_offset+getattr(self, x))
|
||||||
|
|
||||||
if self.has_exth:
|
if self.has_exth:
|
||||||
|
@ -10,6 +10,7 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import sys, os, imghdr, struct
|
import sys, os, imghdr, struct
|
||||||
from itertools import izip
|
from itertools import izip
|
||||||
|
|
||||||
|
from calibre import CurrentDir
|
||||||
from calibre.ebooks.mobi.debug.headers import TextRecord
|
from calibre.ebooks.mobi.debug.headers import TextRecord
|
||||||
from calibre.ebooks.mobi.debug.index import (SKELIndex, SECTIndex, NCXIndex)
|
from calibre.ebooks.mobi.debug.index import (SKELIndex, SECTIndex, NCXIndex)
|
||||||
from calibre.ebooks.mobi.utils import read_font_record
|
from calibre.ebooks.mobi.utils import read_font_record
|
||||||
@ -43,6 +44,24 @@ class FDST(object):
|
|||||||
|
|
||||||
return '\n'.join(ans)
|
return '\n'.join(ans)
|
||||||
|
|
||||||
|
class File(object):
|
||||||
|
|
||||||
|
def __init__(self, skel, skeleton, text, first_aid, sections):
|
||||||
|
self.name = 'part%04d'%skel.file_number
|
||||||
|
self.skeleton, self.text, self.first_aid = skeleton, text, first_aid
|
||||||
|
self.sections = sections
|
||||||
|
|
||||||
|
def dump(self, ddir):
|
||||||
|
with open(os.path.join(ddir, self.name + '.html'), 'wb') as f:
|
||||||
|
f.write(self.text)
|
||||||
|
base = os.path.join(ddir, self.name + '-parts')
|
||||||
|
os.mkdir(base)
|
||||||
|
with CurrentDir(base):
|
||||||
|
with open('skeleton.html', 'wb') as f:
|
||||||
|
f.write(self.skeleton)
|
||||||
|
for i, text in enumerate(self.sections):
|
||||||
|
with open('sect-%04d.html'%i, 'wb') as f:
|
||||||
|
f.write(text)
|
||||||
|
|
||||||
class MOBIFile(object):
|
class MOBIFile(object):
|
||||||
|
|
||||||
@ -67,6 +86,7 @@ class MOBIFile(object):
|
|||||||
self.extract_resources()
|
self.extract_resources()
|
||||||
self.read_fdst()
|
self.read_fdst()
|
||||||
self.read_indices()
|
self.read_indices()
|
||||||
|
self.build_files()
|
||||||
|
|
||||||
def print_header(self, f=sys.stdout):
|
def print_header(self, f=sys.stdout):
|
||||||
print (str(self.mf.palmdb).encode('utf-8'), file=f)
|
print (str(self.mf.palmdb).encode('utf-8'), file=f)
|
||||||
@ -95,6 +115,26 @@ class MOBIFile(object):
|
|||||||
self.ncx_index = NCXIndex(self.header.primary_index_record,
|
self.ncx_index = NCXIndex(self.header.primary_index_record,
|
||||||
self.mf.records, self.header.encoding)
|
self.mf.records, self.header.encoding)
|
||||||
|
|
||||||
|
def build_files(self):
|
||||||
|
text = self.raw_text
|
||||||
|
self.files = []
|
||||||
|
for skel in self.skel_index.records:
|
||||||
|
sects = [x for x in self.sect_index.records if x.file_number
|
||||||
|
== skel.file_number]
|
||||||
|
skeleton = text[skel.start_position:skel.start_position+skel.length]
|
||||||
|
ftext = skeleton
|
||||||
|
first_aid = sects[0].toc_text
|
||||||
|
sections = []
|
||||||
|
|
||||||
|
for sect in sects:
|
||||||
|
start_pos = skel.start_position + skel.length + sect.start_pos
|
||||||
|
sect_text = text[start_pos:start_pos+sect.length]
|
||||||
|
insert_pos = sect.insert_pos - skel.start_position
|
||||||
|
ftext = ftext[:insert_pos] + sect_text + ftext[insert_pos:]
|
||||||
|
sections.append(sect_text)
|
||||||
|
|
||||||
|
self.files.append(File(skel, skeleton, ftext, first_aid, sections))
|
||||||
|
|
||||||
def extract_resources(self):
|
def extract_resources(self):
|
||||||
self.resource_map = []
|
self.resource_map = []
|
||||||
known_types = {b'FLIS', b'FCIS', b'SRCS',
|
known_types = {b'FLIS', b'FCIS', b'SRCS',
|
||||||
@ -141,7 +181,7 @@ def inspect_mobi(mobi_file, ddir):
|
|||||||
with open(alltext, 'wb') as of:
|
with open(alltext, 'wb') as of:
|
||||||
of.write(f.raw_text)
|
of.write(f.raw_text)
|
||||||
|
|
||||||
for x in ('text_records', 'images', 'fonts', 'binary'):
|
for x in ('text_records', 'images', 'fonts', 'binary', 'files'):
|
||||||
os.mkdir(os.path.join(ddir, x))
|
os.mkdir(os.path.join(ddir, x))
|
||||||
|
|
||||||
for rec in f.text_records:
|
for rec in f.text_records:
|
||||||
@ -164,3 +204,6 @@ def inspect_mobi(mobi_file, ddir):
|
|||||||
with open(os.path.join(ddir, 'ncx.record'), 'wb') as fo:
|
with open(os.path.join(ddir, 'ncx.record'), 'wb') as fo:
|
||||||
fo.write(str(f.ncx_index).encode('utf-8'))
|
fo.write(str(f.ncx_index).encode('utf-8'))
|
||||||
|
|
||||||
|
for part in f.files:
|
||||||
|
part.dump(os.path.join(ddir, 'files'))
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import copy
|
|||||||
import re
|
import re
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from calibre.ebooks.oeb.base import namespace, barename
|
from calibre.ebooks.oeb.base import namespace, barename
|
||||||
from calibre.ebooks.oeb.base import XHTML, XHTML_NS, OEB_DOCS, urlnormalize
|
from calibre.ebooks.oeb.base import XHTML, XHTML_NS, urlnormalize
|
||||||
from calibre.ebooks.oeb.stylizer import Stylizer
|
from calibre.ebooks.oeb.stylizer import Stylizer
|
||||||
from calibre.ebooks.oeb.transforms.flatcss import KeyMapper
|
from calibre.ebooks.oeb.transforms.flatcss import KeyMapper
|
||||||
from calibre.utils.magick.draw import identify_data
|
from calibre.utils.magick.draw import identify_data
|
||||||
@ -109,26 +109,8 @@ class MobiMLizer(object):
|
|||||||
self.profile = profile = context.dest
|
self.profile = profile = context.dest
|
||||||
self.fnums = fnums = dict((v, k) for k, v in profile.fnums.items())
|
self.fnums = fnums = dict((v, k) for k, v in profile.fnums.items())
|
||||||
self.fmap = KeyMapper(profile.fbase, profile.fbase, fnums.keys())
|
self.fmap = KeyMapper(profile.fbase, profile.fbase, fnums.keys())
|
||||||
self.remove_html_cover()
|
|
||||||
self.mobimlize_spine()
|
self.mobimlize_spine()
|
||||||
|
|
||||||
def remove_html_cover(self):
|
|
||||||
oeb = self.oeb
|
|
||||||
if not oeb.metadata.cover \
|
|
||||||
or 'cover' not in oeb.guide:
|
|
||||||
return
|
|
||||||
href = oeb.guide['cover'].href
|
|
||||||
del oeb.guide['cover']
|
|
||||||
item = oeb.manifest.hrefs[href]
|
|
||||||
if item.spine_position is not None:
|
|
||||||
self.log.warn('Found an HTML cover,', item.href, 'removing it.',
|
|
||||||
'If you find some content missing from the output MOBI, it '
|
|
||||||
'is because you misidentified the HTML cover in the input '
|
|
||||||
'document')
|
|
||||||
oeb.spine.remove(item)
|
|
||||||
if item.media_type in OEB_DOCS:
|
|
||||||
self.oeb.manifest.remove(item)
|
|
||||||
|
|
||||||
def mobimlize_spine(self):
|
def mobimlize_spine(self):
|
||||||
'Iterate over the spine and convert it to MOBIML'
|
'Iterate over the spine and convert it to MOBIML'
|
||||||
for item in self.oeb.spine:
|
for item in self.oeb.spine:
|
||||||
@ -473,7 +455,7 @@ class MobiMLizer(object):
|
|||||||
if tag in TABLE_TAGS and self.ignore_tables:
|
if tag in TABLE_TAGS and self.ignore_tables:
|
||||||
tag = 'span' if tag == 'td' else 'div'
|
tag = 'span' if tag == 'td' else 'div'
|
||||||
|
|
||||||
if tag == 'table':
|
if tag in ('table', 'td', 'tr'):
|
||||||
col = style.backgroundColor
|
col = style.backgroundColor
|
||||||
if col:
|
if col:
|
||||||
elem.set('bgcolor', col)
|
elem.set('bgcolor', col)
|
||||||
|
@ -114,6 +114,7 @@ class CNCX(object): # {{{
|
|||||||
|
|
||||||
def __bool__(self):
|
def __bool__(self):
|
||||||
return bool(self.records)
|
return bool(self.records)
|
||||||
|
__nonzero__ = __bool__
|
||||||
|
|
||||||
def iteritems(self):
|
def iteritems(self):
|
||||||
return self.records.iteritems()
|
return self.records.iteritems()
|
||||||
|
@ -7,7 +7,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2011, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import struct, string, imghdr, zlib
|
import struct, string, imghdr, zlib, os
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from calibre.utils.magick.draw import Image, save_cover_data_to, thumbnail
|
from calibre.utils.magick.draw import Image, save_cover_data_to, thumbnail
|
||||||
@ -364,7 +364,7 @@ def count_set_bits(num):
|
|||||||
num >>= 1
|
num >>= 1
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def to_base(num, base=32):
|
def to_base(num, base=32, min_num_digits=None):
|
||||||
digits = string.digits + string.ascii_uppercase
|
digits = string.digits + string.ascii_uppercase
|
||||||
sign = 1 if num >= 0 else -1
|
sign = 1 if num >= 0 else -1
|
||||||
if num == 0: return '0'
|
if num == 0: return '0'
|
||||||
@ -373,6 +373,8 @@ def to_base(num, base=32):
|
|||||||
while num:
|
while num:
|
||||||
ans.append(digits[(num % base)])
|
ans.append(digits[(num % base)])
|
||||||
num //= base
|
num //= base
|
||||||
|
if min_num_digits is not None and len(ans) < min_num_digits:
|
||||||
|
ans.extend('0'*(min_num_digits - len(ans)))
|
||||||
if sign < 0:
|
if sign < 0:
|
||||||
ans.append('-')
|
ans.append('-')
|
||||||
ans.reverse()
|
ans.reverse()
|
||||||
@ -388,27 +390,8 @@ def mobify_image(data):
|
|||||||
data = im.export('gif')
|
data = im.export('gif')
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def read_zlib_header(header):
|
# Font records {{{
|
||||||
header = bytearray(header)
|
def read_font_record(data, extent=1040):
|
||||||
# See sec 2.2 of RFC 1950 for the zlib stream format
|
|
||||||
# http://www.ietf.org/rfc/rfc1950.txt
|
|
||||||
if (header[0]*256 + header[1])%31 != 0:
|
|
||||||
return None, 'Bad zlib header, FCHECK failed'
|
|
||||||
|
|
||||||
cmf = header[0] & 0b1111
|
|
||||||
cinfo = header[0] >> 4
|
|
||||||
if cmf != 8:
|
|
||||||
return None, 'Unknown zlib compression method: %d'%cmf
|
|
||||||
if cinfo > 7:
|
|
||||||
return None, 'Invalid CINFO field in zlib header: %d'%cinfo
|
|
||||||
fdict = (header[1]&0b10000)>>5
|
|
||||||
if fdict != 0:
|
|
||||||
return None, 'FDICT based zlib compression not supported'
|
|
||||||
wbits = cinfo + 8
|
|
||||||
return wbits, None
|
|
||||||
|
|
||||||
|
|
||||||
def read_font_record(data, extent=1040): # {{{
|
|
||||||
'''
|
'''
|
||||||
Return the font encoded in the MOBI FONT record represented by data.
|
Return the font encoded in the MOBI FONT record represented by data.
|
||||||
The return value in a dict with fields raw_data, font_data, err, ext,
|
The return value in a dict with fields raw_data, font_data, err, ext,
|
||||||
@ -466,15 +449,8 @@ def read_font_record(data, extent=1040): # {{{
|
|||||||
|
|
||||||
if flags & 0b1:
|
if flags & 0b1:
|
||||||
# ZLIB compressed data
|
# ZLIB compressed data
|
||||||
wbits, err = read_zlib_header(font_data[:2])
|
|
||||||
if err is not None:
|
|
||||||
ans['err'] = err
|
|
||||||
return ans
|
|
||||||
adler32, = struct.unpack_from(b'>I', font_data, len(font_data) - 4)
|
|
||||||
try:
|
try:
|
||||||
# remove two bytes of zlib header and 4 bytes of trailing checksum
|
font_data = zlib.decompress(font_data)
|
||||||
# negative wbits indicates no standard gzip header
|
|
||||||
font_data = zlib.decompress(font_data[2:-4], -wbits, usize)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
ans['err'] = 'Failed to zlib decompress font data (%s)'%e
|
ans['err'] = 'Failed to zlib decompress font data (%s)'%e
|
||||||
return ans
|
return ans
|
||||||
@ -483,23 +459,42 @@ def read_font_record(data, extent=1040): # {{{
|
|||||||
ans['err'] = 'Uncompressed font size mismatch'
|
ans['err'] = 'Uncompressed font size mismatch'
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
if False:
|
|
||||||
# For some reason these almost never match, probably Amazon has a
|
|
||||||
# buggy Adler32 implementation
|
|
||||||
sig = (zlib.adler32(font_data) & 0xffffffff)
|
|
||||||
if sig != adler32:
|
|
||||||
ans['err'] = ('Adler checksum did not match. Stored: %d '
|
|
||||||
'Calculated: %d')%(adler32, sig)
|
|
||||||
return ans
|
|
||||||
|
|
||||||
ans['font_data'] = font_data
|
ans['font_data'] = font_data
|
||||||
sig = font_data[:4]
|
sig = font_data[:4]
|
||||||
ans['ext'] = ('ttf' if sig in {b'\0\1\0\0', b'true', b'ttcf'}
|
ans['ext'] = ('ttf' if sig in {b'\0\1\0\0', b'true', b'ttcf'}
|
||||||
else 'otf' if sig == b'OTTO' else 'dat')
|
else 'otf' if sig == b'OTTO' else 'dat')
|
||||||
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
def write_font_record(data, obfuscate=True, compress=True):
|
||||||
|
'''
|
||||||
|
Write the ttf/otf font represented by data into a font record. See
|
||||||
|
read_font_record() for details on the format of the record.
|
||||||
|
'''
|
||||||
|
|
||||||
|
flags = 0
|
||||||
|
key_len = 20
|
||||||
|
usize = len(data)
|
||||||
|
xor_key = b''
|
||||||
|
if compress:
|
||||||
|
flags |= 0b1
|
||||||
|
data = zlib.compress(data, 9)
|
||||||
|
if obfuscate:
|
||||||
|
flags |= 0b10
|
||||||
|
xor_key = os.urandom(key_len)
|
||||||
|
key = bytearray(xor_key)
|
||||||
|
data = bytearray(data)
|
||||||
|
for i in xrange(1040):
|
||||||
|
data[i] ^= key[i%key_len]
|
||||||
|
data = bytes(data)
|
||||||
|
|
||||||
|
key_start = struct.calcsize(b'>5L') + 4
|
||||||
|
data_start = key_start + len(xor_key)
|
||||||
|
|
||||||
|
header = b'FONT' + struct.pack(b'>5L', usize, flags, data_start,
|
||||||
|
len(xor_key), key_start)
|
||||||
|
|
||||||
|
return header + xor_key + data
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,17 +11,15 @@ import re, random, time
|
|||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
from struct import pack
|
from struct import pack
|
||||||
|
|
||||||
from calibre.ebooks import normalize, generate_masthead
|
from calibre.ebooks import normalize
|
||||||
from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES
|
|
||||||
from calibre.ebooks.mobi.writer2.serializer import Serializer
|
from calibre.ebooks.mobi.writer2.serializer import Serializer
|
||||||
from calibre.ebooks.compression.palmdoc import compress_doc
|
from calibre.ebooks.compression.palmdoc import compress_doc
|
||||||
from calibre.ebooks.mobi.langcodes import iana2mobi
|
from calibre.ebooks.mobi.langcodes import iana2mobi
|
||||||
from calibre.utils.filenames import ascii_filename
|
from calibre.utils.filenames import ascii_filename
|
||||||
from calibre.ebooks.mobi.writer2 import (PALMDOC, UNCOMPRESSED, RECORD_SIZE)
|
from calibre.ebooks.mobi.writer2 import (PALMDOC, UNCOMPRESSED, RECORD_SIZE)
|
||||||
from calibre.ebooks.mobi.utils import (rescale_image, encint, mobify_image,
|
from calibre.ebooks.mobi.utils import (encint, encode_trailing_data,
|
||||||
encode_trailing_data, align_block, detect_periodical)
|
align_block, detect_periodical)
|
||||||
from calibre.ebooks.mobi.writer2.indexer import Indexer
|
from calibre.ebooks.mobi.writer2.indexer import Indexer
|
||||||
from calibre.ebooks.mobi import MAX_THUMB_DIMEN, MAX_THUMB_SIZE
|
|
||||||
|
|
||||||
EXTH_CODES = {
|
EXTH_CODES = {
|
||||||
'creator': 100,
|
'creator': 100,
|
||||||
@ -50,8 +48,10 @@ WRITE_UNCROSSABLE_BREAKS = False
|
|||||||
class MobiWriter(object):
|
class MobiWriter(object):
|
||||||
COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+')
|
COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+')
|
||||||
|
|
||||||
def __init__(self, opts, write_page_breaks_after_item=True):
|
def __init__(self, opts, resources, kf8, write_page_breaks_after_item=True):
|
||||||
self.opts = opts
|
self.opts = opts
|
||||||
|
self.resources = resources
|
||||||
|
self.kf8 = kf8
|
||||||
self.write_page_breaks_after_item = write_page_breaks_after_item
|
self.write_page_breaks_after_item = write_page_breaks_after_item
|
||||||
self.compression = UNCOMPRESSED if opts.dont_compress else PALMDOC
|
self.compression = UNCOMPRESSED if opts.dont_compress else PALMDOC
|
||||||
self.prefer_author_sort = opts.prefer_author_sort
|
self.prefer_author_sort = opts.prefer_author_sort
|
||||||
@ -151,66 +151,14 @@ class MobiWriter(object):
|
|||||||
# Images {{{
|
# Images {{{
|
||||||
|
|
||||||
def generate_images(self):
|
def generate_images(self):
|
||||||
oeb = self.oeb
|
resources = self.resources
|
||||||
oeb.logger.info('Serializing images...')
|
image_records = resources.records
|
||||||
self.image_records = []
|
self.image_map = resources.item_map
|
||||||
self.image_map = {}
|
self.masthead_offset = resources.masthead_offset
|
||||||
self.masthead_offset = 0
|
self.cover_offset = resources.cover_offset
|
||||||
index = 1
|
self.thumbnail_offset = resources.thumbnail_offset
|
||||||
|
|
||||||
mh_href = None
|
if image_records and image_records[0] is None:
|
||||||
if 'masthead' in oeb.guide and oeb.guide['masthead'].href:
|
|
||||||
mh_href = oeb.guide['masthead'].href
|
|
||||||
self.image_records.append(None)
|
|
||||||
index += 1
|
|
||||||
elif self.is_periodical:
|
|
||||||
# Generate a default masthead
|
|
||||||
data = generate_masthead(unicode(self.oeb.metadata['title'][0]))
|
|
||||||
self.image_records.append(data)
|
|
||||||
index += 1
|
|
||||||
|
|
||||||
cover_href = self.cover_offset = self.thumbnail_offset = None
|
|
||||||
if (oeb.metadata.cover and
|
|
||||||
unicode(oeb.metadata.cover[0]) in oeb.manifest.ids):
|
|
||||||
cover_id = unicode(oeb.metadata.cover[0])
|
|
||||||
item = oeb.manifest.ids[cover_id]
|
|
||||||
cover_href = item.href
|
|
||||||
|
|
||||||
for item in self.oeb.manifest.values():
|
|
||||||
if item.media_type not in OEB_RASTER_IMAGES: continue
|
|
||||||
try:
|
|
||||||
data = item.data
|
|
||||||
if self.opts.mobi_keep_original_images:
|
|
||||||
data = mobify_image(data)
|
|
||||||
else:
|
|
||||||
data = rescale_image(data)
|
|
||||||
except:
|
|
||||||
oeb.logger.warn('Bad image file %r' % item.href)
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if mh_href and item.href == mh_href:
|
|
||||||
self.image_records[0] = data
|
|
||||||
continue
|
|
||||||
|
|
||||||
self.image_records.append(data)
|
|
||||||
self.image_map[item.href] = index
|
|
||||||
index += 1
|
|
||||||
|
|
||||||
if cover_href and item.href == cover_href:
|
|
||||||
self.cover_offset = self.image_map[item.href] - 1
|
|
||||||
try:
|
|
||||||
data = rescale_image(item.data, dimen=MAX_THUMB_DIMEN,
|
|
||||||
maxsizeb=MAX_THUMB_SIZE)
|
|
||||||
except:
|
|
||||||
oeb.logger.warn('Failed to generate thumbnail')
|
|
||||||
else:
|
|
||||||
self.image_records.append(data)
|
|
||||||
self.thumbnail_offset = index - 1
|
|
||||||
index += 1
|
|
||||||
finally:
|
|
||||||
item.unload_data_from_memory()
|
|
||||||
|
|
||||||
if self.image_records and self.image_records[0] is None:
|
|
||||||
raise ValueError('Failed to find masthead image in manifest')
|
raise ValueError('Failed to find masthead image in manifest')
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
@ -317,9 +265,12 @@ class MobiWriter(object):
|
|||||||
|
|
||||||
exth = self.build_exth(bt)
|
exth = self.build_exth(bt)
|
||||||
first_image_record = None
|
first_image_record = None
|
||||||
if self.image_records:
|
if self.resources:
|
||||||
|
used_images = self.serializer.used_images
|
||||||
|
if self.kf8 is not None:
|
||||||
|
used_images |= self.kf8.used_images
|
||||||
first_image_record = len(self.records)
|
first_image_record = len(self.records)
|
||||||
self.records.extend(self.image_records)
|
self.resources.serialize(self.records, used_images)
|
||||||
last_content_record = len(self.records) - 1
|
last_content_record = len(self.records) - 1
|
||||||
|
|
||||||
# FCIS/FLIS (Seems to serve no purpose)
|
# FCIS/FLIS (Seems to serve no purpose)
|
||||||
|
136
src/calibre/ebooks/mobi/writer2/resources.py
Normal file
136
src/calibre/ebooks/mobi/writer2/resources.py
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
|
print_function)
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
import imghdr
|
||||||
|
|
||||||
|
from calibre.ebooks.mobi import MAX_THUMB_DIMEN, MAX_THUMB_SIZE
|
||||||
|
from calibre.ebooks.mobi.utils import (rescale_image, mobify_image,
|
||||||
|
write_font_record)
|
||||||
|
from calibre.ebooks import generate_masthead
|
||||||
|
from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES
|
||||||
|
|
||||||
|
PLACEHOLDER_GIF = b'GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00@\x02\x01D\x00;'
|
||||||
|
|
||||||
|
class Resources(object):
|
||||||
|
|
||||||
|
def __init__(self, oeb, opts, is_periodical, add_fonts=False):
|
||||||
|
self.oeb, self.log, self.opts = oeb, oeb.log, opts
|
||||||
|
self.is_periodical = is_periodical
|
||||||
|
|
||||||
|
self.item_map = {}
|
||||||
|
self.records = []
|
||||||
|
self.mime_map = {}
|
||||||
|
self.masthead_offset = 0
|
||||||
|
self.used_image_indices = set()
|
||||||
|
self.image_indices = set()
|
||||||
|
self.cover_offset = self.thumbnail_offset = None
|
||||||
|
|
||||||
|
self.add_resources(add_fonts)
|
||||||
|
|
||||||
|
def process_image(self, data):
|
||||||
|
return (mobify_image(data) if self.opts.mobi_keep_original_images else
|
||||||
|
rescale_image(data))
|
||||||
|
|
||||||
|
def add_resources(self, add_fonts):
|
||||||
|
oeb = self.oeb
|
||||||
|
oeb.logger.info('Serializing resources...')
|
||||||
|
index = 1
|
||||||
|
|
||||||
|
mh_href = None
|
||||||
|
if 'masthead' in oeb.guide and oeb.guide['masthead'].href:
|
||||||
|
mh_href = oeb.guide['masthead'].href
|
||||||
|
self.records.append(None)
|
||||||
|
index += 1
|
||||||
|
self.used_image_indices.add(0)
|
||||||
|
self.image_indices.add(0)
|
||||||
|
elif self.is_periodical:
|
||||||
|
# Generate a default masthead
|
||||||
|
data = generate_masthead(unicode(self.oeb.metadata['title'][0]))
|
||||||
|
self.records.append(data)
|
||||||
|
self.used_image_indices.add(0)
|
||||||
|
self.image_indices.add(0)
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
cover_href = self.cover_offset = self.thumbnail_offset = None
|
||||||
|
if (oeb.metadata.cover and
|
||||||
|
unicode(oeb.metadata.cover[0]) in oeb.manifest.ids):
|
||||||
|
cover_id = unicode(oeb.metadata.cover[0])
|
||||||
|
item = oeb.manifest.ids[cover_id]
|
||||||
|
cover_href = item.href
|
||||||
|
|
||||||
|
for item in self.oeb.manifest.values():
|
||||||
|
if item.media_type not in OEB_RASTER_IMAGES: continue
|
||||||
|
try:
|
||||||
|
data = self.process_image(item.data)
|
||||||
|
except:
|
||||||
|
self.log.warn('Bad image file %r' % item.href)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
if mh_href and item.href == mh_href:
|
||||||
|
self.records[0] = data
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.image_indices.add(len(self.records))
|
||||||
|
self.records.append(data)
|
||||||
|
self.item_map[item.href] = index
|
||||||
|
self.mime_map[item.href] = 'image/%s'%imghdr.what(None, data)
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
if cover_href and item.href == cover_href:
|
||||||
|
self.cover_offset = self.item_map[item.href] - 1
|
||||||
|
self.used_image_indices.add(self.cover_offset)
|
||||||
|
try:
|
||||||
|
data = rescale_image(item.data, dimen=MAX_THUMB_DIMEN,
|
||||||
|
maxsizeb=MAX_THUMB_SIZE)
|
||||||
|
except:
|
||||||
|
self.log.warn('Failed to generate thumbnail')
|
||||||
|
else:
|
||||||
|
self.image_indices.add(len(self.records))
|
||||||
|
self.records.append(data)
|
||||||
|
self.thumbnail_offset = index - 1
|
||||||
|
self.used_image_indices.add(self.thumbnail_offset)
|
||||||
|
index += 1
|
||||||
|
finally:
|
||||||
|
item.unload_data_from_memory()
|
||||||
|
|
||||||
|
if add_fonts:
|
||||||
|
for item in self.oeb.manifest.values():
|
||||||
|
if item.href and item.href.rpartition('.')[-1].lower() in {
|
||||||
|
'ttf', 'otf'} and isinstance(item.data, bytes):
|
||||||
|
self.records.append(write_font_record(item.data))
|
||||||
|
self.item_map[item.href] = len(self.records)
|
||||||
|
|
||||||
|
def add_extra_images(self):
|
||||||
|
'''
|
||||||
|
Add any images that were created after the call to add_resources()
|
||||||
|
'''
|
||||||
|
for item in self.oeb.manifest.values():
|
||||||
|
if (item.media_type not in OEB_RASTER_IMAGES or item.href in
|
||||||
|
self.item_map): continue
|
||||||
|
try:
|
||||||
|
data = self.process_image(item.data)
|
||||||
|
except:
|
||||||
|
self.log.warn('Bad image file %r' % item.href)
|
||||||
|
else:
|
||||||
|
self.records.append(data)
|
||||||
|
self.item_map[item.href] = len(self.records)
|
||||||
|
finally:
|
||||||
|
item.unload_data_from_memory()
|
||||||
|
|
||||||
|
def serialize(self, records, used_images):
|
||||||
|
used_image_indices = self.used_image_indices | {
|
||||||
|
v-1 for k, v in self.item_map.iteritems() if k in used_images}
|
||||||
|
for i in self.image_indices-used_image_indices:
|
||||||
|
self.records[i] = PLACEHOLDER_GIF
|
||||||
|
records.extend(self.records)
|
||||||
|
|
||||||
|
def __bool__(self):
|
||||||
|
return bool(self.records)
|
||||||
|
__nonzero__ = __bool__
|
||||||
|
|
@ -39,6 +39,7 @@ class Serializer(object):
|
|||||||
self.oeb = oeb
|
self.oeb = oeb
|
||||||
# Map of image hrefs to image index in the MOBI file
|
# Map of image hrefs to image index in the MOBI file
|
||||||
self.images = images
|
self.images = images
|
||||||
|
self.used_images = set()
|
||||||
self.logger = oeb.logger
|
self.logger = oeb.logger
|
||||||
self.is_periodical = is_periodical
|
self.is_periodical = is_periodical
|
||||||
self.write_page_breaks_after_item = write_page_breaks_after_item
|
self.write_page_breaks_after_item = write_page_breaks_after_item
|
||||||
@ -329,6 +330,7 @@ class Serializer(object):
|
|||||||
href = urlnormalize(item.abshref(val))
|
href = urlnormalize(item.abshref(val))
|
||||||
if href in self.images:
|
if href in self.images:
|
||||||
index = self.images[href]
|
index = self.images[href]
|
||||||
|
self.used_images.add(href)
|
||||||
buf.write(b'recindex="%05d"' % index)
|
buf.write(b'recindex="%05d"' % index)
|
||||||
continue
|
continue
|
||||||
buf.write(attr.encode('utf-8'))
|
buf.write(attr.encode('utf-8'))
|
||||||
|
@ -7,9 +7,199 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
import copy
|
||||||
|
from functools import partial
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
import cssutils
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
from calibre import isbytestring, force_unicode
|
||||||
|
from calibre.ebooks.mobi.utils import to_base
|
||||||
|
from calibre.ebooks.oeb.base import (OEB_DOCS, OEB_STYLES, SVG_MIME, XPath,
|
||||||
|
extract, XHTML, urlnormalize)
|
||||||
|
from calibre.ebooks.oeb.parse_utils import barename
|
||||||
|
from calibre.ebooks.mobi.writer8.skeleton import Chunker, aid_able_tags
|
||||||
|
|
||||||
|
XML_DOCS = OEB_DOCS | {SVG_MIME}
|
||||||
|
|
||||||
|
# References to record numbers in KF8 are stored as base-32 encoded integers,
|
||||||
|
# with 4 digits
|
||||||
|
to_ref = partial(to_base, base=32, min_num_digits=4)
|
||||||
|
# References in links are stored with 10 digits
|
||||||
|
to_href = partial(to_base, base=32, min_num_digits=10)
|
||||||
|
|
||||||
class KF8Writer(object):
|
class KF8Writer(object):
|
||||||
|
|
||||||
def __init__(self, oeb, opts):
|
def __init__(self, oeb, opts, resources):
|
||||||
self.oeb, self.opts, self.log = oeb, opts, oeb.log
|
self.oeb, self.opts, self.log = oeb, opts, oeb.log
|
||||||
|
self.log.info('Creating KF8 output')
|
||||||
|
self.used_images = set()
|
||||||
|
self.resources = resources
|
||||||
|
self.dup_data()
|
||||||
|
self.flows = [None] # First flow item is reserved for the text
|
||||||
|
|
||||||
|
self.replace_resource_links()
|
||||||
|
self.extract_css_into_flows()
|
||||||
|
self.extract_svg_into_flows()
|
||||||
|
self.replace_internal_links_with_placeholders()
|
||||||
|
self.insert_aid_attributes()
|
||||||
|
self.chunk_it_up()
|
||||||
|
|
||||||
|
def dup_data(self):
|
||||||
|
''' Duplicate data so that any changes we make to markup/CSS only
|
||||||
|
affect KF8 output and not MOBI 6 output '''
|
||||||
|
self._data_cache = {}
|
||||||
|
for item in self.oeb.manifest:
|
||||||
|
if item.media_type in XML_DOCS:
|
||||||
|
self._data_cache[item.href] = copy.deepcopy(item.data)
|
||||||
|
elif item.media_type in OEB_STYLES:
|
||||||
|
# I can't figure out how to make an efficient copy of the
|
||||||
|
# in-memory CSSStylesheet, as deepcopy doesn't work (raises an
|
||||||
|
# exception)
|
||||||
|
self._data_cache[item.href] = cssutils.parseString(
|
||||||
|
item.data.cssText)
|
||||||
|
|
||||||
|
def data(self, item):
|
||||||
|
return self._data_cache.get(item.href, item.data)
|
||||||
|
|
||||||
|
def replace_resource_links(self):
|
||||||
|
''' Replace links to resources (raster images/fonts) with pointers to
|
||||||
|
the MOBI record containing the resource. The pointers are of the form:
|
||||||
|
kindle:embed:XXXX?mime=image/* The ?mime= is apparently optional and
|
||||||
|
not used for fonts. '''
|
||||||
|
|
||||||
|
def pointer(item, oref):
|
||||||
|
ref = item.abshref(oref)
|
||||||
|
idx = self.resources.item_map.get(ref, None)
|
||||||
|
if idx is not None:
|
||||||
|
is_image = self.resources.records[idx-1][:4] not in {b'FONT'}
|
||||||
|
idx = to_ref(idx)
|
||||||
|
if is_image:
|
||||||
|
self.used_images.add(ref)
|
||||||
|
return 'kindle:embed:%s?mime=%s'%(idx,
|
||||||
|
self.resources.mime_map[ref])
|
||||||
|
else:
|
||||||
|
return 'kindle:embed:%s'%idx
|
||||||
|
return oref
|
||||||
|
|
||||||
|
for item in self.oeb.manifest:
|
||||||
|
|
||||||
|
if item.media_type in XML_DOCS:
|
||||||
|
root = self.data(item)
|
||||||
|
for tag in XPath('//h:img|//svg:image')(root):
|
||||||
|
for attr, ref in tag.attrib.iteritems():
|
||||||
|
if attr.split('}')[-1].lower() in {'src', 'href'}:
|
||||||
|
tag.attrib[attr] = pointer(item, ref)
|
||||||
|
|
||||||
|
for tag in XPath('//h:style')(root):
|
||||||
|
if tag.text:
|
||||||
|
sheet = cssutils.parseString(tag.text)
|
||||||
|
replacer = partial(pointer, item)
|
||||||
|
cssutils.replaceUrls(sheet, replacer,
|
||||||
|
ignoreImportRules=True)
|
||||||
|
repl = sheet.cssText
|
||||||
|
if isbytestring(repl):
|
||||||
|
repl = repl.decode('utf-8')
|
||||||
|
tag.text = '\n'+ repl + '\n'
|
||||||
|
|
||||||
|
elif item.media_type in OEB_STYLES:
|
||||||
|
sheet = self.data(item)
|
||||||
|
replacer = partial(pointer, item)
|
||||||
|
cssutils.replaceUrls(sheet, replacer, ignoreImportRules=True)
|
||||||
|
|
||||||
|
def extract_css_into_flows(self):
|
||||||
|
inlines = defaultdict(list) # Ensure identical <style>s not repeated
|
||||||
|
sheets = {}
|
||||||
|
|
||||||
|
for item in self.oeb.manifest:
|
||||||
|
if item.media_type in OEB_STYLES:
|
||||||
|
data = self.data(item).cssText
|
||||||
|
self.flows.append(force_unicode(data, 'utf-8'))
|
||||||
|
sheets[item.href] = len(self.flows)
|
||||||
|
|
||||||
|
for item in self.oeb.spine:
|
||||||
|
root = self.data(item)
|
||||||
|
|
||||||
|
for link in XPath('//h:link[@href]')(root):
|
||||||
|
href = item.abshref(link.get('href'))
|
||||||
|
idx = sheets.get(href, None)
|
||||||
|
if idx is not None:
|
||||||
|
idx = to_ref(idx)
|
||||||
|
link.set('href', 'kindle:flow:%s?mime=text/css'%idx)
|
||||||
|
|
||||||
|
for tag in XPath('//h:style')(root):
|
||||||
|
p = tag.getparent()
|
||||||
|
idx = p.index(tag)
|
||||||
|
raw = tag.text
|
||||||
|
if not raw or not raw.strip():
|
||||||
|
extract(tag)
|
||||||
|
continue
|
||||||
|
repl = etree.Element(XHTML('link'), type='text/css',
|
||||||
|
rel='stylesheet')
|
||||||
|
repl.tail='\n'
|
||||||
|
p.insert(idx, repl)
|
||||||
|
extract(tag)
|
||||||
|
inlines[raw].append(repl)
|
||||||
|
|
||||||
|
for raw, elems in inlines.iteritems():
|
||||||
|
self.flows.append(raw)
|
||||||
|
idx = to_ref(len(self.flows))
|
||||||
|
for link in elems:
|
||||||
|
link.set('href', 'kindle:flow:%s?mime=text/css'%idx)
|
||||||
|
|
||||||
|
def extract_svg_into_flows(self):
|
||||||
|
for item in self.oeb.spine:
|
||||||
|
root = self.data(item)
|
||||||
|
|
||||||
|
for svg in XPath('//svg:svg')(root):
|
||||||
|
raw = etree.tostring(svg, encoding=unicode, with_tail=False)
|
||||||
|
self.flows.append(raw)
|
||||||
|
p = svg.getparent()
|
||||||
|
pos = p.index(svg)
|
||||||
|
img = etree.Element(XHTML('img'),
|
||||||
|
src="kindle:flow:%s?mime=image/svg+xml"%to_ref(
|
||||||
|
len(self.flows)))
|
||||||
|
p.insert(pos, img)
|
||||||
|
extract(svg)
|
||||||
|
|
||||||
|
def replace_internal_links_with_placeholders(self):
|
||||||
|
self.link_map = {}
|
||||||
|
count = 0
|
||||||
|
hrefs = {item.href for item in self.oeb.spine}
|
||||||
|
for item in self.oeb.spine:
|
||||||
|
root = self.data(item)
|
||||||
|
|
||||||
|
for a in XPath('//h:a[@href]')(root):
|
||||||
|
count += 1
|
||||||
|
ref = item.abshref(a.get('href'))
|
||||||
|
href, _, frag = ref.partition('#')
|
||||||
|
href = urlnormalize(href)
|
||||||
|
if href in hrefs:
|
||||||
|
placeholder = 'kindle:pos:fid:0000:off:%s'%to_href(count)
|
||||||
|
self.link_map[placeholder] = (href, frag)
|
||||||
|
a.set('href', placeholder)
|
||||||
|
|
||||||
|
def insert_aid_attributes(self):
|
||||||
|
self.id_map = {}
|
||||||
|
for i, item in enumerate(self.oeb.spine):
|
||||||
|
root = self.data(item)
|
||||||
|
aidbase = i * int(1e6)
|
||||||
|
j = 0
|
||||||
|
for tag in root.iterdescendants(etree.Element):
|
||||||
|
id_ = tag.attrib.get('id', None)
|
||||||
|
if id_ is not None or barename(tag.tag).lower() in aid_able_tags:
|
||||||
|
aid = aidbase + j
|
||||||
|
tag.attrib['aid'] = to_base(aid, base=32)
|
||||||
|
if tag.tag == XHTML('body'):
|
||||||
|
self.id_map[(item.href, '')] = tag.attrib['aid']
|
||||||
|
if id_ is not None:
|
||||||
|
self.id_map[(item.href, id_)] = tag.attrib['aid']
|
||||||
|
|
||||||
|
j += 1
|
||||||
|
|
||||||
|
def chunk_it_up(self):
|
||||||
|
chunker = Chunker(self.oeb, self.data)
|
||||||
|
chunker
|
||||||
|
|
||||||
|
|
||||||
|
293
src/calibre/ebooks/mobi/writer8/skeleton.py
Normal file
293
src/calibre/ebooks/mobi/writer8/skeleton.py
Normal file
@ -0,0 +1,293 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
|
print_function)
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
import re
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
from calibre.ebooks.oeb.base import XHTML_NS
|
||||||
|
from calibre.constants import ispy3
|
||||||
|
|
||||||
|
CHUNK_SIZE = 8192
|
||||||
|
|
||||||
|
# Tags to which kindlegen adds the aid attribute
|
||||||
|
aid_able_tags = {'a', 'abbr', 'address', 'article', 'aside', 'audio', 'b',
|
||||||
|
'bdo', 'blockquote', 'body', 'button', 'cite', 'code', 'dd', 'del', 'details',
|
||||||
|
'dfn', 'div', 'dl', 'dt', 'em', 'fieldset', 'figcaption', 'figure', 'footer',
|
||||||
|
'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'i', 'ins', 'kbd',
|
||||||
|
'label', 'legend', 'li', 'map', 'mark', 'meter', 'nav', 'ol', 'output', 'p',
|
||||||
|
'pre', 'progress', 'q', 'rp', 'rt', 'samp', 'section', 'select', 'small',
|
||||||
|
'span', 'strong', 'sub', 'summary', 'sup', 'textarea', 'time', 'ul', 'var',
|
||||||
|
'video'}
|
||||||
|
|
||||||
|
_self_closing_pat = re.compile(bytes(
|
||||||
|
r'<(?P<tag>%s)(?=[\s/])(?P<arg>[^>]*)/>'%('|'.join(aid_able_tags))),
|
||||||
|
re.IGNORECASE)
|
||||||
|
|
||||||
|
def close_self_closing_tags(raw):
|
||||||
|
return _self_closing_pat.sub(br'<\g<tag>\g<arg>></\g<tag>>', raw)
|
||||||
|
|
||||||
|
def path_to_node(node):
|
||||||
|
ans = []
|
||||||
|
parent = node.getparent()
|
||||||
|
while parent is not None:
|
||||||
|
ans.append(parent.index(node))
|
||||||
|
node = parent
|
||||||
|
parent = parent.getparent()
|
||||||
|
return tuple(reversed(ans))
|
||||||
|
|
||||||
|
def node_from_path(root, path):
|
||||||
|
parent = root
|
||||||
|
for idx in path:
|
||||||
|
parent = parent[idx]
|
||||||
|
return parent
|
||||||
|
|
||||||
|
mychr = chr if ispy3 else unichr
|
||||||
|
|
||||||
|
def tostring(raw, **kwargs):
|
||||||
|
''' lxml *sometimes* represents non-ascii characters as hex entities in
|
||||||
|
attribute values. I can't figure out exactly what circumstances cause it.
|
||||||
|
It seems to happen when serializing a part of a larger tree. Since we need
|
||||||
|
serialization to be the same when serializing full and partial trees, we
|
||||||
|
manually replace all hex entities with their unicode codepoints. '''
|
||||||
|
|
||||||
|
xml_declaration = kwargs.pop('xml_declaration', False)
|
||||||
|
encoding = kwargs.pop('encoding', 'UTF-8')
|
||||||
|
kwargs['encoding'] = unicode
|
||||||
|
kwargs['xml_declaration'] = False
|
||||||
|
ans = etree.tostring(raw, **kwargs)
|
||||||
|
if xml_declaration:
|
||||||
|
ans = '<?xml version="1.0" encoding="%s"?>\n'%encoding + ans
|
||||||
|
return re.sub(r'&#x([0-9A-Fa-f]+);', lambda m:mychr(int(m.group(1), 16)),
|
||||||
|
ans).encode(encoding)
|
||||||
|
|
||||||
|
class Chunk(object):
|
||||||
|
|
||||||
|
def __init__(self, raw):
|
||||||
|
self.raw = raw
|
||||||
|
self.starts_tags = []
|
||||||
|
self.ends_tags = []
|
||||||
|
self.insert_pos = None
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.raw)
|
||||||
|
|
||||||
|
def merge(self, chunk):
|
||||||
|
self.raw += chunk.raw
|
||||||
|
self.ends_tags = chunk.ends_tags
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return 'Chunk(len=%r insert_pos=%r starts_tags=%r ends_tags=%r)'%(
|
||||||
|
len(self.raw), self.insert_pos, self.starts_tags, self.ends_tags)
|
||||||
|
|
||||||
|
__str__ = __repr__
|
||||||
|
|
||||||
|
class Skeleton(object):
|
||||||
|
|
||||||
|
def __init__(self, file_number, item, root, chunks):
|
||||||
|
self.file_number, self.item = file_number, item
|
||||||
|
self.chunks = chunks
|
||||||
|
|
||||||
|
self.skeleton = self.render(root)
|
||||||
|
self.body_offset = self.skeleton.find('<body')
|
||||||
|
self.calculate_metrics(root)
|
||||||
|
|
||||||
|
self.calculate_insert_positions()
|
||||||
|
|
||||||
|
def render(self, root):
|
||||||
|
raw = tostring(root, xml_declaration=True)
|
||||||
|
raw = raw.replace(b'<html', bytes('<html xmlns="%s"'%XHTML_NS), 1)
|
||||||
|
return raw
|
||||||
|
|
||||||
|
def calculate_metrics(self, root):
|
||||||
|
Metric = namedtuple('Metric', 'start end')
|
||||||
|
self.metrics = {}
|
||||||
|
for tag in root.xpath('//*[@aid]'):
|
||||||
|
text = (tag.text or '').encode('utf-8')
|
||||||
|
raw = tostring(tag, with_tail=True)
|
||||||
|
start_length = len(raw.partition(b'>')[0]) + len(text) + 1
|
||||||
|
end_length = len(raw.rpartition(b'<')[-1]) + 1
|
||||||
|
self.metrics[tag.get('aid')] = Metric(start_length, end_length)
|
||||||
|
|
||||||
|
def calculate_insert_positions(self):
|
||||||
|
pos = self.body_offset
|
||||||
|
for chunk in self.chunks:
|
||||||
|
for tag in chunk.starts_tags:
|
||||||
|
pos += self.metrics[tag].start
|
||||||
|
chunk.insert_pos = pos
|
||||||
|
pos += len(chunk)
|
||||||
|
for tag in chunk.ends_tags:
|
||||||
|
pos += self.metrics[tag].end
|
||||||
|
|
||||||
|
def rebuild(self):
|
||||||
|
ans = self.skeleton
|
||||||
|
for chunk in self.chunks:
|
||||||
|
i = chunk.insert_pos
|
||||||
|
ans = ans[:i] + chunk.raw + ans[i:]
|
||||||
|
return ans
|
||||||
|
|
||||||
|
class Chunker(object):
|
||||||
|
|
||||||
|
def __init__(self, oeb, data_func):
|
||||||
|
self.oeb, self.log = oeb, oeb.log
|
||||||
|
self.data = data_func
|
||||||
|
|
||||||
|
self.skeletons = []
|
||||||
|
|
||||||
|
# Set this to a list to enable dumping of the original and rebuilt
|
||||||
|
# html files for debugging
|
||||||
|
self.orig_dumps = None
|
||||||
|
|
||||||
|
for i, item in enumerate(self.oeb.spine):
|
||||||
|
root = self.remove_namespaces(self.data(item))
|
||||||
|
body = root.xpath('//body')[0]
|
||||||
|
body.tail = '\n'
|
||||||
|
|
||||||
|
if self.orig_dumps is not None:
|
||||||
|
self.orig_dumps.append(tostring(root, xml_declaration=True,
|
||||||
|
with_tail=True))
|
||||||
|
self.orig_dumps[-1] = close_self_closing_tags(
|
||||||
|
self.orig_dumps[-1].replace(b'<html',
|
||||||
|
bytes('<html xmlns="%s"'%XHTML_NS), 1))
|
||||||
|
|
||||||
|
# First pass: break up document into rendered strings of length no
|
||||||
|
# more than CHUNK_SIZE
|
||||||
|
chunks = []
|
||||||
|
self.step_into_tag(body, chunks)
|
||||||
|
|
||||||
|
# Second pass: Merge neighboring small chunks within the same
|
||||||
|
# skeleton tag so as to have chunks as close to the CHUNK_SIZE as
|
||||||
|
# possible.
|
||||||
|
chunks = self.merge_small_chunks(chunks)
|
||||||
|
|
||||||
|
# Third pass: Create the skeleton and calculate the insert position
|
||||||
|
# for all chunks
|
||||||
|
self.skeletons.append(Skeleton(i, item, root, chunks))
|
||||||
|
|
||||||
|
if self.orig_dumps:
|
||||||
|
self.dump()
|
||||||
|
|
||||||
|
def remove_namespaces(self, root):
|
||||||
|
lang = None
|
||||||
|
for attr, val in root.attrib.iteritems():
|
||||||
|
if attr.rpartition('}')[-1] == 'lang':
|
||||||
|
lang = val
|
||||||
|
|
||||||
|
# Remove all namespace information from the tree. This means namespaced
|
||||||
|
# tags have their namespaces removed and all namespace declarations are
|
||||||
|
# removed. We have to do this manual cloning of the tree as there is no
|
||||||
|
# other way to remove namespace declarations in lxml. This is done so
|
||||||
|
# that serialization creates clean HTML 5 markup with no namespaces. We
|
||||||
|
# insert the XHTML namespace manually after serialization. The
|
||||||
|
# preceding layers should have removed svg and any other non html
|
||||||
|
# namespaced tags.
|
||||||
|
attrib = {'lang':lang} if lang else {}
|
||||||
|
nroot = etree.Element('html', attrib=attrib)
|
||||||
|
nroot.text = root.text
|
||||||
|
nroot.tail = '\n'
|
||||||
|
|
||||||
|
for tag in root.iterdescendants(etree.Element):
|
||||||
|
# We are ignoring all non tag entities in the tree
|
||||||
|
# like comments and processing instructions, as they make the
|
||||||
|
# chunking code even harder, for minimal gain.
|
||||||
|
elem = nroot.makeelement(tag.tag.rpartition('}')[-1],
|
||||||
|
attrib={k.rpartition('}')[-1]:v for k, v in
|
||||||
|
tag.attrib.iteritems()})
|
||||||
|
elem.text, elem.tail = tag.text, tag.tail
|
||||||
|
parent = node_from_path(nroot, path_to_node(tag.getparent()))
|
||||||
|
parent.append(elem)
|
||||||
|
|
||||||
|
return nroot
|
||||||
|
|
||||||
|
|
||||||
|
def step_into_tag(self, tag, chunks):
|
||||||
|
aid = tag.get('aid')
|
||||||
|
|
||||||
|
first_chunk_idx = len(chunks)
|
||||||
|
|
||||||
|
# First handle any text
|
||||||
|
if tag.text and tag.text.strip(): # Leave pure whitespace in the skel
|
||||||
|
chunks.extend(self.chunk_up_text(tag.text))
|
||||||
|
tag.text = None
|
||||||
|
|
||||||
|
# Now loop over children
|
||||||
|
for child in list(tag):
|
||||||
|
raw = tostring(child, with_tail=False)
|
||||||
|
raw = close_self_closing_tags(raw)
|
||||||
|
if len(raw) > CHUNK_SIZE and child.get('aid', None):
|
||||||
|
self.step_into_tag(child, chunks)
|
||||||
|
if child.tail and child.tail.strip(): # Leave pure whitespace
|
||||||
|
chunks.extend(self.chunk_up_text(child.tail))
|
||||||
|
child.tail = None
|
||||||
|
else:
|
||||||
|
if len(raw) > CHUNK_SIZE:
|
||||||
|
self.log.warn('Tag %s has no aid and a too large chunk'
|
||||||
|
' size. Adding anyway.'%child.tag)
|
||||||
|
chunks.append(Chunk(raw))
|
||||||
|
if child.tail:
|
||||||
|
chunks.extend(self.chunk_up_text(child.tail))
|
||||||
|
tag.remove(child)
|
||||||
|
|
||||||
|
if len(chunks) <= first_chunk_idx and chunks:
|
||||||
|
raise ValueError('Stepped into a tag that generated no chunks.')
|
||||||
|
|
||||||
|
# Mark the first and last chunks of this tag
|
||||||
|
if chunks:
|
||||||
|
chunks[first_chunk_idx].starts_tags.append(aid)
|
||||||
|
chunks[-1].ends_tags.append(aid)
|
||||||
|
|
||||||
|
def chunk_up_text(self, text):
|
||||||
|
text = text.encode('utf-8')
|
||||||
|
ans = []
|
||||||
|
|
||||||
|
def split_multibyte_text(raw):
|
||||||
|
if len(raw) <= CHUNK_SIZE:
|
||||||
|
return raw, b''
|
||||||
|
l = raw[:CHUNK_SIZE]
|
||||||
|
l = l.decode('utf-8', 'ignore').encode('utf-8')
|
||||||
|
return l, raw[len(l):]
|
||||||
|
|
||||||
|
start, rest = split_multibyte_text(text)
|
||||||
|
ans.append(start)
|
||||||
|
while rest:
|
||||||
|
start, rest = split_multibyte_text(rest)
|
||||||
|
ans.append(b'<span class="AmznBigTextBlock">' + start + '</span>')
|
||||||
|
return [Chunk(x) for x in ans]
|
||||||
|
|
||||||
|
def merge_small_chunks(self, chunks):
|
||||||
|
ans = chunks[:1]
|
||||||
|
for chunk in chunks[1:]:
|
||||||
|
prev = ans[-1]
|
||||||
|
if (
|
||||||
|
chunk.starts_tags or # Starts a tag in the skel
|
||||||
|
len(chunk) + len(prev) > CHUNK_SIZE or # Too large
|
||||||
|
prev.ends_tags # Prev chunk ended a tag
|
||||||
|
):
|
||||||
|
ans.append(chunk)
|
||||||
|
else:
|
||||||
|
prev.merge(chunk)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def dump(self):
|
||||||
|
import tempfile, shutil, os
|
||||||
|
tdir = os.path.join(tempfile.gettempdir(), 'skeleton')
|
||||||
|
self.log('Skeletons dumped to:', tdir)
|
||||||
|
if os.path.exists(tdir):
|
||||||
|
shutil.rmtree(tdir)
|
||||||
|
orig = os.path.join(tdir, 'orig')
|
||||||
|
rebuilt = os.path.join(tdir, 'rebuilt')
|
||||||
|
for x in (orig, rebuilt):
|
||||||
|
os.makedirs(x)
|
||||||
|
for i, skeleton in enumerate(self.skeletons):
|
||||||
|
with open(os.path.join(orig, '%04d.html'%i), 'wb') as f:
|
||||||
|
f.write(self.orig_dumps[i])
|
||||||
|
with open(os.path.join(rebuilt, '%04d.html'%i), 'wb') as f:
|
||||||
|
f.write(skeleton.rebuild())
|
||||||
|
|
@ -357,7 +357,21 @@ def urlnormalize(href):
|
|||||||
parts = (urlquote(part) for part in parts)
|
parts = (urlquote(part) for part in parts)
|
||||||
return urlunparse(parts)
|
return urlunparse(parts)
|
||||||
|
|
||||||
|
def extract(elem):
|
||||||
|
"""
|
||||||
|
Removes this element from the tree, including its children and
|
||||||
|
text. The tail text is joined to the previous element or
|
||||||
|
parent.
|
||||||
|
"""
|
||||||
|
parent = elem.getparent()
|
||||||
|
if parent is not None:
|
||||||
|
if elem.tail:
|
||||||
|
previous = elem.getprevious()
|
||||||
|
if previous is None:
|
||||||
|
parent.text = (parent.text or '') + elem.tail
|
||||||
|
else:
|
||||||
|
previous.tail = (previous.tail or '') + elem.tail
|
||||||
|
parent.remove(elem)
|
||||||
|
|
||||||
class DummyHandler(logging.Handler):
|
class DummyHandler(logging.Handler):
|
||||||
|
|
||||||
|
@ -367,3 +367,17 @@ class EbookIterator(object):
|
|||||||
for x in self.delete_on_exit:
|
for x in self.delete_on_exit:
|
||||||
if os.path.exists(x):
|
if os.path.exists(x):
|
||||||
os.remove(x)
|
os.remove(x)
|
||||||
|
|
||||||
|
def get_preprocess_html(path_to_ebook, output):
|
||||||
|
from calibre.ebooks.conversion.preprocess import HTMLPreProcessor
|
||||||
|
iterator = EbookIterator(path_to_ebook)
|
||||||
|
iterator.__enter__(only_input_plugin=True)
|
||||||
|
preprocessor = HTMLPreProcessor(None, False)
|
||||||
|
with open(output, 'wb') as out:
|
||||||
|
for path in iterator.spine:
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
html = f.read().decode('utf-8', 'replace')
|
||||||
|
html = preprocessor(html, get_preprocess_html=True)
|
||||||
|
out.write(html.encode('utf-8'))
|
||||||
|
out.write(b'\n\n' + b'-'*80 + b'\n\n')
|
||||||
|
|
||||||
|
@ -731,7 +731,7 @@ class Style(object):
|
|||||||
parent = self._get_parent()
|
parent = self._get_parent()
|
||||||
if parent is not None:
|
if parent is not None:
|
||||||
pcss = parent._style.get('text-decoration', None)
|
pcss = parent._style.get('text-decoration', None)
|
||||||
if css in ('none', None) and pcss not in (None, 'none'):
|
if css in ('none', None, 'inherit') and pcss not in (None, 'none'):
|
||||||
return pcss
|
return pcss
|
||||||
return css
|
return css
|
||||||
|
|
||||||
|
11
src/calibre/ebooks/pdb/haodoo/__init__.py
Normal file
11
src/calibre/ebooks/pdb/haodoo/__init__.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
|
print_function)
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2012, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -641,6 +641,26 @@ def choose_files(window, name, title,
|
|||||||
return fd.get_files()
|
return fd.get_files()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def choose_save_file(window, name, title, filters=[], all_files=True):
|
||||||
|
'''
|
||||||
|
Ask user to choose a file to save to. Can be a non-existent file.
|
||||||
|
:param filters: list of allowable extensions. Each element of the list
|
||||||
|
must be a 2-tuple with first element a string describing
|
||||||
|
the type of files to be filtered and second element a list
|
||||||
|
of extensions.
|
||||||
|
:param all_files: If True add All files to filters.
|
||||||
|
'''
|
||||||
|
mode = QFileDialog.AnyFile
|
||||||
|
fd = FileDialog(title=title, name=name, filters=filters,
|
||||||
|
parent=window, add_all_files_filter=all_files, mode=mode)
|
||||||
|
fd.setParent(None)
|
||||||
|
ans = None
|
||||||
|
if fd.accepted:
|
||||||
|
ans = fd.get_files()
|
||||||
|
if ans:
|
||||||
|
ans = ans[0]
|
||||||
|
return ans
|
||||||
|
|
||||||
def choose_images(window, name, title, select_only_single_file=True):
|
def choose_images(window, name, title, select_only_single_file=True):
|
||||||
mode = QFileDialog.ExistingFile if select_only_single_file else QFileDialog.ExistingFiles
|
mode = QFileDialog.ExistingFile if select_only_single_file else QFileDialog.ExistingFiles
|
||||||
fd = FileDialog(title=title, name=name,
|
fd = FileDialog(title=title, name=name,
|
||||||
|
@ -12,7 +12,7 @@ from PyQt4.Qt import (QMenu, Qt, QInputDialog, QToolButton, QDialog,
|
|||||||
QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QIcon, QSize,
|
QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QIcon, QSize,
|
||||||
QCoreApplication)
|
QCoreApplication)
|
||||||
|
|
||||||
from calibre import isbytestring
|
from calibre import isbytestring, sanitize_file_name_unicode
|
||||||
from calibre.constants import filesystem_encoding, iswindows
|
from calibre.constants import filesystem_encoding, iswindows
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
from calibre.gui2 import (gprefs, warning_dialog, Dispatcher, error_dialog,
|
from calibre.gui2 import (gprefs, warning_dialog, Dispatcher, error_dialog,
|
||||||
@ -275,7 +275,7 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
'<p>'+_('Choose a new name for the library <b>%s</b>. ')%name +
|
'<p>'+_('Choose a new name for the library <b>%s</b>. ')%name +
|
||||||
'<p>'+_('Note that the actual library folder will be renamed.'),
|
'<p>'+_('Note that the actual library folder will be renamed.'),
|
||||||
text=name)
|
text=name)
|
||||||
newname = unicode(newname)
|
newname = sanitize_file_name_unicode(unicode(newname))
|
||||||
if not ok or not newname or newname == name:
|
if not ok or not newname or newname == name:
|
||||||
return
|
return
|
||||||
newloc = os.path.join(base, newname)
|
newloc = os.path.join(base, newname)
|
||||||
|
@ -233,19 +233,22 @@ class Widget(QWidget):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def setup_help(self, help_provider):
|
def setup_help(self, help_provider):
|
||||||
w = textwrap.TextWrapper(80)
|
|
||||||
for name in self._options:
|
for name in self._options:
|
||||||
g = getattr(self, 'opt_'+name, None)
|
g = getattr(self, 'opt_'+name, None)
|
||||||
if g is None:
|
if g is None:
|
||||||
continue
|
continue
|
||||||
help = help_provider(name)
|
help = help_provider(name)
|
||||||
if not help: continue
|
if not help: continue
|
||||||
|
if self.setup_help_handler(g, help): continue
|
||||||
g._help = help
|
g._help = help
|
||||||
htext = u'<div>%s</div>'%prepare_string_for_xml(
|
self.setup_widget_help(g)
|
||||||
'\n'.join(w.wrap(help)))
|
|
||||||
g.setToolTip(htext)
|
def setup_widget_help(self, g):
|
||||||
g.setWhatsThis(htext)
|
w = textwrap.TextWrapper(80)
|
||||||
g.__class__.enterEvent = lambda obj, event: self.set_help(getattr(obj, '_help', obj.toolTip()))
|
htext = u'<div>%s</div>'%prepare_string_for_xml('\n'.join(w.wrap(g._help)))
|
||||||
|
g.setToolTip(htext)
|
||||||
|
g.setWhatsThis(htext)
|
||||||
|
g.__class__.enterEvent = lambda obj, event: self.set_help(getattr(obj, '_help', obj.toolTip()))
|
||||||
|
|
||||||
|
|
||||||
def set_value_handler(self, g, val):
|
def set_value_handler(self, g, val):
|
||||||
@ -261,6 +264,9 @@ class Widget(QWidget):
|
|||||||
def post_get_value(self, g):
|
def post_get_value(self, g):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def setup_help_handler(self, g, help):
|
||||||
|
return False
|
||||||
|
|
||||||
def break_cycles(self):
|
def break_cycles(self):
|
||||||
self.db = None
|
self.db = None
|
||||||
|
|
||||||
|
@ -6,17 +6,16 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import re, os
|
import re, os
|
||||||
|
|
||||||
from PyQt4.QtCore import SIGNAL, Qt, pyqtSignal
|
from PyQt4.Qt import (QDialog, QWidget, QDialogButtonBox,
|
||||||
from PyQt4.QtGui import (QDialog, QWidget, QDialogButtonBox,
|
QBrush, QTextCursor, QTextEdit, QByteArray, Qt, pyqtSignal)
|
||||||
QBrush, QTextCursor, QTextEdit)
|
|
||||||
|
|
||||||
from calibre.gui2.convert.regex_builder_ui import Ui_RegexBuilder
|
from calibre.gui2.convert.regex_builder_ui import Ui_RegexBuilder
|
||||||
from calibre.gui2.convert.xexp_edit_ui import Ui_Form as Ui_Edit
|
from calibre.gui2.convert.xexp_edit_ui import Ui_Form as Ui_Edit
|
||||||
from calibre.gui2 import error_dialog, choose_files
|
from calibre.gui2 import error_dialog, choose_files, gprefs
|
||||||
from calibre.ebooks.oeb.iterator import EbookIterator
|
|
||||||
from calibre.ebooks.conversion.preprocess import HTMLPreProcessor
|
|
||||||
from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
||||||
from calibre.constants import iswindows
|
from calibre.constants import iswindows
|
||||||
|
from calibre.utils.ipc.simple_worker import fork_job, WorkerError
|
||||||
|
from calibre.ptempfile import TemporaryFile
|
||||||
|
|
||||||
class RegexBuilder(QDialog, Ui_RegexBuilder):
|
class RegexBuilder(QDialog, Ui_RegexBuilder):
|
||||||
|
|
||||||
@ -28,7 +27,8 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
|
|||||||
self.regex_valid()
|
self.regex_valid()
|
||||||
|
|
||||||
if not db or not book_id:
|
if not db or not book_id:
|
||||||
self.button_box.addButton(QDialogButtonBox.Open)
|
button = self.button_box.addButton(QDialogButtonBox.Open)
|
||||||
|
button.clicked.connect(self.open_clicked)
|
||||||
elif not doc and not self.select_format(db, book_id):
|
elif not doc and not self.select_format(db, book_id):
|
||||||
self.cancelled = True
|
self.cancelled = True
|
||||||
return
|
return
|
||||||
@ -37,13 +37,23 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
|
|||||||
self.preview.setPlainText(doc)
|
self.preview.setPlainText(doc)
|
||||||
|
|
||||||
self.cancelled = False
|
self.cancelled = False
|
||||||
self.connect(self.button_box, SIGNAL('clicked(QAbstractButton*)'), self.button_clicked)
|
self.button_box.accepted.connect(self.accept)
|
||||||
self.connect(self.regex, SIGNAL('textChanged(QString)'), self.regex_valid)
|
self.regex.textChanged[str].connect(self.regex_valid)
|
||||||
self.connect(self.test, SIGNAL('clicked()'), self.do_test)
|
for src, slot in (('test', 'do'), ('previous', 'goto'), ('next',
|
||||||
self.connect(self.previous, SIGNAL('clicked()'), self.goto_previous)
|
'goto')):
|
||||||
self.connect(self.next, SIGNAL('clicked()'), self.goto_next)
|
getattr(self, src).clicked.connect(getattr(self, '%s_%s'%(slot,
|
||||||
|
src)))
|
||||||
|
self.test.setDefault(True)
|
||||||
|
|
||||||
self.match_locs = []
|
self.match_locs = []
|
||||||
|
geom = gprefs.get('regex_builder_geometry', None)
|
||||||
|
if geom is not None:
|
||||||
|
self.restoreGeometry(QByteArray(geom))
|
||||||
|
self.finished.connect(self.save_state)
|
||||||
|
|
||||||
|
def save_state(self, result):
|
||||||
|
geom = bytearray(self.saveGeometry())
|
||||||
|
gprefs['regex_builder_geometry'] = geom
|
||||||
|
|
||||||
def regex_valid(self):
|
def regex_valid(self):
|
||||||
regex = unicode(self.regex.text())
|
regex = unicode(self.regex.text())
|
||||||
@ -129,6 +139,8 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
|
|||||||
d.exec_()
|
d.exec_()
|
||||||
if d.result() == QDialog.Accepted:
|
if d.result() == QDialog.Accepted:
|
||||||
format = d.format()
|
format = d.format()
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
if not format:
|
if not format:
|
||||||
error_dialog(self, _('No formats available'),
|
error_dialog(self, _('No formats available'),
|
||||||
@ -159,25 +171,27 @@ class RegexBuilder(QDialog, Ui_RegexBuilder):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def open_book(self, pathtoebook):
|
def open_book(self, pathtoebook):
|
||||||
self.iterator = EbookIterator(pathtoebook)
|
with TemporaryFile('_prepprocess_gui') as tf:
|
||||||
self.iterator.__enter__(only_input_plugin=True)
|
err_msg = _('Failed to generate markup for testing. Click '
|
||||||
text = [u'']
|
'"Show Details" to learn more.')
|
||||||
preprocessor = HTMLPreProcessor(None, False)
|
try:
|
||||||
for path in self.iterator.spine:
|
fork_job('calibre.ebooks.oeb.iterator', 'get_preprocess_html',
|
||||||
with open(path, 'rb') as f:
|
(pathtoebook, tf))
|
||||||
html = f.read().decode('utf-8', 'replace')
|
except WorkerError as e:
|
||||||
html = preprocessor(html, get_preprocess_html=True)
|
return error_dialog(self, _('Failed to generate preview'),
|
||||||
text.append(html)
|
err_msg, det_msg=e.orig_tb, show=True)
|
||||||
self.preview.setPlainText('\n---\n'.join(text))
|
except:
|
||||||
|
import traceback
|
||||||
|
return error_dialog(self, _('Failed to generate preview'),
|
||||||
|
err_msg, det_msg=traceback.format_exc(), show=True)
|
||||||
|
with open(tf, 'rb') as f:
|
||||||
|
self.preview.setPlainText(f.read().decode('utf-8'))
|
||||||
|
|
||||||
def button_clicked(self, button):
|
def open_clicked(self):
|
||||||
if button == self.button_box.button(QDialogButtonBox.Open):
|
files = choose_files(self, 'regexp tester dialog', _('Open book'),
|
||||||
files = choose_files(self, 'regexp tester dialog', _('Open book'),
|
select_only_single_file=True)
|
||||||
select_only_single_file=True)
|
if files:
|
||||||
if files:
|
self.open_book(files[0])
|
||||||
self.open_book(files[0])
|
|
||||||
if button == self.button_box.button(QDialogButtonBox.Ok):
|
|
||||||
self.accept()
|
|
||||||
|
|
||||||
def doc(self):
|
def doc(self):
|
||||||
return unicode(self.preview.toPlainText())
|
return unicode(self.preview.toPlainText())
|
||||||
@ -194,7 +208,7 @@ class RegexEdit(QWidget, Ui_Edit):
|
|||||||
self.db = None
|
self.db = None
|
||||||
self.doc_cache = None
|
self.doc_cache = None
|
||||||
|
|
||||||
self.connect(self.button, SIGNAL('clicked()'), self.builder)
|
self.button.clicked.connect(self.builder)
|
||||||
|
|
||||||
def builder(self):
|
def builder(self):
|
||||||
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
||||||
@ -226,6 +240,9 @@ class RegexEdit(QWidget, Ui_Edit):
|
|||||||
def set_doc(self, doc):
|
def set_doc(self, doc):
|
||||||
self.doc_cache = doc
|
self.doc_cache = doc
|
||||||
|
|
||||||
|
def set_regex(self, regex):
|
||||||
|
self.edit.setText(regex)
|
||||||
|
|
||||||
def break_cycles(self):
|
def break_cycles(self):
|
||||||
self.db = self.doc_cache = None
|
self.db = self.doc_cache = None
|
||||||
|
|
||||||
@ -237,5 +254,8 @@ class RegexEdit(QWidget, Ui_Edit):
|
|||||||
def regex(self):
|
def regex(self):
|
||||||
return self.text
|
return self.text
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.edit.clear()
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
return True
|
return True
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>580</width>
|
<width>882</width>
|
||||||
<height>503</height>
|
<height>605</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
__license__ = 'GPL 3'
|
__license__ = 'GPL 3'
|
||||||
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
|
__copyright__ = '2011, John Schember <john@nachtimwald.com>, 2012 Eli Algranti <idea00@hotmail.com>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import re
|
import re, codecs, json
|
||||||
|
|
||||||
|
from PyQt4.Qt import Qt, QTableWidgetItem
|
||||||
|
|
||||||
from calibre.gui2.convert.search_and_replace_ui import Ui_Form
|
from calibre.gui2.convert.search_and_replace_ui import Ui_Form
|
||||||
from calibre.gui2.convert import Widget
|
from calibre.gui2.convert import Widget
|
||||||
from calibre.gui2 import error_dialog
|
from calibre.gui2 import (error_dialog, question_dialog, choose_files,
|
||||||
|
choose_save_file)
|
||||||
|
from calibre import as_unicode
|
||||||
|
|
||||||
class SearchAndReplaceWidget(Widget, Ui_Form):
|
class SearchAndReplaceWidget(Widget, Ui_Form):
|
||||||
|
|
||||||
@ -19,26 +23,115 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
|
|||||||
STRIP_TEXT_FIELDS = False
|
STRIP_TEXT_FIELDS = False
|
||||||
|
|
||||||
def __init__(self, parent, get_option, get_help, db=None, book_id=None):
|
def __init__(self, parent, get_option, get_help, db=None, book_id=None):
|
||||||
|
# Dummy attributes to fool the Widget() option handler code. We handle
|
||||||
|
# everything in our *handler methods.
|
||||||
|
for i in range(1, 4):
|
||||||
|
x = 'sr%d_'%i
|
||||||
|
for y in ('search', 'replace'):
|
||||||
|
z = x + y
|
||||||
|
setattr(self, 'opt_'+z, z)
|
||||||
|
self.opt_search_replace = 'search_replace'
|
||||||
|
|
||||||
Widget.__init__(self, parent,
|
Widget.__init__(self, parent,
|
||||||
['sr1_search', 'sr1_replace',
|
['search_replace',
|
||||||
|
'sr1_search', 'sr1_replace',
|
||||||
'sr2_search', 'sr2_replace',
|
'sr2_search', 'sr2_replace',
|
||||||
'sr3_search', 'sr3_replace']
|
'sr3_search', 'sr3_replace']
|
||||||
)
|
)
|
||||||
self.db, self.book_id = db, book_id
|
self.db, self.book_id = db, book_id
|
||||||
self.initialize_options(get_option, get_help, db, book_id)
|
|
||||||
self.opt_sr1_search.set_msg(_('&Search Regular Expression'))
|
|
||||||
self.opt_sr1_search.set_book_id(book_id)
|
|
||||||
self.opt_sr1_search.set_db(db)
|
|
||||||
self.opt_sr2_search.set_msg(_('&Search Regular Expression'))
|
|
||||||
self.opt_sr2_search.set_book_id(book_id)
|
|
||||||
self.opt_sr2_search.set_db(db)
|
|
||||||
self.opt_sr3_search.set_msg(_('&Search Regular Expression'))
|
|
||||||
self.opt_sr3_search.set_book_id(book_id)
|
|
||||||
self.opt_sr3_search.set_db(db)
|
|
||||||
|
|
||||||
self.opt_sr1_search.doc_update.connect(self.update_doc)
|
self.sr_search.set_msg(_('&Search Regular Expression'))
|
||||||
self.opt_sr2_search.doc_update.connect(self.update_doc)
|
self.sr_search.set_book_id(book_id)
|
||||||
self.opt_sr3_search.doc_update.connect(self.update_doc)
|
self.sr_search.set_db(db)
|
||||||
|
|
||||||
|
self.sr_search.doc_update.connect(self.update_doc)
|
||||||
|
|
||||||
|
proto = QTableWidgetItem()
|
||||||
|
proto.setFlags(Qt.ItemFlags(Qt.ItemIsSelectable + Qt.ItemIsEnabled))
|
||||||
|
self.search_replace.setItemPrototype(proto)
|
||||||
|
self.search_replace.setColumnCount(2)
|
||||||
|
self.search_replace.setColumnWidth(0, 300)
|
||||||
|
self.search_replace.setColumnWidth(1, 300)
|
||||||
|
self.search_replace.setHorizontalHeaderLabels([
|
||||||
|
_('Search Regular Expression'), _('Replacement Text')])
|
||||||
|
|
||||||
|
self.sr_add.clicked.connect(self.sr_add_clicked)
|
||||||
|
self.sr_change.clicked.connect(self.sr_change_clicked)
|
||||||
|
self.sr_remove.clicked.connect(self.sr_remove_clicked)
|
||||||
|
self.sr_load.clicked.connect(self.sr_load_clicked)
|
||||||
|
self.sr_save.clicked.connect(self.sr_save_clicked)
|
||||||
|
self.search_replace.currentCellChanged.connect(self.sr_currentCellChanged)
|
||||||
|
|
||||||
|
self.initialize_options(get_option, get_help, db, book_id)
|
||||||
|
|
||||||
|
def sr_add_clicked(self):
|
||||||
|
if self.sr_search.regex:
|
||||||
|
row = self.sr_add_row(self.sr_search.regex, self.sr_replace.text())
|
||||||
|
self.search_replace.setCurrentCell(row, 0)
|
||||||
|
|
||||||
|
def sr_add_row(self, search, replace):
|
||||||
|
row = self.search_replace.rowCount()
|
||||||
|
self.search_replace.setRowCount(row + 1)
|
||||||
|
newItem = self.search_replace.itemPrototype().clone()
|
||||||
|
newItem.setText(search)
|
||||||
|
self.search_replace.setItem(row,0, newItem)
|
||||||
|
newItem = self.search_replace.itemPrototype().clone()
|
||||||
|
newItem.setText(replace)
|
||||||
|
self.search_replace.setItem(row,1, newItem)
|
||||||
|
return row
|
||||||
|
|
||||||
|
def sr_change_clicked(self):
|
||||||
|
row = self.search_replace.currentRow()
|
||||||
|
if row >= 0:
|
||||||
|
self.search_replace.item(row, 0).setText(self.sr_search.regex)
|
||||||
|
self.search_replace.item(row, 1).setText(self.sr_replace.text())
|
||||||
|
self.search_replace.setCurrentCell(row, 0)
|
||||||
|
|
||||||
|
def sr_remove_clicked(self):
|
||||||
|
row = self.search_replace.currentRow()
|
||||||
|
if row >= 0:
|
||||||
|
self.search_replace.removeRow(row)
|
||||||
|
self.search_replace.setCurrentCell(row-1, 0)
|
||||||
|
self.sr_search.clear()
|
||||||
|
self.sr_replace.clear()
|
||||||
|
|
||||||
|
def sr_load_clicked(self):
|
||||||
|
files = choose_files(self, 'sr_saved_patterns',
|
||||||
|
_('Load Calibre Search-Replace definitions file'),
|
||||||
|
filters=[
|
||||||
|
(_('Calibre Search-Replace definitions file'), ['csr'])
|
||||||
|
], select_only_single_file=True)
|
||||||
|
if files:
|
||||||
|
from calibre.ebooks.conversion.cli import read_sr_patterns
|
||||||
|
try:
|
||||||
|
self.set_value(self.opt_search_replace,
|
||||||
|
read_sr_patterns(files[0]))
|
||||||
|
except Exception as e:
|
||||||
|
error_dialog(self, _('Failed to read'),
|
||||||
|
_('Failed to load patterns from %s, click Show details'
|
||||||
|
' to learn more.')%files[0], det_msg=as_unicode(e),
|
||||||
|
show=True)
|
||||||
|
|
||||||
|
def sr_save_clicked(self):
|
||||||
|
filename = choose_save_file(self, 'sr_saved_patterns',
|
||||||
|
_('Save Calibre Search-Replace definitions file'),
|
||||||
|
filters=[
|
||||||
|
(_('Calibre Search-Replace definitions file'), ['csr'])
|
||||||
|
])
|
||||||
|
if filename:
|
||||||
|
with codecs.open(filename, 'w', 'utf-8') as f:
|
||||||
|
for search, replace in self.get_definitions():
|
||||||
|
f.write(search + u'\n' + replace + u'\n\n')
|
||||||
|
|
||||||
|
def sr_currentCellChanged(self, row, column, previousRow, previousColumn) :
|
||||||
|
if row >= 0:
|
||||||
|
self.sr_change.setEnabled(True)
|
||||||
|
self.sr_remove.setEnabled(True)
|
||||||
|
self.sr_search.set_regex(self.search_replace.item(row, 0).text())
|
||||||
|
self.sr_replace.setText(self.search_replace.item(row, 1).text())
|
||||||
|
else:
|
||||||
|
self.sr_change.setEnabled(False)
|
||||||
|
self.sr_remove.setEnabled(False)
|
||||||
|
|
||||||
def break_cycles(self):
|
def break_cycles(self):
|
||||||
Widget.break_cycles(self)
|
Widget.break_cycles(self)
|
||||||
@ -49,29 +142,128 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
d(self.opt_sr1_search)
|
d(self.sr_search)
|
||||||
d(self.opt_sr2_search)
|
|
||||||
d(self.opt_sr3_search)
|
|
||||||
|
|
||||||
self.opt_sr1_search.break_cycles()
|
self.sr_search.break_cycles()
|
||||||
self.opt_sr2_search.break_cycles()
|
|
||||||
self.opt_sr3_search.break_cycles()
|
|
||||||
|
|
||||||
def update_doc(self, doc):
|
def update_doc(self, doc):
|
||||||
self.opt_sr1_search.set_doc(doc)
|
self.sr_search.set_doc(doc)
|
||||||
self.opt_sr2_search.set_doc(doc)
|
|
||||||
self.opt_sr3_search.set_doc(doc)
|
|
||||||
|
|
||||||
def pre_commit_check(self):
|
def pre_commit_check(self):
|
||||||
for x in ('sr1_search', 'sr2_search', 'sr3_search'):
|
definitions = self.get_definitions()
|
||||||
x = getattr(self, 'opt_'+x)
|
|
||||||
|
# Verify the search/replace in the edit widgets has been
|
||||||
|
# included to the list of search/replace definitions
|
||||||
|
|
||||||
|
edit_search = self.sr_search.regex
|
||||||
|
|
||||||
|
if edit_search:
|
||||||
|
edit_replace = unicode(self.sr_replace.text())
|
||||||
|
found = False
|
||||||
|
for search, replace in definitions:
|
||||||
|
if search == edit_search and replace == edit_replace:
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
if not found and not question_dialog(self,
|
||||||
|
_('Unused Search & Replace definition'),
|
||||||
|
_('The search / replace definition being edited '
|
||||||
|
' has not been added to the list of definitions. '
|
||||||
|
'Do you wish to continue with the conversion '
|
||||||
|
'(the definition will not be used)?')):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Verify all search expressions are valid
|
||||||
|
for search, replace in definitions:
|
||||||
try:
|
try:
|
||||||
pat = unicode(x.regex)
|
re.compile(search)
|
||||||
re.compile(pat)
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
error_dialog(self, _('Invalid regular expression'),
|
error_dialog(self, _('Invalid regular expression'),
|
||||||
_('Invalid regular expression: %s')%err, show=True)
|
_('Invalid regular expression: %s')%err, show=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Options handling
|
||||||
|
|
||||||
|
def connect_gui_obj_handler(self, g, slot):
|
||||||
|
if g is self.opt_search_replace:
|
||||||
|
self.search_replace.cellChanged.connect(slot)
|
||||||
|
|
||||||
|
def get_value_handler(self, g):
|
||||||
|
if g is self.opt_search_replace:
|
||||||
|
return json.dumps(self.get_definitions())
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_definitions(self):
|
||||||
|
ans = []
|
||||||
|
for row in xrange(0, self.search_replace.rowCount()):
|
||||||
|
colItems = []
|
||||||
|
for col in xrange(0, self.search_replace.columnCount()):
|
||||||
|
colItems.append(unicode(self.search_replace.item(row, col).text()))
|
||||||
|
ans.append(colItems)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def set_value_handler(self, g, val):
|
||||||
|
if g is not self.opt_search_replace:
|
||||||
|
return True
|
||||||
|
|
||||||
|
try:
|
||||||
|
rowItems = json.loads(val)
|
||||||
|
if not isinstance(rowItems, list):
|
||||||
|
rowItems = []
|
||||||
|
except:
|
||||||
|
rowItems = []
|
||||||
|
|
||||||
|
if len(rowItems) == 0:
|
||||||
|
self.search_replace.clearContents()
|
||||||
|
|
||||||
|
self.search_replace.setRowCount(len(rowItems))
|
||||||
|
|
||||||
|
for row, colItems in enumerate(rowItems):
|
||||||
|
for col, cellValue in enumerate(colItems):
|
||||||
|
newItem = self.search_replace.itemPrototype().clone()
|
||||||
|
newItem.setText(cellValue)
|
||||||
|
self.search_replace.setItem(row,col, newItem)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def apply_recommendations(self, recs):
|
||||||
|
'''
|
||||||
|
Handle the legacy sr* options that may have been previously saved. They
|
||||||
|
are applied only if the new search_replace option has not been set in
|
||||||
|
recs.
|
||||||
|
'''
|
||||||
|
new_val = None
|
||||||
|
legacy = {}
|
||||||
|
rest = {}
|
||||||
|
for name, val in recs.items():
|
||||||
|
if name == 'search_replace':
|
||||||
|
new_val = val
|
||||||
|
if name in getattr(recs, 'disabled_options', []):
|
||||||
|
self.search_replace.setDisabled(True)
|
||||||
|
elif name.startswith('sr'):
|
||||||
|
legacy[name] = val if val else ''
|
||||||
|
else:
|
||||||
|
rest[name] = val
|
||||||
|
|
||||||
|
if rest:
|
||||||
|
super(SearchAndReplaceWidget, self).apply_recommendations(rest)
|
||||||
|
|
||||||
|
self.set_value(self.opt_search_replace, None)
|
||||||
|
if new_val is None and legacy:
|
||||||
|
for i in range(1, 4):
|
||||||
|
x = 'sr%d'%i
|
||||||
|
s, r = x+'_search', x+'_replace'
|
||||||
|
s, r = legacy.get(s, ''), legacy.get(r, '')
|
||||||
|
if s:
|
||||||
|
self.sr_add_row(s, r)
|
||||||
|
if new_val is not None:
|
||||||
|
self.set_value(self.opt_search_replace, new_val)
|
||||||
|
|
||||||
|
def setup_help_handler(self, g, help):
|
||||||
|
if g is self.opt_search_replace:
|
||||||
|
self.search_replace._help = _(
|
||||||
|
'The list of search/replace definitions that will be applied '
|
||||||
|
'to this conversion.')
|
||||||
|
self.setup_widget_help(self.search_replace)
|
||||||
|
return True
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>468</width>
|
<width>667</width>
|
||||||
<height>451</height>
|
<height>451</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -32,14 +32,14 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>First expression</string>
|
<string>Search/Replace Definition Edit</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<property name="sizeConstraint">
|
<property name="sizeConstraint">
|
||||||
<enum>QLayout::SetMinimumSize</enum>
|
<enum>QLayout::SetMinimumSize</enum>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="RegexEdit" name="opt_sr1_search" native="true">
|
<widget class="RegexEdit" name="sr_search" native="true">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -60,12 +60,12 @@
|
|||||||
<string>&Replacement Text</string>
|
<string>&Replacement Text</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="buddy">
|
||||||
<cstring>opt_sr1_replace</cstring>
|
<cstring>sr_replace</cstring>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLineEdit" name="opt_sr1_replace">
|
<widget class="QLineEdit" name="sr_replace">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -78,117 +78,98 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<property name="sizePolicy">
|
<property name="spacing">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<number>-1</number>
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="leftMargin">
|
||||||
<string>Second Expression</string>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<item>
|
||||||
<property name="sizeConstraint">
|
<widget class="QPushButton" name="sr_add">
|
||||||
<enum>QLayout::SetMinimumSize</enum>
|
<property name="toolTip">
|
||||||
</property>
|
<string>Add the current expression to the list of expressions that will be applied</string>
|
||||||
<item row="0" column="0">
|
</property>
|
||||||
<widget class="RegexEdit" name="opt_sr2_search" native="true">
|
<property name="text">
|
||||||
<property name="sizePolicy">
|
<string>&Add</string>
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
</property>
|
||||||
<horstretch>0</horstretch>
|
</widget>
|
||||||
<verstretch>0</verstretch>
|
</item>
|
||||||
</sizepolicy>
|
<item>
|
||||||
</property>
|
<widget class="QPushButton" name="sr_change">
|
||||||
</widget>
|
<property name="enabled">
|
||||||
</item>
|
<bool>false</bool>
|
||||||
<item row="1" column="0">
|
</property>
|
||||||
<widget class="QLabel" name="label_5">
|
<property name="toolTip">
|
||||||
<property name="sizePolicy">
|
<string>Edit the currently selected expression</string>
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
</property>
|
||||||
<horstretch>0</horstretch>
|
<property name="text">
|
||||||
<verstretch>0</verstretch>
|
<string>&Change</string>
|
||||||
</sizepolicy>
|
</property>
|
||||||
</property>
|
</widget>
|
||||||
<property name="text">
|
</item>
|
||||||
<string>&Replacement Text</string>
|
<item>
|
||||||
</property>
|
<widget class="QPushButton" name="sr_remove">
|
||||||
<property name="buddy">
|
<property name="enabled">
|
||||||
<cstring>opt_sr2_replace</cstring>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="toolTip">
|
||||||
</item>
|
<string>Remove the currently selected expression</string>
|
||||||
<item row="2" column="0">
|
</property>
|
||||||
<widget class="QLineEdit" name="opt_sr2_replace">
|
<property name="text">
|
||||||
<property name="sizePolicy">
|
<string>&Remove</string>
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
</property>
|
||||||
<horstretch>0</horstretch>
|
</widget>
|
||||||
<verstretch>0</verstretch>
|
</item>
|
||||||
</sizepolicy>
|
<item>
|
||||||
</property>
|
<widget class="QFrame" name="frame">
|
||||||
</widget>
|
<property name="frameShape">
|
||||||
</item>
|
<enum>QFrame::VLine</enum>
|
||||||
</layout>
|
</property>
|
||||||
</widget>
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="sr_load">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Load a list of expressions from a previously saved file</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Load</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="sr_save">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Save this list of expressions so that you can re-use it easily</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Save</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QGroupBox" name="groupBox_3">
|
<widget class="QTableWidget" name="search_replace">
|
||||||
<property name="sizePolicy">
|
<property name="selectionMode">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="selectionBehavior">
|
||||||
<string>Third expression</string>
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetMinimumSize</enum>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="RegexEdit" name="opt_sr3_search" native="true">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>&Replacement Text</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_sr3_replace</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLineEdit" name="opt_sr3_replace">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><p>Search and replace uses <i>regular expressions</i>. See the <a href="http://manual.calibre-ebook.com/regexp.html">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard buttons below will allow you to test your regular expression against the current input document.</string>
|
<string><p>Search and replace uses <i>regular expressions</i>. See the <a href="http://manual.calibre-ebook.com/regexp.html">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard button below will allow you to test your regular expression against the current input document. When you are happy with an expression, click the Add button to add it to the list of expressions.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -44,7 +44,7 @@ class BNStore(BasicStoreConfig, StorePlugin):
|
|||||||
|
|
||||||
def search(self, query, max_results=10, timeout=60):
|
def search(self, query, max_results=10, timeout=60):
|
||||||
query = query.replace(' ', '-')
|
query = query.replace(' ', '-')
|
||||||
url = 'http://www.barnesandnoble.com/s/%s?store=ebook&sze=%s' % (query, max_results)
|
url = 'http://www.barnesandnoble.com/s/%s?store=nookstore' % query
|
||||||
|
|
||||||
br = browser()
|
br = browser()
|
||||||
|
|
||||||
@ -55,14 +55,14 @@ class BNStore(BasicStoreConfig, StorePlugin):
|
|||||||
if counter <= 0:
|
if counter <= 0:
|
||||||
break
|
break
|
||||||
|
|
||||||
id = ''.join(data.xpath('.//div[contains(@class, "image")]/a/@href'))
|
id = ''.join(data.xpath('.//a[contains(@class, "thumb")]/@href'))
|
||||||
if not id:
|
if not id:
|
||||||
continue
|
continue
|
||||||
cover_url = ''.join(data.xpath('.//div[contains(@class, "image")]//img/@src'))
|
cover_url = ''.join(data.xpath('.//img[contains(@class, "product-image")]/@src'))
|
||||||
|
|
||||||
title = ''.join(data.xpath('.//p[@class="title"]//span[@class="name"]/text()'))
|
title = ''.join(data.xpath('.//a[@class="title"]//text()'))
|
||||||
author = ', '.join(data.xpath('.//ul[@class="contributors"]//li[position()>1]//a/text()'))
|
author = ', '.join(data.xpath('.//a[@class="contributor"]//text()'))
|
||||||
price = ''.join(data.xpath('.//table[@class="displayed-formats"]//a[contains(@class, "bn-price")]/text()'))
|
price = ''.join(data.xpath('.//div[@class="price-format"]//span[contains(@class, "price")]/text()'))
|
||||||
|
|
||||||
counter -= 1
|
counter -= 1
|
||||||
|
|
||||||
|
@ -2653,6 +2653,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
def rename_author(self, old_id, new_name):
|
def rename_author(self, old_id, new_name):
|
||||||
# Make sure that any commas in new_name are changed to '|'!
|
# Make sure that any commas in new_name are changed to '|'!
|
||||||
new_name = new_name.replace(',', '|').strip()
|
new_name = new_name.replace(',', '|').strip()
|
||||||
|
if not new_name:
|
||||||
|
new_name = _('Unknown')
|
||||||
|
|
||||||
# Get the list of books we must fix up, one way or the other
|
# Get the list of books we must fix up, one way or the other
|
||||||
# Save the list so we can use it twice
|
# Save the list so we can use it twice
|
||||||
|
@ -112,8 +112,11 @@ def html_to_lxml(raw):
|
|||||||
for a in remove:
|
for a in remove:
|
||||||
del x.attrib[a]
|
del x.attrib[a]
|
||||||
raw = etree.tostring(root, encoding=None)
|
raw = etree.tostring(root, encoding=None)
|
||||||
return etree.fromstring(raw)
|
try:
|
||||||
|
return etree.fromstring(raw)
|
||||||
|
except:
|
||||||
|
from calibre.ebooks.oeb.parse_utils import _html4_parse
|
||||||
|
return _html4_parse(raw)
|
||||||
|
|
||||||
def CATALOG_ENTRY(item, item_kind, base_href, version, updated,
|
def CATALOG_ENTRY(item, item_kind, base_href, version, updated,
|
||||||
ignore_count=False, add_kind=False):
|
ignore_count=False, add_kind=False):
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-11 14:22+0000\n"
|
"PO-Revision-Date: 2012-02-11 14:22+0000\n"
|
||||||
"Last-Translator: Vonk Claassens <vonk@yebo.co.za>\n"
|
"Last-Translator: Vonk Claassens <vonk@yebo.co.za>\n"
|
||||||
"Language-Team: Afrikaans <af@li.org>\n"
|
"Language-Team: Afrikaans <af@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:38+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:40+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Doen absolute niks"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Doen absolute niks"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4562,6 +4562,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4682,7 +4686,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4915,7 +4919,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5176,7 +5180,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5208,7 +5212,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8878,15 +8882,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10586,90 +10590,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11427,7 +11439,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11910,7 +11922,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12091,38 +12103,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17875,7 +17887,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-12-09 11:30+0000\n"
|
"PO-Revision-Date: 2011-12-09 11:30+0000\n"
|
||||||
"Last-Translator: عبدالله شلي (Abdellah Chelli) <sneetsher@gmail.com>\n"
|
"Last-Translator: عبدالله شلي (Abdellah Chelli) <sneetsher@gmail.com>\n"
|
||||||
"Language-Team: Arabic <ar@li.org>\n"
|
"Language-Team: Arabic <ar@li.org>\n"
|
||||||
@ -16,8 +16,8 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
|
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
|
||||||
"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
|
"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:38+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:40+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:189
|
||||||
msgid "&Monospace family:"
|
msgid "&Monospace family:"
|
||||||
@ -77,7 +77,7 @@ msgstr "لا يفعل شيءً"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -117,7 +117,7 @@ msgstr "لا يفعل شيءً"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4837,6 +4837,10 @@ msgstr "أي الكتب المختارة لتوليد التسويقي"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4957,7 +4961,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5191,7 +5195,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5455,7 +5459,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5487,7 +5491,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -9164,15 +9168,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10879,90 +10883,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "دخل غير صالح"
|
msgstr "دخل غير صالح"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11720,7 +11732,7 @@ msgid "Previous Page"
|
|||||||
msgstr "الصفحة السابقة"
|
msgstr "الصفحة السابقة"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -12203,7 +12215,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "تحرير البيانات الوصفية"
|
msgstr "تحرير البيانات الوصفية"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12388,39 +12400,39 @@ msgstr ""
|
|||||||
"B>. على سبيل المثال، لا تستخدم إلا البلاغ اسم العائلة وكلمة واحدة مميزة من "
|
"B>. على سبيل المثال، لا تستخدم إلا البلاغ اسم العائلة وكلمة واحدة مميزة من "
|
||||||
"العنوان. <p>لرؤية السجل الكامل، انقر فوق إظهار التفاصيل."
|
"العنوان. <p>لرؤية السجل الكامل، انقر فوق إظهار التفاصيل."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"فشل في تحميل أي يغطي، انقر فوق \"عرض التفاصيل\" للاطلاع على التفاصيل."
|
"فشل في تحميل أي يغطي، انقر فوق \"عرض التفاصيل\" للاطلاع على التفاصيل."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -18172,7 +18184,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-09-26 16:28+0000\n"
|
"PO-Revision-Date: 2011-09-26 16:28+0000\n"
|
||||||
"Last-Translator: Xandru <xandru@softastur.org>\n"
|
"Last-Translator: Xandru <xandru@softastur.org>\n"
|
||||||
"Language-Team: Asturian <ast@li.org>\n"
|
"Language-Team: Asturian <ast@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:38+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Nun fai nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Nun fai nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4565,6 +4565,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4685,7 +4689,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4918,7 +4922,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5179,7 +5183,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5211,7 +5215,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8881,15 +8885,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10589,90 +10593,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11430,7 +11442,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11913,7 +11925,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12094,38 +12106,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17878,7 +17890,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-11-22 11:21+0000\n"
|
"PO-Revision-Date: 2011-11-22 11:21+0000\n"
|
||||||
"Last-Translator: Elvin Haci <Unknown>\n"
|
"Last-Translator: Elvin Haci <Unknown>\n"
|
||||||
"Language-Team: Azerbaijani <az@li.org>\n"
|
"Language-Team: Azerbaijani <az@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Heç bir şey etmir"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Heç bir şey etmir"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4563,6 +4563,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4683,7 +4687,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4916,7 +4920,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5177,7 +5181,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5209,7 +5213,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8879,15 +8883,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10587,90 +10591,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11428,7 +11440,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11911,7 +11923,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12092,38 +12104,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17876,7 +17888,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -6,7 +6,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-09-18 08:58+0000\n"
|
"PO-Revision-Date: 2011-09-18 08:58+0000\n"
|
||||||
"Last-Translator: Nelly Hoang <Unknown>\n"
|
"Last-Translator: Nelly Hoang <Unknown>\n"
|
||||||
"Language-Team: bg\n"
|
"Language-Team: bg\n"
|
||||||
@ -14,8 +14,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:40+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:42+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\n"
|
||||||
"Generated-By: pygettext.py 1.5\n"
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
|
||||||
@ -40,7 +40,7 @@ msgstr "Не прави абсолютно нищо"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Не прави абсолютно нищо"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4641,6 +4641,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4761,7 +4765,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Вече съществува"
|
msgstr "Вече съществува"
|
||||||
@ -4994,7 +4998,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5255,7 +5259,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5287,7 +5291,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8957,15 +8961,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10665,90 +10669,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Невалидни входящи данни"
|
msgstr "Невалидни входящи данни"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11506,7 +11518,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Предишна страница"
|
msgstr "Предишна страница"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11989,7 +12001,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12170,38 +12182,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Сваляне на корица..."
|
msgstr "Сваляне на корица..."
|
||||||
|
|
||||||
@ -17956,7 +17968,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,16 +7,16 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-08-05 17:36+0000\n"
|
"PO-Revision-Date: 2012-04-12 14:19+0000\n"
|
||||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
"Last-Translator: Kazi Shahnoor Ashraf <kazidxb@gmail.com>\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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "আসলে কিছুই করে না"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "আসলে কিছুই করে না"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -211,13 +211,13 @@ msgstr "ভিত্তি"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/to_zip.py:81
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/to_zip.py:81
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:397
|
#: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:397
|
||||||
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:52
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:52
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:57
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:57
|
||||||
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"
|
||||||
@ -237,7 +237,7 @@ msgstr "ক্যাটালগ জেনারেটর"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:527
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:527
|
||||||
msgid "User Interface Action"
|
msgid "User Interface Action"
|
||||||
msgstr ""
|
msgstr "ব্যবহারকারী পৃষ্ঠর কর্ম"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:561
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:561
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:20
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:20
|
||||||
@ -252,7 +252,7 @@ msgstr "পছন্দসমূহ"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:613
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:613
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
||||||
msgid "Store"
|
msgid "Store"
|
||||||
msgstr ""
|
msgstr "সংরক্ষন করুন"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:617
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:617
|
||||||
msgid "An ebook store."
|
msgid "An ebook store."
|
||||||
@ -4559,6 +4559,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4679,7 +4683,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4912,7 +4916,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5173,7 +5177,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5205,7 +5209,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8875,15 +8879,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10583,90 +10587,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11424,7 +11436,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11907,7 +11919,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12088,38 +12100,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17872,7 +17884,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-08-13 04:22+0000\n"
|
"PO-Revision-Date: 2011-08-13 04:22+0000\n"
|
||||||
"Last-Translator: Denis <Unknown>\n"
|
"Last-Translator: Denis <Unknown>\n"
|
||||||
"Language-Team: Breton <br@li.org>\n"
|
"Language-Team: Breton <br@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:42+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Ne ra netra da vat"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Ne ra netra da vat"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4565,6 +4565,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4685,7 +4689,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4918,7 +4922,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5179,7 +5183,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5211,7 +5215,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8881,15 +8885,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10589,90 +10593,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11430,7 +11442,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11913,7 +11925,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12094,38 +12106,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17878,7 +17890,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-01-02 13:31+0000\n"
|
"PO-Revision-Date: 2012-01-02 13:31+0000\n"
|
||||||
"Last-Translator: Kenan Dervišević <kenan3008@gmail.com>\n"
|
"Last-Translator: Kenan Dervišević <kenan3008@gmail.com>\n"
|
||||||
"Language-Team: Bosnian <bs@li.org>\n"
|
"Language-Team: Bosnian <bs@li.org>\n"
|
||||||
@ -16,8 +16,8 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:39+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:41+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -41,7 +41,7 @@ msgstr "Ne radi apsolutno ništa"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -81,7 +81,7 @@ msgstr "Ne radi apsolutno ništa"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4566,6 +4566,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4686,7 +4690,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4919,7 +4923,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5180,7 +5184,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5212,7 +5216,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8882,15 +8886,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10590,90 +10594,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11431,7 +11443,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11914,7 +11926,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Uredi meta podatke"
|
msgstr "Uredi meta podatke"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12095,38 +12107,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17884,7 +17896,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,15 +10,15 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-09 14:29+0000\n"
|
"PO-Revision-Date: 2012-04-13 19:02+0000\n"
|
||||||
"Last-Translator: Ferran Rius <frius64@hotmail.com>\n"
|
"Last-Translator: Ferran Rius <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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-10 04:55+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:42+0000\n"
|
||||||
"X-Generator: Launchpad (build 15070)\n"
|
"X-Generator: Launchpad (build 15070)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56
|
||||||
@ -43,7 +43,7 @@ msgstr "No fa res"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -83,7 +83,7 @@ msgstr "No fa res"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -5354,6 +5354,10 @@ msgstr "No s'ha seleccionat cap llibre per a la generació del catàleg"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "S'està generant el catàleg %s..."
|
msgstr "S'està generant el catàleg %s..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr "S'ha acabat de generar el catàleg amb avisos."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "S'ha generat el catàleg"
|
msgstr "S'ha generat el catàleg"
|
||||||
@ -5478,7 +5482,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Ja existeix"
|
msgstr "Ja existeix"
|
||||||
@ -5737,7 +5741,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -6016,7 +6020,7 @@ msgstr "No s'ha pogut baixar les metadades"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "No s'ha pogut baixar"
|
msgstr "No s'ha pogut baixar"
|
||||||
|
|
||||||
@ -6053,7 +6057,7 @@ msgid "Download complete"
|
|||||||
msgstr "S'ha acabat la baixada"
|
msgstr "S'ha acabat la baixada"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Registre de baixades"
|
msgstr "Registre de baixades"
|
||||||
|
|
||||||
@ -10063,15 +10067,15 @@ msgid "Copied"
|
|||||||
msgstr "Copiat"
|
msgstr "Copiat"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Copia-ho al porta-retalls"
|
msgstr "Copia-ho al porta-retalls"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Mostra el registre"
|
msgstr "Mostra el registre"
|
||||||
|
|
||||||
@ -11963,91 +11967,99 @@ msgstr "&Reconstrueix {0}"
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr "&Previsualitza {0}"
|
msgstr "&Previsualitza {0}"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr "No hi ha receptes"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr "No s'ha creat cap recepta personalitzada."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "No s'ha seleccionat cap recepta"
|
msgstr "No s'ha seleccionat cap recepta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr "El fitxer adjunt: %(fname)s és una recepta per baixar %(title)s."
|
msgstr "El fitxer adjunt: %(fname)s és una recepta per baixar %(title)s."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Recepta per a "
|
msgstr "Recepta per a "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "Canvia al mode avançat"
|
msgstr "Canvia al mode avançat"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Canvia al mode bàsic"
|
msgstr "Canvia al mode bàsic"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "El canal ha de tenir un títol"
|
msgstr "El canal ha de tenir un títol"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "El canal ha de tenir un títol"
|
msgstr "El canal ha de tenir un títol"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "El canal ha de tenir una URL"
|
msgstr "El canal ha de tenir una URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "El canal %s ha de tenir una URL"
|
msgstr "El canal %s ha de tenir una URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "Aquest canal ja s'ha afegit a la recepta"
|
msgstr "Aquest canal ja s'ha afegit a la recepta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "L'entrada no és vàlida"
|
msgstr "L'entrada no és vàlida"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>No s'ha pogut crear al recepta. Error:<br>%s"
|
msgstr "<p>No s'ha pogut crear al recepta. Error:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "S'ha de reemplaçar la recepta?"
|
msgstr "S'ha de reemplaçar la recepta?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ja hi ha una recepta personalitzada amb el nom %s. Voleu reemplaçar-la?"
|
"Ja hi ha una recepta personalitzada amb el nom %s. Voleu reemplaçar-la?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr "Tria una recepta integrada"
|
msgstr "Tria una recepta integrada"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Tria un fitxer de recepta"
|
msgstr "Tria un fitxer de recepta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Receptes"
|
msgstr "Receptes"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12841,7 +12853,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Pàgina anterior"
|
msgstr "Pàgina anterior"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -13373,7 +13385,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Edició de metadades"
|
msgstr "Edició de metadades"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -13577,42 +13589,42 @@ msgstr ""
|
|||||||
"l'autor i una sola paraula per identificar el títol.<p>Feu clic a «Mostra "
|
"l'autor i una sola paraula per identificar el títol.<p>Feu clic a «Mostra "
|
||||||
"detalls» per veure tot el registre."
|
"detalls» per veure tot el registre."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr "Portada actual"
|
msgstr "Portada actual"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "S'està cercant..."
|
msgstr "S'està cercant..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr "S'està baixant portades per a <b>%s</b>, espereu..."
|
msgstr "S'està baixant portades per a <b>%s</b>, espereu..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"No s'ha pogut baixar cap portada. Feu clic a «Mostra detalls» per a més "
|
"No s'ha pogut baixar cap portada. Feu clic a «Mostra detalls» per a més "
|
||||||
"informació."
|
"informació."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr "No s'ha trobat cap portada per a <b>%s</b>"
|
msgstr "No s'ha trobat cap portada per a <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"S'ha trobat <b>%(num)d</b> portades per a %(title)s. Trieu la que us agradi "
|
"S'ha trobat <b>%(num)d</b> portades per a %(title)s. Trieu la que us agradi "
|
||||||
"més."
|
"més."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr "Descàrrega de les metadades..."
|
msgstr "Descàrrega de les metadades..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Baixada de la portada..."
|
msgstr "Baixada de la portada..."
|
||||||
|
|
||||||
@ -20387,14 +20399,14 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Trieu les columnes que es cercaran quan no s'utilitzin prefixos, com "
|
"Trieu les columnes on s'ha de cercar quan no s'utilitzin prefixos, per "
|
||||||
"«Vermell» en lloc de «tittle:Vermell». Introduïu una llista separada per "
|
"exemple en cercar «Vermell» en lloc de «tittle:Vermell». Introduïu una "
|
||||||
"comes de noms de cerca. Només s'aplica si activeu l'opció de limitar les "
|
"llista separada per comes de noms de cerca. Només té efecte si establiu "
|
||||||
"columnes de cerca de més amunt."
|
"l'opció de limitar les columnes de cerca de més amunt."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31
|
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182
|
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre 0.8.47\n"
|
"Project-Id-Version: calibre 0.8.48\n"
|
||||||
"POT-Creation-Date: 2012-04-13 09:24+IST\n"
|
"POT-Creation-Date: 2012-04-20 14:41+IST\n"
|
||||||
"PO-Revision-Date: 2012-04-13 09:24+IST\n"
|
"PO-Revision-Date: 2012-04-20 14:41+IST\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: LANGUAGE\n"
|
"Language-Team: LANGUAGE\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -24,8 +24,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/db/cache.py:106
|
#: /home/kovid/work/calibre/src/calibre/db/cache.py:106
|
||||||
#: /home/kovid/work/calibre/src/calibre/db/cache.py:109
|
#: /home/kovid/work/calibre/src/calibre/db/cache.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/db/cache.py:120
|
#: /home/kovid/work/calibre/src/calibre/db/cache.py:120
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:317
|
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:319
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:318
|
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:100
|
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:100
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:101
|
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74
|
#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74
|
||||||
@ -36,9 +36,9 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71
|
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -109,7 +109,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497
|
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168
|
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170
|
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:836
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:850
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360
|
||||||
@ -183,14 +183,15 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:580
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:580
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2087
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2087
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2241
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2241
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3442
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:250
|
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:250
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251
|
#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245
|
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79
|
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:162
|
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:162
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46
|
||||||
@ -894,15 +895,15 @@ msgstr ""
|
|||||||
msgid "Communicate with Android phones."
|
msgid "Communicate with Android phones."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:167
|
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:168
|
||||||
msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used"
|
msgid "Comma separated list of directories to send e-books to on the device. The first one that exists will be used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:257
|
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:259
|
||||||
msgid "Communicate with S60 phones."
|
msgid "Communicate with S60 phones."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:276
|
#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:278
|
||||||
msgid "Communicate with WebOS tablets."
|
msgid "Communicate with WebOS tablets."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1002,8 +1003,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102
|
#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092
|
||||||
@ -1013,7 +1014,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:346
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:346
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:359
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:359
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187
|
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1021,8 +1022,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727
|
#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727
|
||||||
#: /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/catalogs/epub_mobi.py:65
|
#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136
|
||||||
msgid "Catalog"
|
msgid "Catalog"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1067,20 +1068,20 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248
|
||||||
msgid "Getting list of books on device..."
|
msgid "Getting list of books on device..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279
|
||||||
msgid "Transferring books to device..."
|
msgid "Transferring books to device..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1088,8 +1089,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332
|
||||||
msgid "Adding books to device metadata listing..."
|
msgid "Adding books to device metadata listing..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1099,8 +1100,8 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126
|
#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359
|
||||||
msgid "Removing books from device..."
|
msgid "Removing books from device..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1108,13 +1109,13 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469
|
#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371
|
||||||
msgid "Removing books from device metadata listing..."
|
msgid "Removing books from device metadata listing..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442
|
#: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401
|
||||||
msgid "Sending metadata to device..."
|
msgid "Sending metadata to device..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1364,11 +1365,11 @@ msgstr ""
|
|||||||
msgid "If you have a custom column in your library that you use to store the page count of books, you can have calibre use that information, instead of calculating a page count. Specify the name of the custom column here, for example, #pages. "
|
msgid "If you have a custom column in your library that you use to store the page count of books, you can have calibre use that information, instead of calculating a page count. Specify the name of the custom column here, for example, #pages. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419
|
||||||
msgid "Communicate with the Kindle DX eBook reader."
|
msgid "Communicate with the Kindle DX eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424
|
#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428
|
||||||
msgid "Communicate with the Kindle Fire"
|
msgid "Communicate with the Kindle Fire"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1900,31 +1901,31 @@ msgid "Modify the document text and structure using common patterns. Disabled by
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20
|
||||||
msgid "Modify the document text and structure using user defined patterns."
|
msgid "Modify the document text and structure using user defined patterns."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167
|
||||||
msgid "Control auto-detection of document structure."
|
msgid "Control auto-detection of document structure."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177
|
||||||
msgid "Control the automatic generation of a Table of Contents. By default, if the source file has a Table of Contents, it will be used in preference to the automatically generated one."
|
msgid "Control the automatic generation of a Table of Contents. By default, if the source file has a Table of Contents, it will be used in preference to the automatically generated one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187
|
||||||
msgid "Options to set metadata in the output"
|
msgid "Options to set metadata in the output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190
|
||||||
msgid "Options to help with debugging the conversion"
|
msgid "Options to help with debugging the conversion"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219
|
||||||
msgid "List builtin recipe names. You can create an ebook from a builtin recipe like this: ebook-convert \"Recipe Name.recipe\" output.epub"
|
msgid "List builtin recipe names. You can create an ebook from a builtin recipe like this: ebook-convert \"Recipe Name.recipe\" output.epub"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322
|
||||||
msgid "Output saved to"
|
msgid "Output saved to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2163,48 +2164,48 @@ msgstr ""
|
|||||||
msgid "Comic"
|
msgid "Comic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21
|
||||||
msgid "When present, use author sort field as author."
|
msgid "When present, use author sort field as author."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25
|
||||||
msgid "Don't add Table of Contents to the book. Useful if the book has its own table of contents."
|
msgid "Don't add Table of Contents to the book. Useful if the book has its own table of contents."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57
|
||||||
msgid "Title for any generated in-line table of contents."
|
msgid "Title for any generated in-line table of contents."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32
|
||||||
msgid "Disable compression of the file contents."
|
msgid "Disable compression of the file contents."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35
|
||||||
msgid "Tag marking book to be filed with Personal Docs"
|
msgid "Tag marking book to be filed with Personal Docs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39
|
||||||
msgid "Ignore margins in the input document. If False, then the MOBI output plugin will try to convert margins specified in the input document, otherwise it will ignore them."
|
msgid "Ignore margins in the input document. If False, then the MOBI output plugin will try to convert margins specified in the input document, otherwise it will ignore them."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45
|
||||||
msgid "When adding the Table of Contents to the book, add it at the start of the book instead of the end. Not recommended."
|
msgid "When adding the Table of Contents to the book, add it at the start of the book instead of the end. Not recommended."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49
|
||||||
msgid "Extract the contents of the MOBI file to the specified directory. If the directory already exists, it will be deleted."
|
msgid "Extract the contents of the MOBI file to the specified directory. If the directory already exists, it will be deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54
|
||||||
msgid "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: Using this feature means that the book will not auto sync its last read position on multiple devices. Complain to Amazon."
|
msgid "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: Using this feature means that the book will not auto sync its last read position on multiple devices. Complain to Amazon."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61
|
||||||
msgid "By default calibre converts all images to JPEG format in the output MOBI file. This is for maximum compatibility as some older MOBI viewers have problems with other image formats. This option tells calibre not to do this. Useful if your document contains lots of GIF/PNG images that become very large when converted to JPEG."
|
msgid "By default calibre converts all images to JPEG format in the output MOBI file. This is for maximum compatibility as some older MOBI viewers have problems with other image formats. This option tells calibre not to do this. Useful if your document contains lots of GIF/PNG images that become very large when converted to JPEG."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125
|
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125
|
||||||
msgid "All articles"
|
msgid "All articles"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2714,27 +2715,31 @@ msgstr ""
|
|||||||
msgid "Replacement to replace the text found with sr3-search."
|
msgid "Replacement to replace the text found with sr3-search."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632
|
||||||
|
msgid "Path to a file containing search and replace regular expressions. The file must contain alternating lines of regular expression followed by replacement pattern (which can be an empty line). The regular expression must be in the python regex syntax and the file must be UTF-8 encoded."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741
|
||||||
msgid "Could not find an ebook inside the archive"
|
msgid "Could not find an ebook inside the archive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799
|
||||||
msgid "Values of series index and rating must be numbers. Ignoring"
|
msgid "Values of series index and rating must be numbers. Ignoring"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806
|
||||||
msgid "Failed to parse date/time"
|
msgid "Failed to parse date/time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965
|
||||||
msgid "Converting input to HTML..."
|
msgid "Converting input to HTML..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992
|
||||||
msgid "Running transforms on ebook..."
|
msgid "Running transforms on ebook..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096
|
||||||
msgid "Creating"
|
msgid "Creating"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3032,7 +3037,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375
|
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3200,7 +3205,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:937
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41
|
||||||
msgid "Cover"
|
msgid "Cover"
|
||||||
@ -3310,70 +3315,70 @@ msgstr ""
|
|||||||
msgid "No details available"
|
msgid "No details available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259
|
||||||
msgid "Title Page"
|
msgid "Title Page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199
|
||||||
msgid "Table of Contents"
|
msgid "Table of Contents"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261
|
||||||
msgid "Index"
|
msgid "Index"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262
|
||||||
msgid "Glossary"
|
msgid "Glossary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1263
|
||||||
msgid "Acknowledgements"
|
msgid "Acknowledgements"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1264
|
||||||
msgid "Bibliography"
|
msgid "Bibliography"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1265
|
||||||
msgid "Colophon"
|
msgid "Colophon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1266
|
||||||
msgid "Copyright"
|
msgid "Copyright"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1267
|
||||||
msgid "Dedication"
|
msgid "Dedication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1268
|
||||||
msgid "Epigraph"
|
msgid "Epigraph"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1269
|
||||||
msgid "Foreword"
|
msgid "Foreword"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1270
|
||||||
msgid "List of Illustrations"
|
msgid "List of Illustrations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1271
|
||||||
msgid "List of Tables"
|
msgid "List of Tables"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1272
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1273
|
||||||
msgid "Preface"
|
msgid "Preface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260
|
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1274
|
||||||
msgid "Main Text"
|
msgid "Main Text"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4073,7 +4078,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d books"
|
msgid "%d books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5043,7 +5048,7 @@ msgid "Selected books have no formats"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138
|
||||||
msgid "Choose the format to view"
|
msgid "Choose the format to view"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5416,7 +5421,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70
|
||||||
@ -6631,23 +6636,32 @@ msgstr ""
|
|||||||
msgid "RB Output"
|
msgid "RB Output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146
|
||||||
msgid "No formats available"
|
msgid "No formats available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147
|
||||||
msgid "Cannot build regex using the GUI builder without a book."
|
msgid "Cannot build regex using the GUI builder without a book."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156
|
||||||
msgid "Could not open file"
|
msgid "Could not open file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157
|
||||||
msgid "Could not open the file, do you have it open in another program?"
|
msgid "Could not open the file, do you have it open in another program?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175
|
||||||
|
msgid "Failed to generate markup for testing. Click \"Show Details\" to learn more."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185
|
||||||
|
msgid "Failed to generate preview"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191
|
||||||
msgid "Open book"
|
msgid "Open book"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6699,50 +6713,124 @@ msgstr ""
|
|||||||
msgid "Preview"
|
msgid "Preview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19
|
||||||
msgid ""
|
msgid ""
|
||||||
"Search\n"
|
"Search\n"
|
||||||
"&\n"
|
"&\n"
|
||||||
"Replace"
|
"Replace"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35
|
|
||||||
msgid "&Search Regular Expression"
|
msgid "&Search Regular Expression"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56
|
||||||
|
msgid "Replacement Text"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56
|
||||||
|
msgid "Search Regular Expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100
|
||||||
|
msgid "Load Calibre Search-Replace definitions file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119
|
||||||
|
msgid "Calibre Search-Replace definitions file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110
|
||||||
|
msgid "Failed to read"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111
|
||||||
|
#, python-format
|
||||||
|
msgid "Failed to load patterns from %s, click Show details to learn more."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117
|
||||||
|
msgid "Save Calibre Search-Replace definitions file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168
|
||||||
|
msgid "Unused Search & Replace definition"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169
|
||||||
|
msgid "The search / replace definition being edited has not been added to the list of definitions. Do you wish to continue with the conversion (the definition will not be used)?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112
|
||||||
msgid "Invalid regular expression"
|
msgid "Invalid regular expression"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113
|
#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Invalid regular expression: %s"
|
msgid "Invalid regular expression: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265
|
||||||
msgid "First expression"
|
msgid "The list of search/replace definitions that will be applied to this conversion."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151
|
msgid "Search/Replace Definition Edit"
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112
|
||||||
msgid "&Replacement Text"
|
msgid "&Replacement Text"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113
|
||||||
msgid "Second Expression"
|
msgid "Add the current expression to the list of expressions that will be applied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114
|
||||||
msgid "Third expression"
|
msgid "&Add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115
|
||||||
msgid "<p>Search and replace uses <i>regular expressions</i>. See the <a href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard buttons below will allow you to test your regular expression against the current input document."
|
msgid "Edit the currently selected expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59
|
||||||
|
msgid "&Change"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117
|
||||||
|
msgid "Remove the currently selected expression"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886
|
||||||
|
msgid "&Remove"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119
|
||||||
|
msgid "Load a listof expression from a previously saved file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120
|
||||||
|
msgid "&Load"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121
|
||||||
|
msgid "Save this list of expression so that you can re-use it easily"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131
|
||||||
|
#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661
|
||||||
|
msgid "&Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123
|
||||||
|
msgid "<p>Search and replace uses <i>regular expressions</i>. See the <a href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard button below will allow you to test your regular expression against the current input document. When you are happy with an expression, click the Add button to add it to the list of expressions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181
|
||||||
@ -7808,7 +7896,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73
|
#: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7843,7 +7931,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:365
|
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:365
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10811,10 +10899,6 @@ msgstr ""
|
|||||||
msgid "T&rim"
|
msgid "T&rim"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886
|
|
||||||
msgid "&Remove"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892
|
||||||
msgid "Download co&ver"
|
msgid "Download co&ver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -12867,11 +12951,6 @@ msgid ""
|
|||||||
"of a search term by changing the value box then pressing Save."
|
"of a search term by changing the value box then pressing Save."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131
|
|
||||||
#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661
|
|
||||||
msgid "&Save"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132
|
||||||
msgid "Make &user categories from:"
|
msgid "Make &user categories from:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -14924,10 +15003,6 @@ msgstr ""
|
|||||||
msgid "<p>Choose a location for your books. When you add books to calibre, they will be copied here. Use an <b>empty folder</b> for a new calibre library:"
|
msgid "<p>Choose a location for your books. When you add books to calibre, they will be copied here. Use an <b>empty folder</b> for a new calibre library:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59
|
|
||||||
msgid "&Change"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60
|
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60
|
||||||
msgid "If you have an existing calibre library, it will be copied to the new location. If a calibre library already exists at the new location, calibre will switch to using it."
|
msgid "If you have an existing calibre library, it will be copied to the new location. If a calibre library already exists at the new location, calibre will switch to using it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -15984,17 +16059,17 @@ msgstr ""
|
|||||||
msgid "%(tt)sAverage rating is %(rating)3.1f"
|
msgid "%(tt)sAverage rating is %(rating)3.1f"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3468
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
msgid "<p>Migrating old database to ebook library in %s<br><center>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3497
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3514
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -16198,7 +16273,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295
|
#: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582
|
||||||
msgid "Newest"
|
msgid "Newest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -16355,40 +16430,40 @@ msgstr ""
|
|||||||
msgid "The full interface gives you many more features, but it may not work well on a small screen"
|
msgid "The full interface gives you many more features, but it may not work well on a small screen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d book"
|
msgid "%d book"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d items"
|
msgid "%d items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "RATING: %s<br />"
|
msgid "RATING: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "TAGS: %s<br />"
|
msgid "TAGS: %s<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "SERIES: %(series)s [%(sidx)s]<br />"
|
msgid "SERIES: %(series)s [%(sidx)s]<br />"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276
|
||||||
msgid "Books in your library"
|
msgid "Books in your library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282
|
||||||
msgid "By "
|
msgid "By "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280
|
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283
|
||||||
msgid "Books sorted by "
|
msgid "Books sorted by "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-11 21:21+0000\n"
|
"PO-Revision-Date: 2012-02-11 21:21+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"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:40+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:42+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Nedělá vůbec nic"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Nedělá vůbec nic"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -5087,6 +5087,10 @@ msgstr "Nebyly vybrány žádné knihy pro vytvoření katalogu"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Generování %s katalogu..."
|
msgstr "Generování %s katalogu..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Katalog vygenerován."
|
msgstr "Katalog vygenerován."
|
||||||
@ -5209,7 +5213,7 @@ msgstr "Berte na vědomí, že složka s aktuální knihovnou bude přejmenován
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Už existuje"
|
msgstr "Už existuje"
|
||||||
@ -5459,7 +5463,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5734,7 +5738,7 @@ msgstr "Nepodařilo se stáhnout metadata"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Stahování selhalo"
|
msgstr "Stahování selhalo"
|
||||||
|
|
||||||
@ -5766,7 +5770,7 @@ msgid "Download complete"
|
|||||||
msgstr "Stahování dokončeno"
|
msgstr "Stahování dokončeno"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Download log"
|
msgstr "Download log"
|
||||||
|
|
||||||
@ -9634,15 +9638,15 @@ msgid "Copied"
|
|||||||
msgstr "Kopírováno"
|
msgstr "Kopírováno"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Kopírovat do schránky"
|
msgstr "Kopírovat do schránky"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Zobrazit log"
|
msgstr "Zobrazit log"
|
||||||
|
|
||||||
@ -11404,90 +11408,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "Není vybrán žádný zdroj"
|
msgstr "Není vybrán žádný zdroj"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Zdroj pro "
|
msgstr "Zdroj pro "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "Přepnout do pokročilého režimu"
|
msgstr "Přepnout do pokročilého režimu"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Přepnout do základního režimu"
|
msgstr "Přepnout do základního režimu"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "Zdroj musí mít název"
|
msgstr "Zdroj musí mít název"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "Zdroj musí mít název"
|
msgstr "Zdroj musí mít název"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "Zdroj musí mít URL"
|
msgstr "Zdroj musí mít URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "Zdroj %s musí mít URL"
|
msgstr "Zdroj %s musí mít URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "Tento RSS kanál již byl mezi zdroje přidán"
|
msgstr "Tento RSS kanál již byl mezi zdroje přidán"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Neplatný vstup"
|
msgstr "Neplatný vstup"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>Nebylo možné vytvořit zdroj. Chyba:<br>%s"
|
msgstr "<p>Nebylo možné vytvořit zdroj. Chyba:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "Nahradit zdroj?"
|
msgstr "Nahradit zdroj?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr "Zdroj s názvem %s již existuje. Chcete ho nahradit?"
|
msgstr "Zdroj s názvem %s již existuje. Chcete ho nahradit?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Vyberte soubor se zdrojem"
|
msgstr "Vyberte soubor se zdrojem"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Zdroje"
|
msgstr "Zdroje"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12261,7 +12273,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Předcházející strana"
|
msgstr "Předcházející strana"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -12756,7 +12768,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Upravit metadata"
|
msgstr "Upravit metadata"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12937,38 +12949,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Stáhnout obálku..."
|
msgstr "Stáhnout obálku..."
|
||||||
|
|
||||||
@ -18965,7 +18977,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-26 20:21+0000\n"
|
"PO-Revision-Date: 2012-02-26 20:21+0000\n"
|
||||||
"Last-Translator: Rachael Munns <vashtijoy@gmail.com>\n"
|
"Last-Translator: Rachael Munns <vashtijoy@gmail.com>\n"
|
||||||
"Language-Team: Welsh <cy@li.org>\n"
|
"Language-Team: Welsh <cy@li.org>\n"
|
||||||
@ -16,8 +16,8 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
|
"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
|
||||||
"2 : 3;\n"
|
"2 : 3;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:53+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -41,7 +41,7 @@ msgstr "Dim yn gwneud dim byd"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -81,7 +81,7 @@ msgstr "Dim yn gwneud dim byd"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4571,6 +4571,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4691,7 +4695,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4924,7 +4928,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5185,7 +5189,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5217,7 +5221,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8887,15 +8891,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10595,90 +10599,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11436,7 +11448,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11919,7 +11931,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12100,38 +12112,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17884,7 +17896,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-02-16 16:39+0000\n"
|
"PO-Revision-Date: 2012-02-16 16:39+0000\n"
|
||||||
"Last-Translator: Mikkel Herold <mikkel@mzh.dk>\n"
|
"Last-Translator: Mikkel Herold <mikkel@mzh.dk>\n"
|
||||||
"Language-Team: Danish <da@li.org>\n"
|
"Language-Team: Danish <da@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:41+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Gør absolut ingenting"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Gør absolut ingenting"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4977,6 +4977,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Genererer %s katalog..."
|
msgstr "Genererer %s katalog..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Katalog genereret."
|
msgstr "Katalog genereret."
|
||||||
@ -5097,7 +5101,7 @@ msgstr "Bemærk at den aktuelle biblioteksmappe vil blive omdøbt."
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Eksisterer allerede"
|
msgstr "Eksisterer allerede"
|
||||||
@ -5332,7 +5336,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5598,7 +5602,7 @@ msgstr "Hentning af metadata fejlede"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Hentning mislykkedes"
|
msgstr "Hentning mislykkedes"
|
||||||
|
|
||||||
@ -5630,7 +5634,7 @@ msgid "Download complete"
|
|||||||
msgstr "Filhentning gennemført"
|
msgstr "Filhentning gennemført"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Filhentning log"
|
msgstr "Filhentning log"
|
||||||
|
|
||||||
@ -9388,15 +9392,15 @@ msgid "Copied"
|
|||||||
msgstr "Kopieret"
|
msgstr "Kopieret"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Kopiér til udklipsholder"
|
msgstr "Kopiér til udklipsholder"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Vis log"
|
msgstr "Vis log"
|
||||||
|
|
||||||
@ -11161,92 +11165,100 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "Ingen opskrift valgt"
|
msgstr "Ingen opskrift valgt"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Opskrift for "
|
msgstr "Opskrift for "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "Skift til avanceret tilstand"
|
msgstr "Skift til avanceret tilstand"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Skift til grundtilstand"
|
msgstr "Skift til grundtilstand"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "Feed skal have en titel"
|
msgstr "Feed skal have en titel"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "Feeden skal have en titel"
|
msgstr "Feeden skal have en titel"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "Feed skal have en URL"
|
msgstr "Feed skal have en URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "Feeden %s skal have en URL"
|
msgstr "Feeden %s skal have en URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "Denne feed er allerede blevet tilføjet til opskriften"
|
msgstr "Denne feed er allerede blevet tilføjet til opskriften"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Ugyldigt input"
|
msgstr "Ugyldigt input"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>Kunne ikke oprette opskrift. Fejl:<br>%s"
|
msgstr "<p>Kunne ikke oprette opskrift. Fejl:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "Erstat opskrift?"
|
msgstr "Erstat opskrift?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"En bruger opskrift med navn %s eksisterer allerede. Ønsker du at overskrive "
|
"En bruger opskrift med navn %s eksisterer allerede. Ønsker du at overskrive "
|
||||||
"den?"
|
"den?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Vælg en en opskriftsfil"
|
msgstr "Vælg en en opskriftsfil"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Opskrifter"
|
msgstr "Opskrifter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12019,7 +12031,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Forrige side"
|
msgstr "Forrige side"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -12512,7 +12524,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Redigér metadata"
|
msgstr "Redigér metadata"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12693,38 +12705,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr "Aktuelt omslag"
|
msgstr "Aktuelt omslag"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Søger..."
|
msgstr "Søger..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr "Henter metadata..."
|
msgstr "Henter metadata..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Henter omslag..."
|
msgstr "Henter omslag..."
|
||||||
|
|
||||||
@ -18895,7 +18907,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,16 +7,16 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-11 13:40+0000\n"
|
"PO-Revision-Date: 2012-04-16 05:46+0000\n"
|
||||||
"Last-Translator: Raymond Fürst <Unknown>\n"
|
"Last-Translator: Dennis Baudys <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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-12 04:48+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-17 04:49+0000\n"
|
||||||
"X-Generator: Launchpad (build 15070)\n"
|
"X-Generator: Launchpad (build 15099)\n"
|
||||||
"X-Poedit-Bookmarks: 3327,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
|
"X-Poedit-Bookmarks: 3327,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
|
||||||
"Generated-By: pygettext.py 1.5\n"
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ msgstr "Macht absolut gar nichts"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -82,7 +82,7 @@ msgstr "Macht absolut gar nichts"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -2278,7 +2278,7 @@ msgstr "EINGABE-EINSTELLUNGEN"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:110
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:110
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Options to control the processing of the input %s file"
|
msgid "Options to control the processing of the input %s file"
|
||||||
msgstr "Einstellungen zur Kontrolle der Verabeitung der Eingabe-Datei %s"
|
msgstr "Einstellungen zur Steuerung der Verarbeitung der Eingabedatei %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116
|
||||||
msgid "OUTPUT OPTIONS"
|
msgid "OUTPUT OPTIONS"
|
||||||
@ -2287,11 +2287,11 @@ msgstr "AUSGABE-EINSTELLUNGEN"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:117
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:117
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Options to control the processing of the output %s"
|
msgid "Options to control the processing of the output %s"
|
||||||
msgstr "Einstellungen zur Kontrolle der Verarbeitung der Ausgabe %s"
|
msgstr "Einstellungen zur Steuerung der Verarbeitung der Ausgabe %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:131
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:131
|
||||||
msgid "Options to control the look and feel of the output"
|
msgid "Options to control the look and feel of the output"
|
||||||
msgstr "Einstellungen zur Kontrolle des Layouts der Ausgabe"
|
msgstr "Einstellungen zur Steuerung des Layouts der Ausgabe"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:149
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -2327,7 +2327,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186
|
||||||
msgid "Options to set metadata in the output"
|
msgid "Options to set metadata in the output"
|
||||||
msgstr "Einstellungen zum Setzen von Metadaten in der Ausgabe"
|
msgstr "Einstellungen zum Festlegen von Metadaten in der Ausgabe"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189
|
||||||
msgid "Options to help with debugging the conversion"
|
msgid "Options to help with debugging the conversion"
|
||||||
@ -4766,7 +4766,7 @@ msgstr "Einstellungen zum Beschneiden:"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53
|
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61
|
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61
|
||||||
msgid "Options to control the transformation of pdf"
|
msgid "Options to control the transformation of pdf"
|
||||||
msgstr "Einstellungen zur Kontrolle der Umwandlung von pdf"
|
msgstr "Einstellungen zur Steuerung der Umwandlung von pdf"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:23
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -4963,11 +4963,11 @@ msgstr "Voreinstellungen für Konvertierung zu LRF"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138
|
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138
|
||||||
msgid "Options for the LRF ebook viewer"
|
msgid "Options for the LRF ebook viewer"
|
||||||
msgstr "Optionen für den LRF E-Book-Viewer"
|
msgstr "Optionen für den LRF-E-Book-Betrachter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141
|
||||||
msgid "Formats that are viewed using the internal viewer"
|
msgid "Formats that are viewed using the internal viewer"
|
||||||
msgstr "Formate, die mithilfe des internen Viewers angesehen werden"
|
msgstr "Formate, die mit dem internen Betrachter angezeigt werden"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143
|
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143
|
||||||
msgid "Columns to be displayed in the book list"
|
msgid "Columns to be displayed in the book list"
|
||||||
@ -5378,6 +5378,10 @@ msgstr "Keine Bücher zur Erzeugung des Kataloges ausgewählt"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Erstelle %s Katalog..."
|
msgstr "Erstelle %s Katalog..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Katalog erstellt."
|
msgstr "Katalog erstellt."
|
||||||
@ -5501,7 +5505,7 @@ msgstr "Achtung: Dies benennt den eigentlichen Bibliotheks- Ordner um."
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Gibts hier schon"
|
msgstr "Gibts hier schon"
|
||||||
@ -5758,7 +5762,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -6037,7 +6041,7 @@ msgstr "Download der Metadaten fehlgeschlagen"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Herunterladen gescheitert"
|
msgstr "Herunterladen gescheitert"
|
||||||
|
|
||||||
@ -6076,7 +6080,7 @@ msgid "Download complete"
|
|||||||
msgstr "Herunterladen abgeschlossen"
|
msgstr "Herunterladen abgeschlossen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Protokoll des Herunterladens"
|
msgstr "Protokoll des Herunterladens"
|
||||||
|
|
||||||
@ -10114,15 +10118,15 @@ msgid "Copied"
|
|||||||
msgstr "Kopiert"
|
msgstr "Kopiert"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "In die Zwischenablage kopieren"
|
msgstr "In die Zwischenablage kopieren"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Log-Datei anschauen"
|
msgstr "Log-Datei anschauen"
|
||||||
|
|
||||||
@ -12029,93 +12033,101 @@ msgstr "{0} &Neu erstellen"
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr "&Vorschau {0}"
|
msgstr "&Vorschau {0}"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "Kein Schema gewählt"
|
msgstr "Kein Schema gewählt"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die angehängte Datei: %(fname)s ist ein Downloadschema um %(title)s "
|
"Die angehängte Datei: %(fname)s ist ein Downloadschema um %(title)s "
|
||||||
"herunterzuladen."
|
"herunterzuladen."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Downloadschema für "
|
msgstr "Downloadschema für "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "In erweiterten Modus umschalten"
|
msgstr "In erweiterten Modus umschalten"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Zum Basis Modus wechseln"
|
msgstr "Zum Basis Modus wechseln"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "Feed benötigt einen Titel"
|
msgstr "Feed benötigt einen Titel"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "Feed benötigt einen Titel"
|
msgstr "Feed benötigt einen Titel"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "Feed benötigt eine URL"
|
msgstr "Feed benötigt eine URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "Feed %s benötigt eine URL"
|
msgstr "Feed %s benötigt eine URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "Dieser Feed wurde schon diesem Schema hinzugefügt"
|
msgstr "Dieser Feed wurde schon diesem Schema hinzugefügt"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Ungültige Eingabe"
|
msgstr "Ungültige Eingabe"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>Konnte Schema nicht erstellen. Fehler:<br>%s"
|
msgstr "<p>Konnte Schema nicht erstellen. Fehler:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "Downloadschema ersetzen?"
|
msgstr "Downloadschema ersetzen?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Es gibt schon ein erstelltes Schema mit dem Namen %s. Soll es ersetzt werden?"
|
"Es gibt schon ein erstelltes Schema mit dem Namen %s. Soll es ersetzt werden?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr "Mitgeliefertes Downloadschema wählen"
|
msgstr "Mitgeliefertes Downloadschema wählen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Eine Schema-Datei wählen"
|
msgstr "Eine Schema-Datei wählen"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Downloadschemata"
|
msgstr "Downloadschemata"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12858,7 +12870,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:52
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:52
|
||||||
msgid "Configure Viewer"
|
msgid "Configure Viewer"
|
||||||
msgstr "Viewer konfigurieren"
|
msgstr "Betrachter konfigurieren"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:53
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:53
|
||||||
msgid "Use white background"
|
msgid "Use white background"
|
||||||
@ -12874,7 +12886,7 @@ msgstr "<b>Änderungen werden erst nach einem Neustart wirksam.</b>"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70
|
||||||
msgid " - LRF Viewer"
|
msgid " - LRF Viewer"
|
||||||
msgstr " - LRF Viewer"
|
msgstr " - LRF-Betrachter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -12883,7 +12895,7 @@ msgstr "<b>Keine Treffer</b> für die Suchworte <i>%s</i> gefunden."
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128
|
||||||
msgid "LRF Viewer"
|
msgid "LRF Viewer"
|
||||||
msgstr "LRF Viewer"
|
msgstr "LRF-Betrachter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129
|
||||||
msgid "Parsing LRF file"
|
msgid "Parsing LRF file"
|
||||||
@ -12891,7 +12903,7 @@ msgstr "Analysiere LRF Datei"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130
|
||||||
msgid "LRF Viewer toolbar"
|
msgid "LRF Viewer toolbar"
|
||||||
msgstr "LRF Viewer Symbolleiste"
|
msgstr "LRF-Betrachter-Symbolleiste"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516
|
||||||
@ -12904,7 +12916,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Vorherige Seite"
|
msgstr "Vorherige Seite"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -13438,7 +13450,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Metadaten bearbeiten"
|
msgstr "Metadaten bearbeiten"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -13642,42 +13654,42 @@ msgstr ""
|
|||||||
"den Nachnamen des Autors und ein einzelnes, prägnantes Wort aus dem "
|
"den Nachnamen des Autors und ein einzelnes, prägnantes Wort aus dem "
|
||||||
"Titel.<p>Um das gesamte Log zu sehen, wählen sie Details anzeigen."
|
"Titel.<p>Um das gesamte Log zu sehen, wählen sie Details anzeigen."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr "Derzeitiges Umschlagbild"
|
msgstr "Derzeitiges Umschlagbild"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Suche..."
|
msgstr "Suche..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr "Lade Umschlagbilder für <b>%s</b> herunter, bitte warten..."
|
msgstr "Lade Umschlagbilder für <b>%s</b> herunter, bitte warten..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Herunterladen von Umschlagbildern fehlgeschlagen, wählen Sie \"Details "
|
"Herunterladen von Umschlagbildern fehlgeschlagen, wählen Sie \"Details "
|
||||||
"anzeigen\" für Details."
|
"anzeigen\" für Details."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr "Konnte für <b>%s</b> keine Umschlagbilder finden"
|
msgstr "Konnte für <b>%s</b> keine Umschlagbilder finden"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<b>%(num)d</b> Umschlagbilder für %(title)s gefunden. Wählen Sie aus, "
|
"<b>%(num)d</b> Umschlagbilder für %(title)s gefunden. Wählen Sie aus, "
|
||||||
"welches Ihnen am besten gefällt."
|
"welches Ihnen am besten gefällt."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr "Lade Metadaten herunter..."
|
msgstr "Lade Metadaten herunter..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Lade Umschlagbild..."
|
msgstr "Lade Umschlagbild..."
|
||||||
|
|
||||||
@ -14025,7 +14037,7 @@ msgstr "Bevorzugte Reihenfolge des E&ingabe-Formats:"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:168
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:168
|
||||||
msgid "Use internal &viewer for:"
|
msgid "Use internal &viewer for:"
|
||||||
msgstr "Internen &Viewer verwenden für:"
|
msgstr "Internen &Betrachter verwenden für:"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:169
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:169
|
||||||
msgid "Reset all disabled &confirmation dialogs"
|
msgid "Reset all disabled &confirmation dialogs"
|
||||||
@ -15828,7 +15840,7 @@ msgid ""
|
|||||||
"Clear search histories from all over calibre. Including the book list, e-"
|
"Clear search histories from all over calibre. Including the book list, e-"
|
||||||
"book viewer, fetch news dialog, etc."
|
"book viewer, fetch news dialog, etc."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Lösche alle gespeicherten Suchen in Calibre. Auch die Bücherliste, "
|
"Alle gespeicherten Suchen in Calibre löschen. Auch die Bücherliste, "
|
||||||
"Buchbetrachter, Nachrichtendialog usw."
|
"Buchbetrachter, Nachrichtendialog usw."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:118
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:118
|
||||||
@ -17519,7 +17531,7 @@ msgstr "Importieren"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:185
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:185
|
||||||
msgid "Configure Ebook viewer"
|
msgid "Configure Ebook viewer"
|
||||||
msgstr "E-Book Viewer konfigurieren"
|
msgstr "E-Book-Betrachter konfigurieren"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:186
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:186
|
||||||
msgid "&Font options"
|
msgid "&Font options"
|
||||||
@ -17594,8 +17606,8 @@ msgstr "Voreingeste&llte Sprache für die Silbentrennung:"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:203
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:203
|
||||||
msgid "&Resize images larger than the viewer window (needs restart)"
|
msgid "&Resize images larger than the viewer window (needs restart)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bilder ve&rkleinern, die größer als das Viewer-Fenster sind (erfordert "
|
"Bilder ve&rkleinern, die größer als das Betrachterfenster sind (Neustart "
|
||||||
"Neustart)"
|
"erforderlich)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:204
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:204
|
||||||
msgid "Page flip &duration:"
|
msgid "Page flip &duration:"
|
||||||
@ -17667,7 +17679,7 @@ msgstr "Kein Ergebnis gefunden für:"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40
|
||||||
msgid "Options to customize the ebook viewer"
|
msgid "Options to customize the ebook viewer"
|
||||||
msgstr "Einstellungen zum Anpassen des E-Book Viewers"
|
msgstr "Einstellungen zum Anpassen des E-Book-Betrachters"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942
|
||||||
@ -17685,7 +17697,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55
|
||||||
msgid "Resize images larger than the viewer window to fit inside it"
|
msgid "Resize images larger than the viewer window to fit inside it"
|
||||||
msgstr "Bilder, die größer als das Viewer-Fenster sind, passend verkleinern"
|
msgstr ""
|
||||||
|
"Bilder, die größer als das Betrachterfenster sind, passend verkleinern"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56
|
||||||
msgid "Hyphenate text"
|
msgid "Hyphenate text"
|
||||||
@ -17970,20 +17983,20 @@ msgstr "Konnte E-Book nicht öffnen"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929
|
||||||
msgid "Options to control the ebook viewer"
|
msgid "Options to control the ebook viewer"
|
||||||
msgstr "Einstellungen zur Kontrolle des E-Book Viewers"
|
msgstr "Einstellungen zur Steuerung des E-Book-Betrachters"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936
|
||||||
msgid ""
|
msgid ""
|
||||||
"If specified, viewer window will try to come to the front when started."
|
"If specified, viewer window will try to come to the front when started."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Falls angegeben, dann wird das Betrachter-Fenster beim Start im Vordergrund "
|
"Wenn ausgewählt, wird das Betrachterfenster nach Möglichkeit im Vordergrund "
|
||||||
"angezeigt."
|
"geöffnet."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939
|
||||||
msgid ""
|
msgid ""
|
||||||
"If specified, viewer window will try to open full screen when started."
|
"If specified, viewer window will try to open full screen when started."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wenn ausgewählt, wird das Betrachter-Fenster nach Möglichkeit im "
|
"Wenn ausgewählt, wird das Betrachterfenster nach Möglichkeit im "
|
||||||
"Vollbildmodus geöffnet."
|
"Vollbildmodus geöffnet."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944
|
||||||
@ -17995,8 +18008,8 @@ msgid ""
|
|||||||
"The position at which to open the specified book. The position is a location "
|
"The position at which to open the specified book. The position is a location "
|
||||||
"as displayed in the top left corner of the viewer."
|
"as displayed in the top left corner of the viewer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Stelle, an der das Buch geöffnet werden soll. Die Stelle wird oben links "
|
"Bildschirmposition, an der das Buch geöffnet werden soll. Die Stelle wird "
|
||||||
"im Viewer angezeigt"
|
"oben links im Betrachter angezeigt"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -18010,7 +18023,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189
|
||||||
msgid "E-book Viewer"
|
msgid "E-book Viewer"
|
||||||
msgstr "E-book Viewer"
|
msgstr "E-Book-Betrachter"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190
|
||||||
msgid "Close dictionary"
|
msgid "Close dictionary"
|
||||||
@ -19358,9 +19371,9 @@ msgid ""
|
|||||||
"interpreted. This is a JSON string. For enumeration columns, use --"
|
"interpreted. This is a JSON string. For enumeration columns, use --"
|
||||||
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
|
"display='{\"enum_values\":[\"val1\", \"val2\"]}'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ein Wörterbuch von Optionen zur Einstellung, wie Daten in dieser Spalte "
|
"Ein Wörterbuch mit Optionen zur Einstellung, wie Daten in dieser Spalte "
|
||||||
"interpretiert werden. Dies ist ein JSON- String. Für Listenspalten, "
|
"interpretiert werden. Dies ist eine JSON-Zeichenkette. Für nummerierte "
|
||||||
"verwenden Sie --display='{\"enum_values\":[\"val1\", \"val2\"]}'"
|
"Spalten verwenden Sie --display='{\"enum_values\":[\"Wert1\", \"Wert2\"]}'"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:625
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:625
|
||||||
msgid "You must specify label, name and datatype"
|
msgid "You must specify label, name and datatype"
|
||||||
@ -19833,7 +19846,7 @@ msgstr "Die Calibre interne ID"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76
|
||||||
msgid "Options to control saving to disk"
|
msgid "Options to control saving to disk"
|
||||||
msgstr "Einstellungen zur Kontrolle des Speicherns auf die Festplatte"
|
msgstr "Einstellungen zur Steuerung des Speicherns auf die Festplatte"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -20335,7 +20348,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-04 13:24+0000\n"
|
"PO-Revision-Date: 2012-04-04 13:24+0000\n"
|
||||||
"Last-Translator: Thalia Tsalkitzi <TsalkitziT@unisystems.gr>\n"
|
"Last-Translator: Thalia Tsalkitzi <TsalkitziT@unisystems.gr>\n"
|
||||||
"Language-Team: Greek <el@li.org>\n"
|
"Language-Team: Greek <el@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:43+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:45+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Δεν κάνει τίποτα"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Δεν κάνει τίποτα"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4771,6 +4771,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4891,7 +4895,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -5124,7 +5128,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5387,7 +5391,7 @@ msgstr "Η λήψη μεταδεδομένων απέτυχε"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Η λήψη απέτυχε"
|
msgstr "Η λήψη απέτυχε"
|
||||||
|
|
||||||
@ -5424,7 +5428,7 @@ msgid "Download complete"
|
|||||||
msgstr "Η λήψη ολοκληρώθηκε"
|
msgstr "Η λήψη ολοκληρώθηκε"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -9094,15 +9098,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Αντιγραφή στο πρόχειρο"
|
msgstr "Αντιγραφή στο πρόχειρο"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Εμφάνιση καταγραφής"
|
msgstr "Εμφάνιση καταγραφής"
|
||||||
|
|
||||||
@ -10802,90 +10806,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Συνταγή για "
|
msgstr "Συνταγή για "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Άκυρη εισαγωγή"
|
msgstr "Άκυρη εισαγωγή"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "Αντικατάσταση συνταγής;"
|
msgstr "Αντικατάσταση συνταγής;"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr "Μια συνταγή με το όνομα %s ήδη υπάρχει. Θέλετε να αντικατασταθεί;"
|
msgstr "Μια συνταγή με το όνομα %s ήδη υπάρχει. Θέλετε να αντικατασταθεί;"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Συνταγές"
|
msgstr "Συνταγές"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11643,7 +11655,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Προηγούμενη Σελίδα"
|
msgstr "Προηγούμενη Σελίδα"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -12126,7 +12138,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Επεξεργασία μεταδεδομένων"
|
msgstr "Επεξεργασία μεταδεδομένων"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12307,38 +12319,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Αναζήτηση…"
|
msgstr "Αναζήτηση…"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -18109,7 +18121,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-08-05 16:13+0000\n"
|
"PO-Revision-Date: 2011-08-05 16:13+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"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:55+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4559,6 +4559,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4679,7 +4683,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4912,7 +4916,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5173,7 +5177,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5205,7 +5209,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8875,15 +8879,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10583,90 +10587,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11424,7 +11436,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11907,7 +11919,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12088,38 +12100,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17872,7 +17884,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2011-08-05 17:28+0000\n"
|
"PO-Revision-Date: 2011-08-05 17:28+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"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:55+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Does absolutely nothing"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Does absolutely nothing"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4643,6 +4643,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4763,7 +4767,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4996,7 +5000,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5257,7 +5261,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5289,7 +5293,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8959,15 +8963,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10667,90 +10671,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11508,7 +11520,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11991,7 +12003,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12172,38 +12184,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17956,7 +17968,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-08 14:29+0000\n"
|
"PO-Revision-Date: 2012-04-08 14:29+0000\n"
|
||||||
"Last-Translator: Vibhav Pant <vibhavp@gmail.com>\n"
|
"Last-Translator: Vibhav Pant <vibhavp@gmail.com>\n"
|
||||||
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
|
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:54+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Does absolutely nothing"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Does absolutely nothing"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -5237,6 +5237,10 @@ msgstr "No books selected for catalogue generation"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Generating %s catalogue..."
|
msgstr "Generating %s catalogue..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Catalogue generated."
|
msgstr "Catalogue generated."
|
||||||
@ -5359,7 +5363,7 @@ msgstr "Note that the actual library folder will be renamed."
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Already exists"
|
msgstr "Already exists"
|
||||||
@ -5610,7 +5614,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5885,7 +5889,7 @@ msgstr "Failed to download metadata"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Download failed"
|
msgstr "Download failed"
|
||||||
|
|
||||||
@ -5921,7 +5925,7 @@ msgid "Download complete"
|
|||||||
msgstr "Download complete"
|
msgstr "Download complete"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Download log"
|
msgstr "Download log"
|
||||||
|
|
||||||
@ -9878,15 +9882,15 @@ msgid "Copied"
|
|||||||
msgstr "Copied"
|
msgstr "Copied"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Copy to clipboard"
|
msgstr "Copy to clipboard"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "View log"
|
msgstr "View log"
|
||||||
|
|
||||||
@ -11741,90 +11745,98 @@ msgstr "&Rebuild {0}"
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr "&Preview {0}"
|
msgstr "&Preview {0}"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "No recipe selected"
|
msgstr "No recipe selected"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgstr "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Recipe for "
|
msgstr "Recipe for "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "Switch to Advanced mode"
|
msgstr "Switch to Advanced mode"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Switch to Basic mode"
|
msgstr "Switch to Basic mode"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "Feed must have a title"
|
msgstr "Feed must have a title"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "The feed must have a title"
|
msgstr "The feed must have a title"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "Feed must have a URL"
|
msgstr "Feed must have a URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "The feed %s must have a URL"
|
msgstr "The feed %s must have a URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "This feed has already been added to the recipe"
|
msgstr "This feed has already been added to the recipe"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Invalid input"
|
msgstr "Invalid input"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>Could not create recipe. Error:<br>%s"
|
msgstr "<p>Could not create recipe. Error:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "Replace recipe?"
|
msgstr "Replace recipe?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr "A custom recipe named %s already exists. Do you want to replace it?"
|
msgstr "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr "Choose builtin recipe"
|
msgstr "Choose builtin recipe"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Choose a recipe file"
|
msgstr "Choose a recipe file"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Recipes"
|
msgstr "Recipes"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12616,7 +12628,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Previous Page"
|
msgstr "Previous Page"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -13139,7 +13151,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Edit Metadata"
|
msgstr "Edit Metadata"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -13339,39 +13351,39 @@ msgstr ""
|
|||||||
"single distinctive word from the title.<p>To see the full log, click \"Show "
|
"single distinctive word from the title.<p>To see the full log, click \"Show "
|
||||||
"Details\"."
|
"Details\"."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr "Current cover"
|
msgstr "Current cover"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Searching..."
|
msgstr "Searching..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr "Downloading covers for <b>%s</b>, please wait..."
|
msgstr "Downloading covers for <b>%s</b>, please wait..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr "Failed to download any covers, click \"Show details\" for details."
|
msgstr "Failed to download any covers, click \"Show details\" for details."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr "Could not find any covers for <b>%s</b>"
|
msgstr "Could not find any covers for <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
"Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr "Downloading metadata..."
|
msgstr "Downloading metadata..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Downloading cover..."
|
msgstr "Downloading cover..."
|
||||||
|
|
||||||
@ -19999,14 +20011,10 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
|
||||||
"columns above."
|
|
||||||
msgstr ""
|
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
|
||||||
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31
|
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182
|
#: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182
|
||||||
|
@ -7,7 +7,7 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-03-20 07:43+0000\n"
|
"PO-Revision-Date: 2012-03-20 07:43+0000\n"
|
||||||
"Last-Translator: Eliovir <Unknown>\n"
|
"Last-Translator: Eliovir <Unknown>\n"
|
||||||
"Language-Team: Esperanto <eo@li.org>\n"
|
"Language-Team: Esperanto <eo@li.org>\n"
|
||||||
@ -15,8 +15,8 @@ msgstr ""
|
|||||||
"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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-09 04:41+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 15060)\n"
|
"X-Generator: Launchpad (build 15070)\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"
|
||||||
@ -40,7 +40,7 @@ msgstr "Faras absolute nenion"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -80,7 +80,7 @@ msgstr "Faras absolute nenion"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -4593,6 +4593,10 @@ msgstr ""
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4713,7 +4717,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -4946,7 +4950,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -5207,7 +5211,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -5239,7 +5243,7 @@ msgid "Download complete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8909,15 +8913,15 @@ msgid "Copied"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -10617,90 +10621,98 @@ msgstr ""
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -11458,7 +11470,7 @@ msgid "Previous Page"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -11941,7 +11953,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -12122,38 +12134,38 @@ msgid ""
|
|||||||
"Details."
|
"Details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -17906,7 +17918,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10,15 +10,15 @@ 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: 2012-04-08 09:51+0000\n"
|
"POT-Creation-Date: 2012-04-13 06:30+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-09 18:52+0000\n"
|
"PO-Revision-Date: 2012-04-13 15:35+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"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-10 04:56+0000\n"
|
"X-Launchpad-Export-Date: 2012-04-14 04:52+0000\n"
|
||||||
"X-Generator: Launchpad (build 15070)\n"
|
"X-Generator: Launchpad (build 15070)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537
|
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:537
|
||||||
@ -59,7 +59,7 @@ msgstr "No hace absolutamente nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:493
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112
|
||||||
@ -99,7 +99,7 @@ msgstr "No hace absolutamente nada"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23
|
||||||
@ -5387,6 +5387,10 @@ msgstr "No se ha seleccionado ningún libro para la generación de un catálogo"
|
|||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Generando catálogo %s..."
|
msgstr "Generando catálogo %s..."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71
|
||||||
|
msgid "Catalog generation complete, with warnings."
|
||||||
|
msgstr "Generación del catálogo completada con advertencias."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Catálogo generado."
|
msgstr "Catálogo generado."
|
||||||
@ -5511,7 +5515,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308
|
||||||
msgid "Already exists"
|
msgid "Already exists"
|
||||||
msgstr "Ya existe"
|
msgstr "Ya existe"
|
||||||
@ -5772,7 +5776,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102
|
||||||
@ -6051,7 +6055,7 @@ msgstr "No se pudieron descargar los metadatos"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:817
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "La descarga ha fallado"
|
msgstr "La descarga ha fallado"
|
||||||
|
|
||||||
@ -6089,7 +6093,7 @@ msgid "Download complete"
|
|||||||
msgstr "Descarga finalizada"
|
msgstr "Descarga finalizada"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:121
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:879
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880
|
||||||
msgid "Download log"
|
msgid "Download log"
|
||||||
msgstr "Registro de descargas"
|
msgstr "Registro de descargas"
|
||||||
|
|
||||||
@ -10064,15 +10068,15 @@ msgid "Copied"
|
|||||||
msgstr "Copiado"
|
msgstr "Copiado"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:872
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr "Copiar al portapapeles"
|
msgstr "Copiar al portapapeles"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:189
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:244
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:936
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1042
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr "Ver registro"
|
msgstr "Ver registro"
|
||||||
|
|
||||||
@ -11962,91 +11966,99 @@ msgstr "&Reconstruir {0}"
|
|||||||
msgid "&Preview {0}"
|
msgid "&Preview {0}"
|
||||||
msgstr "&Previsualizar {0}"
|
msgstr "&Previsualizar {0}"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112
|
||||||
|
msgid "No recipes"
|
||||||
|
msgstr "No hay recetas"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113
|
||||||
|
msgid "No custom recipes created."
|
||||||
|
msgstr "No se han creado recetas personalizadas."
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144
|
||||||
msgid "No recipe selected"
|
msgid "No recipe selected"
|
||||||
msgstr "No hay ninguna receta seleccionada"
|
msgstr "No hay ninguna receta seleccionada"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
msgid "The attached file: %(fname)s is a recipe to download %(title)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El fichero adjunto: %(fname)s es una receta para descargar %(title)s."
|
"El fichero adjunto: %(fname)s es una receta para descargar %(title)s."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152
|
||||||
msgid "Recipe for "
|
msgid "Recipe for "
|
||||||
msgstr "Receta para "
|
msgstr "Receta para "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265
|
||||||
msgid "Switch to Advanced mode"
|
msgid "Switch to Advanced mode"
|
||||||
msgstr "Cambiar a modo avanzado"
|
msgstr "Cambiar a modo avanzado"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183
|
||||||
msgid "Switch to Basic mode"
|
msgid "Switch to Basic mode"
|
||||||
msgstr "Cambiar a modo básico"
|
msgstr "Cambiar a modo básico"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193
|
||||||
msgid "Feed must have a title"
|
msgid "Feed must have a title"
|
||||||
msgstr "El canal debe tener un título"
|
msgstr "El canal debe tener un título"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194
|
||||||
msgid "The feed must have a title"
|
msgid "The feed must have a title"
|
||||||
msgstr "El canal debe tener un título"
|
msgstr "El canal debe tener un título"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198
|
||||||
msgid "Feed must have a URL"
|
msgid "Feed must have a URL"
|
||||||
msgstr "El canal debe tener una URL"
|
msgstr "El canal debe tener una URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The feed %s must have a URL"
|
msgid "The feed %s must have a URL"
|
||||||
msgstr "El canal %s debe tener una URL"
|
msgstr "El canal %s debe tener una URL"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205
|
||||||
msgid "This feed has already been added to the recipe"
|
msgid "This feed has already been added to the recipe"
|
||||||
msgstr "Este canal ya se ha añadido a la receta"
|
msgstr "Este canal ya se ha añadido a la receta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343
|
||||||
msgid "Invalid input"
|
msgid "Invalid input"
|
||||||
msgstr "Entrada incorrecta"
|
msgstr "Entrada incorrecta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<p>Could not create recipe. Error:<br>%s"
|
msgid "<p>Could not create recipe. Error:<br>%s"
|
||||||
msgstr "<p>No se puede crear la receta. Error:<br>%s"
|
msgstr "<p>No se puede crear la receta. Error:<br>%s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347
|
||||||
msgid "Replace recipe?"
|
msgid "Replace recipe?"
|
||||||
msgstr "¿Reemplazar la receta?"
|
msgstr "¿Reemplazar la receta?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
msgid "A custom recipe named %s already exists. Do you want to replace it?"
|
||||||
msgstr "Una receta personalizada llamada %s ya existe. ¿Quiere reemplazarla?"
|
msgstr "Una receta personalizada llamada %s ya existe. ¿Quiere reemplazarla?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288
|
||||||
msgid "Choose builtin recipe"
|
msgid "Choose builtin recipe"
|
||||||
msgstr "Elija una receta predefinida"
|
msgstr "Elija una receta predefinida"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334
|
||||||
msgid "Choose a recipe file"
|
msgid "Choose a recipe file"
|
||||||
msgstr "Seleccionar un fichero de receta"
|
msgstr "Seleccionar un fichero de receta"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335
|
||||||
msgid "Recipes"
|
msgid "Recipes"
|
||||||
msgstr "Recetas"
|
msgstr "Recetas"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"You will lose any unsaved changes. To save your changes, click the "
|
"You will lose any unsaved changes. To save your changes, click the "
|
||||||
"Add/Update recipe button. Continue?"
|
"Add/Update recipe button. Continue?"
|
||||||
@ -12847,7 +12859,7 @@ msgid "Previous Page"
|
|||||||
msgstr "Página anterior"
|
msgstr "Página anterior"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
#: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:933
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
#: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
@ -13377,7 +13389,7 @@ msgid "Edit Metadata"
|
|||||||
msgstr "Modificar metadatos"
|
msgstr "Modificar metadatos"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:926
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410
|
||||||
@ -13579,42 +13591,42 @@ msgstr ""
|
|||||||
"apellido del autor y una sola palabra del título.<p>Para ver el registro "
|
"apellido del autor y una sola palabra del título.<p>Para ver el registro "
|
||||||
"completo, pulse «Mostrar detalles»."
|
"completo, pulse «Mostrar detalles»."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:624
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625
|
||||||
msgid "Current cover"
|
msgid "Current cover"
|
||||||
msgstr "Portada actual"
|
msgstr "Portada actual"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:627
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando..."
|
msgstr "Buscando..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:787
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Downloading covers for <b>%s</b>, please wait..."
|
msgid "Downloading covers for <b>%s</b>, please wait..."
|
||||||
msgstr "Descargando portadas para <b>%s</b>, espere..."
|
msgstr "Descargando portadas para <b>%s</b>, espere..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819
|
||||||
msgid "Failed to download any covers, click \"Show details\" for details."
|
msgid "Failed to download any covers, click \"Show details\" for details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"No se pudo descargar ninguna portada, pulse en «Mostrar detalles» para más "
|
"No se pudo descargar ninguna portada, pulse en «Mostrar detalles» para más "
|
||||||
"información."
|
"información."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:824
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find any covers for <b>%s</b>"
|
msgid "Could not find any covers for <b>%s</b>"
|
||||||
msgstr "No se encontró ninguna portada para <b>%s</b>"
|
msgstr "No se encontró ninguna portada para <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:826
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se encontraron <b>%(num)d</b> portadas para %(title)s. Escoja la que más le "
|
"Se encontraron <b>%(num)d</b> portadas para %(title)s. Escoja la que más le "
|
||||||
"guste."
|
"guste."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:915
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916
|
||||||
msgid "Downloading metadata..."
|
msgid "Downloading metadata..."
|
||||||
msgstr "Descargando metadatos..."
|
msgstr "Descargando metadatos..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1026
|
#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027
|
||||||
msgid "Downloading cover..."
|
msgid "Downloading cover..."
|
||||||
msgstr "Descargando portada..."
|
msgstr "Descargando portada..."
|
||||||
|
|
||||||
@ -20372,7 +20384,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
#: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420
|
||||||
msgid ""
|
msgid ""
|
||||||
"Choose columns to be searched when not using prefixes, as for example, when "
|
"Choose columns to be searched when not using prefixes, as for example, when "
|
||||||
"searching for Redd instead of title:Red. Enter a list of search/lookup names "
|
"searching for Red instead of title:Red. Enter a list of search/lookup names "
|
||||||
"separated by commas. Only takes effect if you set the option to limit search "
|
"separated by commas. Only takes effect if you set the option to limit search "
|
||||||
"columns above."
|
"columns above."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user