mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Sync to trunk.
This commit is contained in:
commit
8d34fe7167
@ -4,6 +4,70 @@
|
|||||||
# for important features/bug fixes.
|
# for important features/bug fixes.
|
||||||
# Also, each release can have new and improved recipes.
|
# Also, each release can have new and improved recipes.
|
||||||
|
|
||||||
|
- version: 0.6.36
|
||||||
|
date: 2010-01-25
|
||||||
|
|
||||||
|
new features:
|
||||||
|
- title: Catalog generation in MOBI format
|
||||||
|
|
||||||
|
- title: "Driver for Inves Book 600"
|
||||||
|
|
||||||
|
- title: "Show notifications on OS X even when systray icon is disabled. "
|
||||||
|
|
||||||
|
bug fixes:
|
||||||
|
- title: Fix memory leak in catalog generation
|
||||||
|
|
||||||
|
- title: Fix regression that broke PML output
|
||||||
|
|
||||||
|
- title: Fix bug in MOBI Input
|
||||||
|
tickets: [4643]
|
||||||
|
|
||||||
|
- title: "Replace commas with semi-colons in download tags"
|
||||||
|
tickets: [4650]
|
||||||
|
|
||||||
|
- title: Fix catalog output format dropdown empty in linux
|
||||||
|
tickets: [4656]
|
||||||
|
|
||||||
|
- title: "Fix display of non-English characters in OS X notifications"
|
||||||
|
tickets: [4654]
|
||||||
|
|
||||||
|
- title: Add .cbc to list of book formats
|
||||||
|
tickets: [4662]
|
||||||
|
|
||||||
|
- title: "Content server: Mobile page breaks if library contains empty books. Now fixed."
|
||||||
|
|
||||||
|
- title: "Support old 212 byte header PDB files"
|
||||||
|
tickets: [4646]
|
||||||
|
|
||||||
|
- title: "Fix regression that caused wrong error message to be displayed when device is out of space"
|
||||||
|
|
||||||
|
|
||||||
|
new recipes:
|
||||||
|
- title: Harvard Business Review Blogs
|
||||||
|
author: Brian_G
|
||||||
|
|
||||||
|
- title: Neowin
|
||||||
|
author: Darko Miletic
|
||||||
|
|
||||||
|
- title: Greensboro News and Record
|
||||||
|
author: Walt Anthony
|
||||||
|
|
||||||
|
- title: Hot Air
|
||||||
|
author: Walt Anthony
|
||||||
|
|
||||||
|
- title: ionline
|
||||||
|
author: Darko Miletic
|
||||||
|
|
||||||
|
- title: The National Review Online
|
||||||
|
author: Walt Anthony
|
||||||
|
|
||||||
|
improved recipes:
|
||||||
|
- Ars Technica
|
||||||
|
- Sports Illustrated
|
||||||
|
- Common Dreams
|
||||||
|
- Wired Magazine
|
||||||
|
|
||||||
|
|
||||||
- version: 0.6.35
|
- version: 0.6.35
|
||||||
date: 2010-01-22
|
date: 2010-01-22
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
BIN
resources/images/news/nursingtimes.png
Normal file
BIN
resources/images/news/nursingtimes.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 788 B |
BIN
resources/images/news/observer.png
Normal file
BIN
resources/images/news/observer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 835 B |
@ -60,7 +60,7 @@ class ArsTechnica2(BasicNewsRecipe):
|
|||||||
nurl = 'http://arstechnica.com' + atag['href']
|
nurl = 'http://arstechnica.com' + atag['href']
|
||||||
rawc = self.index_to_soup(nurl,True)
|
rawc = self.index_to_soup(nurl,True)
|
||||||
soup2 = BeautifulSoup(rawc, fromEncoding=self.encoding)
|
soup2 = BeautifulSoup(rawc, fromEncoding=self.encoding)
|
||||||
|
|
||||||
readmoretag = soup2.find('div', attrs={'class':'read-more-link'})
|
readmoretag = soup2.find('div', attrs={'class':'read-more-link'})
|
||||||
if readmoretag:
|
if readmoretag:
|
||||||
readmoretag.extract()
|
readmoretag.extract()
|
||||||
@ -90,7 +90,3 @@ class ArsTechnica2(BasicNewsRecipe):
|
|||||||
|
|
||||||
return soup
|
return soup
|
||||||
|
|
||||||
def get_article_url(self, article):
|
|
||||||
return article.get('feedburner_origlink', None).rpartition('?')[0]
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,26 +10,44 @@ doscovermagazine.com
|
|||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class DiscoverMagazine(BasicNewsRecipe):
|
class DiscoverMagazine(BasicNewsRecipe):
|
||||||
|
|
||||||
title = u'Discover Magazine'
|
title = u'Discover Magazine'
|
||||||
description = u'Science, Technology and the Future'
|
description = u'Science, Technology and the Future'
|
||||||
__author__ = 'Mike Diaz'
|
__author__ = 'Mike Diaz'
|
||||||
oldest_article = 33
|
|
||||||
language = 'en'
|
language = 'en'
|
||||||
|
|
||||||
max_articles_per_feed = 20
|
oldest_article = 33
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
no_stylesheets = True
|
||||||
|
remove_javascript = True
|
||||||
|
use_embedded_content = False
|
||||||
|
encoding = 'utf-8'
|
||||||
|
|
||||||
|
extra_css = '.headline {font-size: x-large;} \n .fact {padding-top: 10pt}'
|
||||||
|
|
||||||
|
remove_tags_before = dict(id='articlePage')
|
||||||
|
|
||||||
|
keep_only_tags = [dict(name='div', attrs={'id':'articlePage'})]
|
||||||
|
|
||||||
|
remove_tags = [dict(attrs={'id':['buttons', 'tool-box', 'teaser', 'already-subscriber', 'teaser-suite', 'related-articles', 'relatedItem', 'box-popular', 'box-blogs', 'box-news', 'footer']}),
|
||||||
|
dict(attrs={'class':'popularNewsBox'}),
|
||||||
|
dict(name=['img', 'style', 'head'])]
|
||||||
|
|
||||||
|
remove_tags_after = dict(id='articlePage')
|
||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
(u'Technology', u'http://discovermagazine.com/topics/technology/rss.xml'),
|
(u'Technology', u'http://discovermagazine.com/topics/technology/rss.xml'),
|
||||||
(u'Health - Medicine', u'http://discovermagazine.com/topics/health-medicine/rss.xml'),
|
(u'Health - Medicine', u'http://discovermagazine.com/topics/health-medicine/rss.xml'),
|
||||||
(u'Mind Brain', u'http://discovermagazine.com/topics/mind-brain/rss.xml'),
|
(u'Mind Brain', u'http://discovermagazine.com/topics/mind-brain/rss.xml'),
|
||||||
(u'Space', u'http://discovermagazine.com/topics/space/rss.xml'),
|
(u'Space', u'http://discovermagazine.com/topics/space/rss.xml'),
|
||||||
(u'Human Origins', u'http://discovermagazine.com/topics/human-origins/rss.xml'),
|
(u'Human Origins', u'http://discovermagazine.com/topics/human-origins/rss.xml'),
|
||||||
(u'Living World', u'http://discovermagazine.com/topics/living-world/rss.xml'),
|
(u'Living World', u'http://discovermagazine.com/topics/living-world/rss.xml'),
|
||||||
(u'Environment', u'http://discovermagazine.com/topics/environment/rss.xml'),
|
(u'Environment', u'http://discovermagazine.com/topics/environment/rss.xml'),
|
||||||
(u'Physics & Math', u'http://discovermagazine.com/topics/physics-math/rss.xml'),
|
(u'Physics & Math', u'http://discovermagazine.com/topics/physics-math/rss.xml'),
|
||||||
(u'Vital Signs', u'http://discovermagazine.com/columns/vital-signs/rss.xml'),
|
(u'Vital Signs', u'http://discovermagazine.com/columns/vital-signs/rss.xml'),
|
||||||
(u"20 Things you didn't know about...", u'http://discovermagazine.com/columns/20-things-you-didnt-know/rss.xml'),
|
(u"20 Things you didn't know about...", u'http://discovermagazine.com/columns/20-things-you-didnt-know/rss.xml'),
|
||||||
(u'Fuzzy Math', u'http://discovermagazine.com/columns/fuzzy-math/rss.xml'),
|
(u'Fuzzy Math', u'http://discovermagazine.com/columns/fuzzy-math/rss.xml'),
|
||||||
(u'The Brain', u'http://discovermagazine.com/columns/the-brain/rss.xml'),
|
(u'The Brain', u'http://discovermagazine.com/columns/the-brain/rss.xml'),
|
||||||
(u'Stupid Science Word of the Month', u'http://discovermagazine.com/columns/stupid-science-word-of-the-month/rss.xml'),
|
(u'Stupid Science Word of the Month', u'http://discovermagazine.com/columns/stupid-science-word-of-the-month/rss.xml'),
|
||||||
(u'Science Not Fiction', u'http://blogs.discovermagazine.com/sciencenotfiction/wp-rss.php')
|
(u'Science Not Fiction', u'http://blogs.discovermagazine.com/sciencenotfiction/wp-rss.php')
|
||||||
]
|
]
|
||||||
|
197
resources/recipes/hbr_blogs.recipe
Normal file
197
resources/recipes/hbr_blogs.recipe
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
import re
|
||||||
|
|
||||||
|
# Needed for BLOGs
|
||||||
|
from calibre.web.feeds import Feed
|
||||||
|
|
||||||
|
class HBR(BasicNewsRecipe):
|
||||||
|
|
||||||
|
title = 'Harvard Business Review Blogs'
|
||||||
|
description = 'To subscribe go to http://hbr.harvardbusiness.org'
|
||||||
|
needs_subscription = True
|
||||||
|
__author__ = 'Kovid Goyal and Sujata Raman, enhanced by BrianG'
|
||||||
|
language = 'en'
|
||||||
|
no_stylesheets = True
|
||||||
|
|
||||||
|
LOGIN_URL = 'http://hbr.org/login?request_url=/'
|
||||||
|
INDEX = 'http://hbr.org/current'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Blog Stuff
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
INCLUDE_BLOGS = True
|
||||||
|
INCLUDE_ARTICLES = False
|
||||||
|
|
||||||
|
# option-specific settings.
|
||||||
|
|
||||||
|
if INCLUDE_BLOGS == True:
|
||||||
|
remove_tags_after = dict(id='articleBody')
|
||||||
|
remove_tags_before = dict(id='pageFeature')
|
||||||
|
feeds = [('Blog','http://feeds.harvardbusiness.org/harvardbusiness')]
|
||||||
|
oldest_article = 30
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
else:
|
||||||
|
timefmt = ' [%B %Y]'
|
||||||
|
|
||||||
|
|
||||||
|
keep_only_tags = [ dict(name='div', id='pageContainer')
|
||||||
|
]
|
||||||
|
|
||||||
|
remove_tags = [dict(id=['mastheadContainer', 'magazineHeadline',
|
||||||
|
'articleToolbarTopRD', 'pageRightSubColumn', 'pageRightColumn',
|
||||||
|
'todayOnHBRListWidget', 'mostWidget', 'keepUpWithHBR',
|
||||||
|
'articleToolbarTop','articleToolbarBottom', 'articleToolbarRD',
|
||||||
|
'mailingListTout', 'partnerCenter', 'pageFooter']),
|
||||||
|
dict(name='iframe')]
|
||||||
|
|
||||||
|
extra_css = '''
|
||||||
|
a {font-family:Georgia,"Times New Roman",Times,serif; font-style:italic; color:#000000; }
|
||||||
|
.article{font-family:Georgia,"Times New Roman",Times,serif; font-size: xx-small;}
|
||||||
|
h2{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:large; }
|
||||||
|
h4{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:small; }
|
||||||
|
#articleBody{font-family:Georgia,"Times New Roman",Times,serif; font-style:italic; color:#000000;font-size:x-small;}
|
||||||
|
#summaryText{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:x-small;}
|
||||||
|
'''
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def get_browser(self):
|
||||||
|
br = BasicNewsRecipe.get_browser(self)
|
||||||
|
br.open(self.LOGIN_URL)
|
||||||
|
br.select_form(name='signInForm')
|
||||||
|
br['signInForm:username'] = self.username
|
||||||
|
br['signInForm:password'] = self.password
|
||||||
|
raw = br.submit().read()
|
||||||
|
if 'My Account' not in raw:
|
||||||
|
raise Exception('Failed to login, are you sure your username and password are correct?')
|
||||||
|
self.logout_url = None
|
||||||
|
link = br.find_link(text='Sign out')
|
||||||
|
if link:
|
||||||
|
self.logout_url = link.absolute_url
|
||||||
|
return br
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def cleanup(self):
|
||||||
|
if self.logout_url is not None:
|
||||||
|
self.browser.open(self.logout_url)
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def map_url(self, url):
|
||||||
|
if url.endswith('/ar/1'):
|
||||||
|
return url[:-1]+'pr'
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def hbr_get_toc(self):
|
||||||
|
soup = self.index_to_soup(self.INDEX)
|
||||||
|
url = soup.find('a', text=lambda t:'Full Table of Contents' in t).parent.get('href')
|
||||||
|
return self.index_to_soup('http://hbr.org'+url)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def hbr_parse_section(self, container, feeds):
|
||||||
|
current_section = None
|
||||||
|
current_articles = []
|
||||||
|
for x in container.findAll(name=['li', 'h3', 'h4']):
|
||||||
|
if x.name in ['h3', 'h4'] and not x.findAll(True):
|
||||||
|
if current_section and current_articles:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
current_section = self.tag_to_string(x)
|
||||||
|
current_articles = []
|
||||||
|
self.log('\tFound section:', current_section)
|
||||||
|
if x.name == 'li':
|
||||||
|
a = x.find('a', href=True)
|
||||||
|
if a is not None:
|
||||||
|
title = self.tag_to_string(a)
|
||||||
|
url = a.get('href')
|
||||||
|
if '/ar/' not in url:
|
||||||
|
continue
|
||||||
|
if url.startswith('/'):
|
||||||
|
url = 'http://hbr.org'+url
|
||||||
|
url = self.map_url(url)
|
||||||
|
p = x.find('p')
|
||||||
|
desc = ''
|
||||||
|
if p is not None:
|
||||||
|
desc = self.tag_to_string(p)
|
||||||
|
if not title or not url:
|
||||||
|
continue
|
||||||
|
self.log('\t\tFound article:', title)
|
||||||
|
self.log('\t\t\t', url)
|
||||||
|
self.log('\t\t\t', desc)
|
||||||
|
current_articles.append({'title':title, 'url':url,
|
||||||
|
'description':desc, 'date':''})
|
||||||
|
if current_section and current_articles:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def hbr_parse_toc(self, soup):
|
||||||
|
feeds = []
|
||||||
|
features = soup.find(id='issueFeaturesContent')
|
||||||
|
self.hbr_parse_section(features, feeds)
|
||||||
|
departments = soup.find(id='issueDepartments')
|
||||||
|
self.hbr_parse_section(departments, feeds)
|
||||||
|
return feeds
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def feed_to_index_append(self, feedObject, masterFeed):
|
||||||
|
# Loop thru the feed object and build the correct type of article list
|
||||||
|
for feed in feedObject:
|
||||||
|
# build the correct structure from the feed object
|
||||||
|
newArticles = []
|
||||||
|
for article in feed.articles:
|
||||||
|
newArt = {
|
||||||
|
'title' : article.title,
|
||||||
|
'url' : article.url,
|
||||||
|
'date' : article.date,
|
||||||
|
'description' : article.text_summary
|
||||||
|
}
|
||||||
|
newArticles.append(newArt)
|
||||||
|
|
||||||
|
# Append the earliest/latest dates of the feed to the feed title
|
||||||
|
startDate, endDate = self.get_feed_dates(feed, '%d-%b')
|
||||||
|
newFeedTitle = feed.title + ' (' + startDate + ' thru ' + endDate + ')'
|
||||||
|
|
||||||
|
# append the newly-built list object to the index object passed in
|
||||||
|
# as masterFeed.
|
||||||
|
masterFeed.append( (newFeedTitle,newArticles) )
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def get_feed_dates(self, feedObject, dateMask):
|
||||||
|
startDate = feedObject.articles[len(feedObject.articles)-1].localtime.strftime(dateMask)
|
||||||
|
endDate = feedObject.articles[0].localtime.strftime(dateMask)
|
||||||
|
|
||||||
|
return startDate, endDate
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def hbr_parse_blogs(self, feeds):
|
||||||
|
# Do the "official" parse_feeds first
|
||||||
|
rssFeeds = Feed()
|
||||||
|
|
||||||
|
# Use the PARSE_FEEDS method to get a Feeds object of the articles
|
||||||
|
rssFeeds = BasicNewsRecipe.parse_feeds(self)
|
||||||
|
|
||||||
|
# Create a new feed of the right configuration and append to existing afeeds
|
||||||
|
self.feed_to_index_append(rssFeeds[:], feeds)
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def parse_index(self):
|
||||||
|
if self.INCLUDE_ARTICLES == True:
|
||||||
|
soup = self.hbr_get_toc()
|
||||||
|
feeds = self.hbr_parse_toc(soup)
|
||||||
|
else:
|
||||||
|
feeds = []
|
||||||
|
|
||||||
|
# blog stuff
|
||||||
|
if self.INCLUDE_BLOGS == True:
|
||||||
|
self.hbr_parse_blogs(feeds)
|
||||||
|
|
||||||
|
return feeds
|
||||||
|
#-------------------------------------------------------------------------------------------------
|
||||||
|
def get_cover_url(self):
|
||||||
|
cover_url = None
|
||||||
|
index = 'http://hbr.org/current'
|
||||||
|
soup = self.index_to_soup(index)
|
||||||
|
link_item = soup.find('img', alt=re.compile("Current Issue"), src=True)
|
||||||
|
|
||||||
|
if link_item:
|
||||||
|
cover_url = 'http://hbr.org' + link_item['src']
|
||||||
|
|
||||||
|
return cover_url
|
@ -1,4 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
from calibre.web.feeds.recipes import BasicNewsRecipe
|
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||||
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
|
|
||||||
@ -8,6 +11,7 @@ class JASN(BasicNewsRecipe):
|
|||||||
__author__ = 'Krittika Goyal'
|
__author__ = 'Krittika Goyal'
|
||||||
oldest_article = 31 #days
|
oldest_article = 31 #days
|
||||||
max_articles_per_feed = 25
|
max_articles_per_feed = 25
|
||||||
|
delay = 5
|
||||||
needs_subscription = True
|
needs_subscription = True
|
||||||
|
|
||||||
INDEX = 'http://jasn.asnjournals.org/current.shtml'
|
INDEX = 'http://jasn.asnjournals.org/current.shtml'
|
||||||
@ -15,13 +19,13 @@ class JASN(BasicNewsRecipe):
|
|||||||
remove_tags_before = dict(name='h2')
|
remove_tags_before = dict(name='h2')
|
||||||
#remove_tags_after = dict(name='th', attrs={'align':'left'})
|
#remove_tags_after = dict(name='th', attrs={'align':'left'})
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
dict(name='iframe'),
|
dict(name='iframe'),
|
||||||
#dict(name='div', attrs={'class':'related-articles'}),
|
#dict(name='div', attrs={'class':'related-articles'}),
|
||||||
dict(name='td', attrs={'id':['jasnFooter']}),
|
dict(name='td', attrs={'id':['jasnFooter']}),
|
||||||
dict(name='table', attrs={'id':"jasnNavBar"}),
|
dict(name='table', attrs={'id':"jasnNavBar"}),
|
||||||
dict(name='table', attrs={'class':'content_box_outer_table'}),
|
dict(name='table', attrs={'class':'content_box_outer_table'}),
|
||||||
dict(name='th', attrs={'align':'left'})
|
dict(name='th', attrs={'align':'left'})
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -45,10 +49,52 @@ class JASN(BasicNewsRecipe):
|
|||||||
raise ValueError('Failed to log in, is your account expired?')
|
raise ValueError('Failed to log in, is your account expired?')
|
||||||
return br
|
return br
|
||||||
|
|
||||||
feeds = [
|
#feeds = [
|
||||||
('JASN',
|
#('JASN',
|
||||||
'http://jasn.asnjournals.org/rss/current.xml'),
|
#'http://jasn.asnjournals.org/rss/current.xml'),
|
||||||
]
|
#]
|
||||||
|
|
||||||
|
|
||||||
|
#TO GET ARTICLE TOC
|
||||||
|
def jasn_get_index(self):
|
||||||
|
return self.index_to_soup('http://jasn.asnjournals.org/current.shtml')
|
||||||
|
|
||||||
|
# To parse artice toc
|
||||||
|
def parse_index(self):
|
||||||
|
parse_soup = self.jasn_get_index()
|
||||||
|
|
||||||
|
div = parse_soup.find(id='tocBody')
|
||||||
|
|
||||||
|
current_section = None
|
||||||
|
current_articles = []
|
||||||
|
feeds = []
|
||||||
|
for x in div.findAll(True):
|
||||||
|
if x.name == 'h2':
|
||||||
|
# Section heading found
|
||||||
|
if current_articles and current_section:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
current_section = self.tag_to_string(x)
|
||||||
|
current_articles = []
|
||||||
|
self.log('\tFound section:', current_section)
|
||||||
|
if current_section is not None and x.name == 'strong':
|
||||||
|
title = self.tag_to_string(x)
|
||||||
|
a = x.parent.parent.find('a', href=lambda x: x and '/full/' in x)
|
||||||
|
if a is None:
|
||||||
|
continue
|
||||||
|
url = a.get('href', False)
|
||||||
|
if not url or not title:
|
||||||
|
continue
|
||||||
|
if url.startswith('/'):
|
||||||
|
url = 'http://jasn.asnjournals.org'+url
|
||||||
|
self.log('\t\tFound article:', title)
|
||||||
|
self.log('\t\t\t', url)
|
||||||
|
current_articles.append({'title': title, 'url':url,
|
||||||
|
'description':'', 'date':''})
|
||||||
|
|
||||||
|
if current_articles and current_section:
|
||||||
|
feeds.append((current_section, current_articles))
|
||||||
|
|
||||||
|
return feeds
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -59,10 +105,18 @@ class JASN(BasicNewsRecipe):
|
|||||||
if not url:
|
if not url:
|
||||||
continue
|
continue
|
||||||
if url.startswith('/'):
|
if url.startswith('/'):
|
||||||
url = 'http://jasn.asnjournals.org/'+url
|
url = 'http://jasn.asnjournals.org'+url
|
||||||
isoup = self.index_to_soup(url)
|
img = isoup = None
|
||||||
img = isoup.find('img', src=lambda x: x and
|
try:
|
||||||
x.startswith('/content/'))
|
isoup = self.index_to_soup(url)
|
||||||
|
except:
|
||||||
|
time.sleep(5)
|
||||||
|
try:
|
||||||
|
isoup = self.index_to_soup(url)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
img = isoup.find('img', src=lambda x: x and x.startswith('/content/'))
|
||||||
|
|
||||||
if img is not None:
|
if img is not None:
|
||||||
img.extract()
|
img.extract()
|
||||||
table = a.findParent('table')
|
table = a.findParent('table')
|
||||||
@ -71,3 +125,4 @@ class JASN(BasicNewsRecipe):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
239
resources/recipes/macleans.recipe
Normal file
239
resources/recipes/macleans.recipe
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
|
||||||
|
'''
|
||||||
|
macleans.ca
|
||||||
|
'''
|
||||||
|
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||||
|
from calibre.ebooks.BeautifulSoup import Tag
|
||||||
|
from datetime import timedelta, date
|
||||||
|
|
||||||
|
class Macleans(BasicNewsRecipe):
|
||||||
|
title = u'Macleans Magazine'
|
||||||
|
__author__ = 'Nick Redding'
|
||||||
|
language = 'en_CA'
|
||||||
|
description = ('Macleans Magazine')
|
||||||
|
|
||||||
|
no_stylesheets = True
|
||||||
|
timefmt = ' [%b %d]'
|
||||||
|
|
||||||
|
# customization notes: delete sections you are not interested in
|
||||||
|
# set oldest_article to the maximum number of days back from today to include articles
|
||||||
|
sectionlist = [
|
||||||
|
['http://www2.macleans.ca/','Front Page'],
|
||||||
|
['http://www2.macleans.ca/category/canada/','Canada'],
|
||||||
|
['http://www2.macleans.ca/category/world-from-the-magazine/','World'],
|
||||||
|
['http://www2.macleans.ca/category/business','Business'],
|
||||||
|
['http://www2.macleans.ca/category/arts-culture/','Culture'],
|
||||||
|
['http://www2.macleans.ca/category/opinion','Opinion'],
|
||||||
|
['http://www2.macleans.ca/category/health-from-the-magazine/','Health'],
|
||||||
|
['http://www2.macleans.ca/category/environment-from-the-magazine/','Environment'],
|
||||||
|
['http://www2.macleans.ca/category/education/','On Campus'],
|
||||||
|
['http://www2.macleans.ca/category/travel-from-the-magazine/','Travel']
|
||||||
|
]
|
||||||
|
oldest_article = 7
|
||||||
|
|
||||||
|
# formatting for print version of articles
|
||||||
|
extra_css = '''h2{font-family:Times,serif; font-size:large;}
|
||||||
|
small {font-family:Times,serif; font-size:xx-small; list-style-type: none;}
|
||||||
|
'''
|
||||||
|
|
||||||
|
# tag handling for print version of articles
|
||||||
|
keep_only_tags = [dict(id='tw-print')]
|
||||||
|
remove_tags = [dict({'class':'postmetadata'})]
|
||||||
|
|
||||||
|
|
||||||
|
def preprocess_html(self,soup):
|
||||||
|
for img_tag in soup.findAll('img'):
|
||||||
|
parent_tag = img_tag.parent
|
||||||
|
if parent_tag.name == 'a':
|
||||||
|
new_tag = Tag(soup,'p')
|
||||||
|
new_tag.insert(0,img_tag)
|
||||||
|
parent_tag.replaceWith(new_tag)
|
||||||
|
elif parent_tag.name == 'p':
|
||||||
|
if not self.tag_to_string(parent_tag) == '':
|
||||||
|
new_div = Tag(soup,'div')
|
||||||
|
new_tag = Tag(soup,'p')
|
||||||
|
new_tag.insert(0,img_tag)
|
||||||
|
parent_tag.replaceWith(new_div)
|
||||||
|
new_div.insert(0,new_tag)
|
||||||
|
new_div.insert(1,parent_tag)
|
||||||
|
return soup
|
||||||
|
|
||||||
|
def parse_index(self):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
articles = {}
|
||||||
|
key = None
|
||||||
|
ans = []
|
||||||
|
|
||||||
|
def parse_index_page(page_url,page_title):
|
||||||
|
|
||||||
|
def decode_date(datestr):
|
||||||
|
dmysplit = datestr.strip().lower().split(',')
|
||||||
|
mdsplit = dmysplit[1].split()
|
||||||
|
m = ['january','february','march','april','may','june','july','august','september','october','november','december'].index(mdsplit[0])+1
|
||||||
|
d = int(mdsplit[1])
|
||||||
|
y = int(dmysplit[2].split()[0])
|
||||||
|
return date(y,m,d)
|
||||||
|
|
||||||
|
def article_title(tag):
|
||||||
|
atag = tag.find('a',href=True)
|
||||||
|
if not atag:
|
||||||
|
return ''
|
||||||
|
return self.tag_to_string(atag)
|
||||||
|
|
||||||
|
def article_url(tag):
|
||||||
|
atag = tag.find('a',href=True)
|
||||||
|
if not atag:
|
||||||
|
return ''
|
||||||
|
return atag['href']+'print/'
|
||||||
|
|
||||||
|
def article_description(tag):
|
||||||
|
for p_tag in tag.findAll('p'):
|
||||||
|
d = self.tag_to_string(p_tag,False)
|
||||||
|
if not d == '':
|
||||||
|
return d
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def compound_h4_h3_title(tag):
|
||||||
|
if tag.h4:
|
||||||
|
if tag.h3:
|
||||||
|
return self.tag_to_string(tag.h4,False)+u'\u2014'+self.tag_to_string(tag.h3,False)
|
||||||
|
else:
|
||||||
|
return self.tag_to_string(tag.h4,False)
|
||||||
|
elif tag.h3:
|
||||||
|
return self.tag_to_string(tag.h3,False)
|
||||||
|
else:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def compound_h2_h4_title(tag):
|
||||||
|
if tag.h2:
|
||||||
|
if tag.h4:
|
||||||
|
return self.tag_to_string(tag.h2,False)+u'\u2014'+self.tag_to_string(tag.h4,False)
|
||||||
|
else:
|
||||||
|
return self.tag_to_string(tag.h2,False)
|
||||||
|
elif tag.h4:
|
||||||
|
return self.tag_to_string(tag.h4,False)
|
||||||
|
else:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
def handle_article(header_tag, outer_tag):
|
||||||
|
if header_tag:
|
||||||
|
url = article_url(header_tag)
|
||||||
|
title = article_title(header_tag)
|
||||||
|
author_date_tag = outer_tag.h4
|
||||||
|
if author_date_tag:
|
||||||
|
author_date = self.tag_to_string(author_date_tag,False).split(' - ')
|
||||||
|
author = author_date[0].strip()
|
||||||
|
article_date = decode_date(author_date[1])
|
||||||
|
earliest_date = date.today() - timedelta(days=self.oldest_article)
|
||||||
|
if article_date < earliest_date:
|
||||||
|
self.log("Skipping article dated %s" % author_date[1])
|
||||||
|
else:
|
||||||
|
excerpt_div = outer_tag.find('div','excerpt')
|
||||||
|
if excerpt_div:
|
||||||
|
description = article_description(excerpt_div)
|
||||||
|
else:
|
||||||
|
description = ''
|
||||||
|
if not articles.has_key(page_title):
|
||||||
|
articles[page_title] = []
|
||||||
|
articles[page_title].append(dict(title=title,url=url,date=author_date[1],description=description,author=author,content=''))
|
||||||
|
|
||||||
|
def handle_category_article(cat, header_tag, outer_tag):
|
||||||
|
url = article_url(header_tag)
|
||||||
|
title = article_title(header_tag)
|
||||||
|
if not title == '':
|
||||||
|
title = cat+u'\u2014'+title
|
||||||
|
a_tag = outer_tag.find('span','authorLink')
|
||||||
|
if a_tag:
|
||||||
|
author = self.tag_to_string(a_tag,False)
|
||||||
|
a_tag.parent.extract()
|
||||||
|
else:
|
||||||
|
author = ''
|
||||||
|
description = article_description(outer_tag)
|
||||||
|
if not articles.has_key(page_title):
|
||||||
|
articles[page_title] = []
|
||||||
|
articles[page_title].append(dict(title=title,url=url,date='',description=description,author=author,content=''))
|
||||||
|
|
||||||
|
|
||||||
|
soup = self.index_to_soup(page_url)
|
||||||
|
|
||||||
|
if page_title == 'Front Page':
|
||||||
|
# special processing for the front page
|
||||||
|
top_stories = soup.find('div',{ "id" : "macleansFeatured" })
|
||||||
|
if top_stories:
|
||||||
|
for div_slide in top_stories.findAll('div','slide'):
|
||||||
|
url = article_url(div_slide)
|
||||||
|
div_title = div_slide.find('div','header')
|
||||||
|
if div_title:
|
||||||
|
title = self.tag_to_string(div_title,False)
|
||||||
|
else:
|
||||||
|
title = ''
|
||||||
|
description = article_description(div_slide)
|
||||||
|
if not articles.has_key(page_title):
|
||||||
|
articles[page_title] = []
|
||||||
|
articles[page_title].append(dict(title=title,url=url,date='',description=description,author='',content=''))
|
||||||
|
|
||||||
|
from_macleans = soup.find('div',{ "id" : "fromMacleans" })
|
||||||
|
if from_macleans:
|
||||||
|
for li_tag in from_macleans.findAll('li','fromMacleansArticle'):
|
||||||
|
title = compound_h4_h3_title(li_tag)
|
||||||
|
url = article_url(li_tag)
|
||||||
|
description = article_description(li_tag)
|
||||||
|
if not articles.has_key(page_title):
|
||||||
|
articles[page_title] = []
|
||||||
|
articles[page_title].append(dict(title=title,url=url,date='',description=description,author='',content=''))
|
||||||
|
|
||||||
|
blog_central = soup.find('div',{ "id" : "bloglist" })
|
||||||
|
if blog_central:
|
||||||
|
for li_tag in blog_central.findAll('li'):
|
||||||
|
title = compound_h2_h4_title(li_tag)
|
||||||
|
if li_tag.h4:
|
||||||
|
url = article_url(li_tag.h4)
|
||||||
|
if not articles.has_key(page_title):
|
||||||
|
articles[page_title] = []
|
||||||
|
articles[page_title].append(dict(title=title,url=url,date='',description='',author='',content=''))
|
||||||
|
|
||||||
|
# need_to_know = soup.find('div',{ "id" : "needToKnow" })
|
||||||
|
# if need_to_know:
|
||||||
|
# for div_tag in need_to_know('div',attrs={'class' : re.compile("^needToKnowArticle")}):
|
||||||
|
# title = compound_h4_h3_title(div_tag)
|
||||||
|
# url = article_url(div_tag)
|
||||||
|
# description = article_description(div_tag)
|
||||||
|
# if not articles.has_key(page_title):
|
||||||
|
# articles[page_title] = []
|
||||||
|
# articles[page_title].append(dict(title=title,url=url,date='',description=description,author='',content=''))
|
||||||
|
|
||||||
|
for news_category in soup.findAll('div','newsCategory'):
|
||||||
|
news_cat = self.tag_to_string(news_category.h4,False)
|
||||||
|
handle_category_article(news_cat, news_category.find('h2'), news_category.find('div'))
|
||||||
|
for news_item in news_category.findAll('li'):
|
||||||
|
handle_category_article(news_cat,news_item.h3,news_item)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
# find the div containing the highlight article
|
||||||
|
div_post = soup.find('div','post')
|
||||||
|
if div_post:
|
||||||
|
h1_tag = div_post.h1
|
||||||
|
handle_article(h1_tag,div_post)
|
||||||
|
|
||||||
|
# find the divs containing the rest of the articles
|
||||||
|
div_other = div_post.find('div', { "id" : "categoryOtherPosts" })
|
||||||
|
if div_other:
|
||||||
|
for div_entry in div_other.findAll('div','entry'):
|
||||||
|
h2_tag = div_entry.h2
|
||||||
|
handle_article(h2_tag,div_entry)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for page_name,page_title in self.sectionlist:
|
||||||
|
parse_index_page(page_name,page_title)
|
||||||
|
ans.append(page_title)
|
||||||
|
|
||||||
|
ans = [(key, articles[key]) for key in ans if articles.has_key(key)]
|
||||||
|
return ans
|
24
resources/recipes/metro_montreal.recipe
Normal file
24
resources/recipes/metro_montreal.recipe
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class Metro_Montreal(BasicNewsRecipe):
|
||||||
|
|
||||||
|
title = u'M\xe9tro Montr\xe9al'
|
||||||
|
__author__ = 'Jerry Clapperton'
|
||||||
|
description = 'Le quotidien le plus branché sur le monde'
|
||||||
|
language = 'fr'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
use_embedded_content = False
|
||||||
|
remove_javascript = True
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
|
||||||
|
extra_css = '.headline {font-size: x-large;} \n .fact {padding-top: 10pt}'
|
||||||
|
|
||||||
|
remove_tags = [dict(attrs={'id':'buttons'}), dict(name=['img', 'style'])]
|
||||||
|
|
||||||
|
feeds = [(u"L'info", u'http://journalmetro.com/linfo/rss'), (u'Monde', u'http://journalmetro.com/monde/rss'), (u'Culture', u'http://journalmetro.com/culture/rss'), (u'Sports', u'http://journalmetro.com/sports/rss'), (u'Paroles', u'http://journalmetro.com/paroles/rss')]
|
||||||
|
|
||||||
|
def print_version(self, url):
|
||||||
|
return url.replace('article', 'ArticlePrint') + '?language=fr'
|
67
resources/recipes/nursingtimes.recipe
Normal file
67
resources/recipes/nursingtimes.recipe
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2010, Darko Miletic <darko.miletic at gmail.com>'
|
||||||
|
'''
|
||||||
|
www.nursingtimes.net
|
||||||
|
'''
|
||||||
|
|
||||||
|
import urllib
|
||||||
|
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||||
|
|
||||||
|
class NursingTimes(BasicNewsRecipe):
|
||||||
|
title = 'Nursing Times'
|
||||||
|
__author__ = 'Darko Miletic'
|
||||||
|
description = 'Nursing practice, NHS and health care news'
|
||||||
|
oldest_article = 8
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
no_stylesheets = True
|
||||||
|
use_embedded_content = False
|
||||||
|
encoding = 'utf-8'
|
||||||
|
publisher = 'emap'
|
||||||
|
category = 'news, health, nursing, UK'
|
||||||
|
language = 'en-UK'
|
||||||
|
needs_subscription = True
|
||||||
|
LOGIN = 'http://www.nursingtimes.net/sign-in'
|
||||||
|
|
||||||
|
conversion_options = {
|
||||||
|
'comments' : description
|
||||||
|
,'tags' : category
|
||||||
|
,'language' : language
|
||||||
|
,'publisher' : publisher
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_browser(self):
|
||||||
|
br = BasicNewsRecipe.get_browser()
|
||||||
|
br.open(self.LOGIN)
|
||||||
|
if self.username is not None and self.password is not None:
|
||||||
|
data = urllib.urlencode({ 'campaigncode' :'0'
|
||||||
|
,'referrer' :''
|
||||||
|
,'security_text':''
|
||||||
|
,'SIemail' :self.username
|
||||||
|
,'passWord' :self.password
|
||||||
|
,'LoginButton.x':'27'
|
||||||
|
,'LoginButton.y':'13'
|
||||||
|
})
|
||||||
|
br.open(self.LOGIN,data)
|
||||||
|
return br
|
||||||
|
|
||||||
|
keep_only_tags = [dict(name='div', attrs={'class':'storytext'})]
|
||||||
|
remove_tags = [
|
||||||
|
dict(name=['object','link','script','iframe'])
|
||||||
|
,dict(name='div',attrs={'id':'comments_form'})
|
||||||
|
]
|
||||||
|
remove_tags_after = dict(name='div',attrs={'id':'comments_form'})
|
||||||
|
|
||||||
|
feeds = [
|
||||||
|
(u'Breaking News', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=1')
|
||||||
|
,(u'Practice', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=512')
|
||||||
|
,(u'Behind the headlines', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=468')
|
||||||
|
,(u'Analysis', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=62')
|
||||||
|
,(u'Acute care news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=5')
|
||||||
|
,(u'Primary vare news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=231')
|
||||||
|
,(u'Mental Health news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=27')
|
||||||
|
,(u'Management news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=32')
|
||||||
|
,(u"Older people's nursing news", u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=181')
|
||||||
|
,(u'Respiratory news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=177')
|
||||||
|
,(u'Wound care news', u'http://www.nursingtimes.net/XmlServers/navsectionRSS.aspx?navsectioncode=182')
|
||||||
|
]
|
||||||
|
|
@ -10,11 +10,18 @@ from calibre import strftime
|
|||||||
from calibre.web.feeds.recipes import BasicNewsRecipe
|
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||||
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
|
|
||||||
|
def decode(self, src):
|
||||||
|
enc = 'utf-8'
|
||||||
|
if 'iso-8859-1' in src:
|
||||||
|
enc = 'cp1252'
|
||||||
|
return src.decode(enc, 'ignore')
|
||||||
|
|
||||||
class NYTimes(BasicNewsRecipe):
|
class NYTimes(BasicNewsRecipe):
|
||||||
|
|
||||||
title = 'The New York Times (subscription)'
|
title = 'The New York Times (subscription)'
|
||||||
__author__ = 'Kovid Goyal'
|
__author__ = 'Kovid Goyal'
|
||||||
language = 'en'
|
language = 'en'
|
||||||
|
requires_version = (0, 6, 36)
|
||||||
|
|
||||||
description = 'Daily news from the New York Times (subscription version)'
|
description = 'Daily news from the New York Times (subscription version)'
|
||||||
timefmt = ' [%a, %b %d, %Y]'
|
timefmt = ' [%a, %b %d, %Y]'
|
||||||
@ -27,7 +34,7 @@ class NYTimes(BasicNewsRecipe):
|
|||||||
'side_tool', 'side_index',
|
'side_tool', 'side_index',
|
||||||
'relatedArticles', 'relatedTopics', 'adxSponLink']),
|
'relatedArticles', 'relatedTopics', 'adxSponLink']),
|
||||||
dict(name=['script', 'noscript', 'style'])]
|
dict(name=['script', 'noscript', 'style'])]
|
||||||
#encoding = 'cp1252'
|
encoding = decode
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}'
|
extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}'
|
||||||
|
|
||||||
@ -48,9 +55,7 @@ class NYTimes(BasicNewsRecipe):
|
|||||||
return 'NY Times'
|
return 'NY Times'
|
||||||
|
|
||||||
def parse_index(self):
|
def parse_index(self):
|
||||||
self.encoding = 'cp1252'
|
|
||||||
soup = self.index_to_soup('http://www.nytimes.com/pages/todayspaper/index.html')
|
soup = self.index_to_soup('http://www.nytimes.com/pages/todayspaper/index.html')
|
||||||
self.encoding = None
|
|
||||||
|
|
||||||
def feed_title(div):
|
def feed_title(div):
|
||||||
return ''.join(div.findAll(text=True, recursive=False)).strip()
|
return ''.join(div.findAll(text=True, recursive=False)).strip()
|
||||||
|
@ -1,31 +1,40 @@
|
|||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class NewsandObserver(BasicNewsRecipe):
|
class NewsandObserver(BasicNewsRecipe):
|
||||||
title = u'News and Observer'
|
title = u'Raleigh News & Observer'
|
||||||
description = 'News from Raleigh, North Carolina'
|
description = 'News from Raleigh, North Carolina'
|
||||||
language = 'en'
|
language = 'en'
|
||||||
__author__ = 'Krittika Goyal'
|
__author__ = 'Krittika Goyal updated by Walt Anthony'
|
||||||
oldest_article = 5 #days
|
oldest_article = 3 #days
|
||||||
max_articles_per_feed = 25
|
max_articles_per_feed = 25
|
||||||
|
summary_length = 150
|
||||||
|
|
||||||
|
no_stylesheets = True
|
||||||
|
remove_javascript = True
|
||||||
|
|
||||||
remove_stylesheets = True
|
|
||||||
remove_tags_before = dict(name='h1', attrs={'id':'story_headline'})
|
remove_tags_before = dict(name='h1', attrs={'id':'story_headline'})
|
||||||
remove_tags_after = dict(name='div', attrs={'id':'story_text_remaining'})
|
remove_tags_after = dict(name='div', attrs={'id':'story_text_remaining'})
|
||||||
|
|
||||||
|
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
dict(name='iframe'),
|
dict(name='iframe'),
|
||||||
dict(name='div', attrs={'id':['right-rail', 'story_tools']}),
|
dict(name='div', attrs={'id':['right-rail', 'story_tools', 'toolbox', 'toolbar', 'tool', 'shirttail', 'comment_widget', 'story_keywords', 'txtResizeTool']}),
|
||||||
|
dict(name='div', attrs={'class':['Buy-It-Now', 'story_link_share']}),
|
||||||
dict(name='ul', attrs={'class':'bold_tabs_nav'}),
|
dict(name='ul', attrs={'class':'bold_tabs_nav'}),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
feeds = [
|
feeds = [
|
||||||
('Cover', 'http://www.newsobserver.com/100/index.rss'),
|
('Cover', 'http://www.newsobserver.com/100/index.rss'),
|
||||||
('News', 'http://www.newsobserver.com/102/index.rss'),
|
('News', 'http://www.newsobserver.com/102/index.rss'),
|
||||||
('Politics', 'http://www.newsobserver.com/105/index.rss'),
|
('Politics', 'http://www.newsobserver.com/105/index.rss'),
|
||||||
('Business', 'http://www.newsobserver.com/104/index.rss'),
|
('Business', 'http://www.newsobserver.com/104/index.rss'),
|
||||||
('Sports', 'http://www.newsobserver.com/103/index.rss'),
|
('Sports', 'http://www.newsobserver.com/103/index.rss'),
|
||||||
('College Sports', 'http://www.newsobserver.com/119/index.rss'),
|
('College Sports', 'http://www.newsobserver.com/119/index.rss'),
|
||||||
('Lifestyles', 'http://www.newsobserver.com/106/index.rss'),
|
('Lifestyles', 'http://www.newsobserver.com/106/index.rss'),
|
||||||
('Editorials', 'http://www.newsobserver.com/158/index.rss')]
|
('Editorials', 'http://www.newsobserver.com/158/index.rss')
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
|
|
||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2008-2009, Darko Miletic <darko.miletic at gmail.com>'
|
__copyright__ = '2008-2010, Darko Miletic <darko.miletic at gmail.com>'
|
||||||
'''
|
'''
|
||||||
pagina12.com.ar
|
pagina12.com.ar
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
import time
|
||||||
|
from calibre import strftime
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class Pagina12(BasicNewsRecipe):
|
class Pagina12(BasicNewsRecipe):
|
||||||
@ -19,6 +21,8 @@ class Pagina12(BasicNewsRecipe):
|
|||||||
encoding = 'cp1252'
|
encoding = 'cp1252'
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
language = 'es'
|
language = 'es'
|
||||||
|
remove_empty_feeds = True
|
||||||
|
extra_css = ' body{font-family: sans-serif} '
|
||||||
|
|
||||||
conversion_options = {
|
conversion_options = {
|
||||||
'comment' : description
|
'comment' : description
|
||||||
@ -47,3 +51,8 @@ class Pagina12(BasicNewsRecipe):
|
|||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
return url.replace('http://www.pagina12.com.ar/','http://www.pagina12.com.ar/imprimir/')
|
return url.replace('http://www.pagina12.com.ar/','http://www.pagina12.com.ar/imprimir/')
|
||||||
|
|
||||||
|
def get_cover_url(self):
|
||||||
|
imgnames = ['tapan.jpg','tapagn.jpg','tapan_gr.jpg','tapagn.jpg','tapagn.jpg','tapan.jpg','tapagn.jpg']
|
||||||
|
weekday = time.localtime().tm_wday
|
||||||
|
return strftime('http://www.pagina12.com.ar/fotos/%Y%m%d/diario/') + imgnames[weekday]
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
from calibre.web.feeds.recipes import BasicNewsRecipe
|
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||||
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
from calibre.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
#from random import randint
|
|
||||||
from urllib import quote
|
from urllib import quote
|
||||||
|
|
||||||
class SportsIllustratedRecipe(BasicNewsRecipe) :
|
class SportsIllustratedRecipe(BasicNewsRecipe) :
|
||||||
@ -9,12 +8,11 @@ class SportsIllustratedRecipe(BasicNewsRecipe) :
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
language = 'en'
|
language = 'en'
|
||||||
description = 'Sports Illustrated'
|
description = 'Sports Illustrated'
|
||||||
version = 1
|
version = 3
|
||||||
title = u'Sports Illustrated'
|
title = u'Sports Illustrated'
|
||||||
|
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
remove_javascript = True
|
remove_javascript = True
|
||||||
#template_css = ''
|
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
|
|
||||||
INDEX = 'http://sportsillustrated.cnn.com/'
|
INDEX = 'http://sportsillustrated.cnn.com/'
|
||||||
@ -22,13 +20,39 @@ class SportsIllustratedRecipe(BasicNewsRecipe) :
|
|||||||
def parse_index(self):
|
def parse_index(self):
|
||||||
answer = []
|
answer = []
|
||||||
soup = self.index_to_soup(self.INDEX)
|
soup = self.index_to_soup(self.INDEX)
|
||||||
# Find the link to the current issue on the front page.
|
# Find the link to the current issue on the front page. SI Cover
|
||||||
cover = soup.find('img', attrs = {'alt' : 'Read All Articles', 'style' : 'vertical-align:bottom;'})
|
cover = soup.find('img', attrs = {'alt' : 'Read All Articles', 'style' : 'vertical-align:bottom;'})
|
||||||
if cover:
|
if cover:
|
||||||
currentIssue = cover.parent['href']
|
currentIssue = cover.parent['href']
|
||||||
if currentIssue:
|
if currentIssue:
|
||||||
# Open the index of current issue
|
# Open the index of current issue
|
||||||
|
|
||||||
index = self.index_to_soup(currentIssue)
|
index = self.index_to_soup(currentIssue)
|
||||||
|
self.log('\tLooking for current issue in: ' + currentIssue)
|
||||||
|
# Now let us see if they updated their frontpage
|
||||||
|
nav = index.find('div', attrs = {'class': 'siv_trav_top'})
|
||||||
|
if nav:
|
||||||
|
img = nav.find('img', attrs = {'src': 'http://i.cdn.turner.com/sivault/.element/img/1.0/btn_next_v2.jpg'})
|
||||||
|
if img:
|
||||||
|
parent = img.parent
|
||||||
|
if parent.name == 'a':
|
||||||
|
# They didn't update their frontpage; Load the next issue from here
|
||||||
|
href = self.INDEX + parent['href']
|
||||||
|
index = self.index_to_soup(href)
|
||||||
|
self.log('\tLooking for current issue in: ' + href)
|
||||||
|
|
||||||
|
if index.find('div', 'siv_noArticleMessage'):
|
||||||
|
nav = index.find('div', attrs = {'class': 'siv_trav_top'})
|
||||||
|
if nav:
|
||||||
|
# Their frontpage points to an issue without any articles; Use the previous issue
|
||||||
|
img = nav.find('img', attrs = {'src': 'http://i.cdn.turner.com/sivault/.element/img/1.0/btn_previous_v2.jpg'})
|
||||||
|
if img:
|
||||||
|
parent = img.parent
|
||||||
|
if parent.name == 'a':
|
||||||
|
href = self.INDEX + parent['href']
|
||||||
|
index = self.index_to_soup(href)
|
||||||
|
self.log('\tLooking for current issue in: ' + href)
|
||||||
|
|
||||||
|
|
||||||
# Find all articles.
|
# Find all articles.
|
||||||
list = index.find('div', attrs = {'class' : 'siv_artList'})
|
list = index.find('div', attrs = {'class' : 'siv_artList'})
|
||||||
@ -69,31 +93,26 @@ class SportsIllustratedRecipe(BasicNewsRecipe) :
|
|||||||
|
|
||||||
def preprocess_html(self, soup):
|
def preprocess_html(self, soup):
|
||||||
header = soup.find('div', attrs = {'class' : 'siv_artheader'})
|
header = soup.find('div', attrs = {'class' : 'siv_artheader'})
|
||||||
if header:
|
homeMadeSoup = BeautifulSoup('<html><head></head><body></body></html>')
|
||||||
# It's an article, prepare a container for the content
|
body = homeMadeSoup.body
|
||||||
homeMadeSoup = BeautifulSoup('<html><head></head><body></body></html>')
|
|
||||||
body = homeMadeSoup.find('body')
|
|
||||||
|
|
||||||
# Find the date, title and byline
|
# Find the date, title and byline
|
||||||
temp = header.find('td', attrs = {'class' : 'title'})
|
temp = header.find('td', attrs = {'class' : 'title'})
|
||||||
if temp :
|
if temp :
|
||||||
date = temp.find('div', attrs = {'class' : 'date'})
|
date = temp.find('div', attrs = {'class' : 'date'})
|
||||||
if date:
|
if date:
|
||||||
body.append(date)
|
body.append(date)
|
||||||
if temp.h1:
|
if temp.h1:
|
||||||
body.append(temp.h1)
|
body.append(temp.h1)
|
||||||
if temp.h2 :
|
if temp.h2 :
|
||||||
body.append(temp.h2)
|
body.append(temp.h2)
|
||||||
byline = temp.find('div', attrs = {'class' : 'byline'})
|
byline = temp.find('div', attrs = {'class' : 'byline'})
|
||||||
if byline:
|
if byline:
|
||||||
body.append(byline)
|
body.append(byline)
|
||||||
|
|
||||||
# Find the content
|
# Find the content
|
||||||
for para in soup.findAll('div', attrs = {'class' : 'siv_artpara'}) :
|
for para in soup.findAll('div', attrs = {'class' : 'siv_artpara'}) :
|
||||||
body.append(para)
|
body.append(para)
|
||||||
|
|
||||||
return homeMadeSoup
|
return homeMadeSoup
|
||||||
else :
|
|
||||||
# It's a TOC, just return the whole lot
|
|
||||||
return soup
|
|
||||||
|
|
||||||
|
22
resources/recipes/the_gazette.recipe
Normal file
22
resources/recipes/the_gazette.recipe
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class The_Gazette(BasicNewsRecipe):
|
||||||
|
|
||||||
|
cover_url = 'file:///D:/Documents/Pictures/Covers/The_Gazette.jpg'
|
||||||
|
title = u'The Gazette'
|
||||||
|
__author__ = 'Jerry Clapperton'
|
||||||
|
description = 'Montreal news in English'
|
||||||
|
language = 'en_CA'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
use_embedded_content = False
|
||||||
|
remove_javascript = True
|
||||||
|
no_stylesheets = True
|
||||||
|
encoding = 'utf-8'
|
||||||
|
|
||||||
|
keep_only_tags = [dict(name='div', attrs={'id':['storyheader','page1']})]
|
||||||
|
|
||||||
|
extra_css = '.headline {font-size: x-large;} \n .fact {padding-top: 10pt}'
|
||||||
|
|
||||||
|
feeds = [(u'News', u'http://feeds.canada.com/canwest/F297'), (u'Opinion', u'http://feeds.canada.com/canwest/F7383'), (u'Arts', u'http://feeds.canada.com/canwest/F7366'), (u'Life', u'http://rss.canada.com/get/?F6934'), (u'Business', u'http://feeds.canada.com/canwest/F6939'), (u'Travel', u'http://rss.canada.com/get/?F6938'), (u'Health', u'http://feeds.canada.com/canwest/F7397'), (u'Technology', u'http://feeds.canada.com/canwest/F7411')]
|
@ -112,6 +112,9 @@ class LinuxFreeze(Command):
|
|||||||
|
|
||||||
includes += ['calibre.gui2.convert.'+x.split('/')[-1].rpartition('.')[0] for x in \
|
includes += ['calibre.gui2.convert.'+x.split('/')[-1].rpartition('.')[0] for x in \
|
||||||
glob.glob('src/calibre/gui2/convert/*.py')]
|
glob.glob('src/calibre/gui2/convert/*.py')]
|
||||||
|
includes += ['calibre.gui2.catalog.'+x.split('/')[-1].rpartition('.')[0] for x in \
|
||||||
|
glob.glob('src/calibre/gui2/catalog/*.py')]
|
||||||
|
|
||||||
|
|
||||||
LOADER = '/tmp/loader.py'
|
LOADER = '/tmp/loader.py'
|
||||||
open(LOADER, 'wb').write('# This script is never actually used.\nimport sys')
|
open(LOADER, 'wb').write('# This script is never actually used.\nimport sys')
|
||||||
|
@ -117,9 +117,12 @@ def prints(*args, **kwargs):
|
|||||||
try:
|
try:
|
||||||
arg = arg.encode(enc)
|
arg = arg.encode(enc)
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
if not safe_encode:
|
try:
|
||||||
raise
|
arg = arg.encode('utf-8')
|
||||||
arg = repr(arg)
|
except:
|
||||||
|
if not safe_encode:
|
||||||
|
raise
|
||||||
|
arg = repr(arg)
|
||||||
if not isinstance(arg, str):
|
if not isinstance(arg, str):
|
||||||
try:
|
try:
|
||||||
arg = str(arg)
|
arg = str(arg)
|
||||||
|
@ -2,7 +2,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
__appname__ = 'calibre'
|
__appname__ = 'calibre'
|
||||||
__version__ = '0.6.35'
|
__version__ = '0.6.36'
|
||||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
@ -404,7 +404,7 @@ from calibre.devices.hanlin.driver import HANLINV3, HANLINV5, BOOX
|
|||||||
from calibre.devices.blackberry.driver import BLACKBERRY
|
from calibre.devices.blackberry.driver import BLACKBERRY
|
||||||
from calibre.devices.cybook.driver import CYBOOK
|
from calibre.devices.cybook.driver import CYBOOK
|
||||||
from calibre.devices.eb600.driver import EB600, COOL_ER, SHINEBOOK, \
|
from calibre.devices.eb600.driver import EB600, COOL_ER, SHINEBOOK, \
|
||||||
POCKETBOOK360, GER2, ITALICA, ECLICTO, DBOOK
|
POCKETBOOK360, GER2, ITALICA, ECLICTO, DBOOK, INVESBOOK
|
||||||
from calibre.devices.iliad.driver import ILIAD
|
from calibre.devices.iliad.driver import ILIAD
|
||||||
from calibre.devices.irexdr.driver import IREXDR1000
|
from calibre.devices.irexdr.driver import IREXDR1000
|
||||||
from calibre.devices.jetbook.driver import JETBOOK
|
from calibre.devices.jetbook.driver import JETBOOK
|
||||||
@ -485,6 +485,7 @@ plugins += [
|
|||||||
ITALICA,
|
ITALICA,
|
||||||
ECLICTO,
|
ECLICTO,
|
||||||
DBOOK,
|
DBOOK,
|
||||||
|
INVESBOOK,
|
||||||
BOOX,
|
BOOX,
|
||||||
EB600,
|
EB600,
|
||||||
README,
|
README,
|
||||||
|
@ -9,23 +9,22 @@ from calibre.devices.usbms.driver import USBMS
|
|||||||
class BLACKBERRY(USBMS):
|
class BLACKBERRY(USBMS):
|
||||||
|
|
||||||
name = 'Blackberry Device Interface'
|
name = 'Blackberry Device Interface'
|
||||||
|
gui_name = 'Blackberry'
|
||||||
description = _('Communicate with the Blackberry smart phone.')
|
description = _('Communicate with the Blackberry smart phone.')
|
||||||
author = _('Kovid Goyal')
|
author = _('Kovid Goyal')
|
||||||
supported_platforms = ['windows', 'linux']
|
supported_platforms = ['windows', 'linux', 'osx']
|
||||||
|
|
||||||
# Ordered list of supported formats
|
# Ordered list of supported formats
|
||||||
FORMATS = ['mobi', 'prc']
|
FORMATS = ['mobi', 'prc']
|
||||||
|
|
||||||
VENDOR_ID = [0x0fca]
|
VENDOR_ID = [0x0fca]
|
||||||
PRODUCT_ID = [0x8004, 0x0004]
|
PRODUCT_ID = [0x8004, 0x0004]
|
||||||
BCD = [0x0200, 0x0107, 0x0201]
|
BCD = [0x0200, 0x0107, 0x0210, 0x0201]
|
||||||
|
|
||||||
VENDOR_NAME = 'RIM'
|
VENDOR_NAME = 'RIM'
|
||||||
WINDOWS_MAIN_MEM = 'BLACKBERRY_SD'
|
WINDOWS_MAIN_MEM = 'BLACKBERRY_SD'
|
||||||
|
|
||||||
#OSX_MAIN_MEM = 'Kindle Internal Storage Media'
|
|
||||||
|
|
||||||
MAIN_MEMORY_VOLUME_LABEL = 'Blackberry SD Card'
|
MAIN_MEMORY_VOLUME_LABEL = 'Blackberry SD Card'
|
||||||
|
|
||||||
EBOOK_DIR_MAIN = 'ebooks'
|
EBOOK_DIR_MAIN = 'eBooks'
|
||||||
SUPPORTS_SUB_DIRS = True
|
SUPPORTS_SUB_DIRS = True
|
||||||
|
@ -154,7 +154,7 @@ class ECLICTO(EB600):
|
|||||||
name = 'eClicto Device Interface'
|
name = 'eClicto Device Interface'
|
||||||
gui_name = 'eClicto'
|
gui_name = 'eClicto'
|
||||||
|
|
||||||
FORMATS = ['epub', 'pdf', 'txt']
|
FORMATS = ['epub', 'pdf', 'htm', 'html', 'txt']
|
||||||
|
|
||||||
VENDOR_NAME = 'ECLICTO'
|
VENDOR_NAME = 'ECLICTO'
|
||||||
WINDOWS_MAIN_MEM = 'EBOOK'
|
WINDOWS_MAIN_MEM = 'EBOOK'
|
||||||
@ -173,3 +173,14 @@ class DBOOK(EB600):
|
|||||||
VENDOR_NAME = 'INFINITY'
|
VENDOR_NAME = 'INFINITY'
|
||||||
WINDOWS_MAIN_MEM = 'AIRIS_DBOOK'
|
WINDOWS_MAIN_MEM = 'AIRIS_DBOOK'
|
||||||
WINDOWS_CARD_A_MEM = 'AIRIS_DBOOK'
|
WINDOWS_CARD_A_MEM = 'AIRIS_DBOOK'
|
||||||
|
|
||||||
|
class INVESBOOK(EB600):
|
||||||
|
|
||||||
|
name = 'Inves Book Device Interface'
|
||||||
|
gui_name = 'Inves Book 600'
|
||||||
|
|
||||||
|
FORMATS = ['epub', 'mobi', 'prc', 'fb2', 'html', 'pdf', 'rtf', 'txt']
|
||||||
|
|
||||||
|
VENDOR_NAME = 'INVES_E6'
|
||||||
|
WINDOWS_MAIN_MEM = '00INVES_E600'
|
||||||
|
WINDOWS_CARD_A_MEM = '00INVES_E600'
|
||||||
|
@ -23,7 +23,7 @@ class N516(USBMS):
|
|||||||
|
|
||||||
VENDOR_ID = [0x0525]
|
VENDOR_ID = [0x0525]
|
||||||
PRODUCT_ID = [0xa4a5]
|
PRODUCT_ID = [0xa4a5]
|
||||||
BCD = [0x323]
|
BCD = [0x323, 0x326]
|
||||||
|
|
||||||
VENDOR_NAME = 'INGENIC'
|
VENDOR_NAME = 'INGENIC'
|
||||||
WINDOWS_MAIN_MEM = '_FILE-STOR_GADGE'
|
WINDOWS_MAIN_MEM = '_FILE-STOR_GADGE'
|
||||||
|
@ -71,7 +71,7 @@ int do_mount(const char *dev, const char *mp) {
|
|||||||
#ifdef __NetBSD__
|
#ifdef __NetBSD__
|
||||||
execlp("mount_msdos", "mount_msdos", "-u", uids, "-g", gids, "-o", options, dev, mp, NULL);
|
execlp("mount_msdos", "mount_msdos", "-u", uids, "-g", gids, "-o", options, dev, mp, NULL);
|
||||||
#else
|
#else
|
||||||
execlp("mount", "mount", "-t", "vfat", "-o", options, dev, mp, NULL);
|
execlp("mount", "mount", "-t", "auto", "-o", options, dev, mp, NULL);
|
||||||
#endif
|
#endif
|
||||||
errsv = errno;
|
errsv = errno;
|
||||||
fprintf(stderr, "Failed to mount with error: %s\n", strerror(errsv));
|
fprintf(stderr, "Failed to mount with error: %s\n", strerror(errsv));
|
||||||
|
@ -808,6 +808,8 @@ class Device(DeviceConfig, DevicePlugin):
|
|||||||
ext = os.path.splitext(fname)[1]
|
ext = os.path.splitext(fname)[1]
|
||||||
|
|
||||||
from calibre.library.save_to_disk import get_components
|
from calibre.library.save_to_disk import get_components
|
||||||
|
if not isinstance(template, unicode):
|
||||||
|
template = template.decode('utf-8')
|
||||||
extra_components = get_components(template, mdata, fname)
|
extra_components = get_components(template, mdata, fname)
|
||||||
if not extra_components:
|
if not extra_components:
|
||||||
extra_components.append(sanitize(self.filename_callback(fname,
|
extra_components.append(sanitize(self.filename_callback(fname,
|
||||||
|
@ -24,7 +24,7 @@ class DRMError(ValueError):
|
|||||||
|
|
||||||
BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'htm', 'xhtm',
|
BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'htm', 'xhtm',
|
||||||
'html', 'xhtml', 'pdf', 'pdb', 'prc', 'mobi', 'azw', 'doc',
|
'html', 'xhtml', 'pdf', 'pdb', 'prc', 'mobi', 'azw', 'doc',
|
||||||
'epub', 'fb2', 'djvu', 'lrx', 'cbr', 'cbz', 'oebzip',
|
'epub', 'fb2', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
|
||||||
'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml']
|
'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml']
|
||||||
|
|
||||||
class HTMLRenderer(object):
|
class HTMLRenderer(object):
|
||||||
|
@ -340,6 +340,9 @@ class ComicInput(InputFormatPlugin):
|
|||||||
%stream.name)
|
%stream.name)
|
||||||
for line in open('comics.txt',
|
for line in open('comics.txt',
|
||||||
'rb').read().decode('utf-8').splitlines():
|
'rb').read().decode('utf-8').splitlines():
|
||||||
|
line = line.strip()
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
fname, title = line.partition(':')[0], line.partition(':')[-1]
|
fname, title = line.partition(':')[0], line.partition(':')[-1]
|
||||||
fname = os.path.join(tdir, *fname.split('/'))
|
fname = os.path.join(tdir, *fname.split('/'))
|
||||||
if not title:
|
if not title:
|
||||||
|
@ -63,6 +63,7 @@ def get_social_metadata(title, authors, publisher, isbn):
|
|||||||
mi.tags = []
|
mi.tags = []
|
||||||
for x in tags:
|
for x in tags:
|
||||||
mi.tags.extend([y.strip() for y in x.split('/')])
|
mi.tags.extend([y.strip() for y in x.split('/')])
|
||||||
|
mi.tags = [x.replace(',', ';') for x in mi.tags]
|
||||||
comments = root.find('.//%s/%s'%(AWS('EditorialReview'),
|
comments = root.find('.//%s/%s'%(AWS('EditorialReview'),
|
||||||
AWS('Content')))
|
AWS('Content')))
|
||||||
if comments is not None:
|
if comments is not None:
|
||||||
|
@ -143,7 +143,7 @@ class ResultList(list):
|
|||||||
except:
|
except:
|
||||||
report(verbose)
|
report(verbose)
|
||||||
tags = []
|
tags = []
|
||||||
return tags
|
return [x.replace(',', ';') for x in tags]
|
||||||
|
|
||||||
def get_publisher(self, entry, verbose):
|
def get_publisher(self, entry, verbose):
|
||||||
try:
|
try:
|
||||||
|
@ -17,6 +17,8 @@ from calibre.ebooks.mobi import MobiError
|
|||||||
from calibre.ebooks.mobi.writer import rescale_image, MAX_THUMB_DIMEN
|
from calibre.ebooks.mobi.writer import rescale_image, MAX_THUMB_DIMEN
|
||||||
from calibre.ebooks.mobi.langcodes import iana2mobi
|
from calibre.ebooks.mobi.langcodes import iana2mobi
|
||||||
|
|
||||||
|
import struct
|
||||||
|
|
||||||
class StreamSlicer(object):
|
class StreamSlicer(object):
|
||||||
|
|
||||||
def __init__(self, stream, start=0, stop=None):
|
def __init__(self, stream, start=0, stop=None):
|
||||||
@ -72,25 +74,54 @@ class StreamSlicer(object):
|
|||||||
return stream.write(value)
|
return stream.write(value)
|
||||||
raise TypeError("stream indices must be integers")
|
raise TypeError("stream indices must be integers")
|
||||||
|
|
||||||
|
def update(self, data_blocks):
|
||||||
|
# Rewrite the stream
|
||||||
|
stream = self._stream
|
||||||
|
base = self.start
|
||||||
|
stream.seek(base)
|
||||||
|
self._stream.truncate(base)
|
||||||
|
for block in data_blocks:
|
||||||
|
stream.write(block)
|
||||||
|
|
||||||
|
def truncate(self, value):
|
||||||
|
self._stream.truncate(value)
|
||||||
|
|
||||||
class MetadataUpdater(object):
|
class MetadataUpdater(object):
|
||||||
def __init__(self, stream):
|
def __init__(self, stream):
|
||||||
self.stream = stream
|
self.stream = stream
|
||||||
data = self.data = StreamSlicer(stream)
|
data = self.data = StreamSlicer(stream)
|
||||||
type = self.type = data[60:68]
|
self.type = data[60:68]
|
||||||
|
|
||||||
|
if self.type != "BOOKMOBI":
|
||||||
|
return
|
||||||
|
|
||||||
self.nrecs, = unpack('>H', data[76:78])
|
self.nrecs, = unpack('>H', data[76:78])
|
||||||
record0 = self.record0 = self.record(0)
|
record0 = self.record0 = self.record(0)
|
||||||
self.encryption_type, = unpack('>H', record0[12:14])
|
self.encryption_type, = unpack('>H', record0[12:14])
|
||||||
codepage, = unpack('>I', record0[28:32])
|
codepage, = unpack('>I', record0[28:32])
|
||||||
self.codec = 'utf-8' if codepage == 65001 else 'cp1252'
|
self.codec = 'utf-8' if codepage == 65001 else 'cp1252'
|
||||||
image_base, = unpack('>I', record0[108:112])
|
image_base, = unpack('>I', record0[108:112])
|
||||||
flags, = unpack('>I', record0[128:132])
|
flags, = self.flags, = unpack('>I', record0[128:132])
|
||||||
have_exth = self.have_exth = (flags & 0x40) != 0
|
have_exth = self.have_exth = (flags & 0x40) != 0
|
||||||
self.cover_record = self.thumbnail_record = None
|
self.cover_record = self.thumbnail_record = None
|
||||||
self.timestamp = None
|
self.timestamp = None
|
||||||
|
|
||||||
|
self.pdbrecords = self.get_pdbrecords()
|
||||||
if not have_exth:
|
if not have_exth:
|
||||||
return
|
self.create_exth()
|
||||||
|
|
||||||
|
# Fetch timestamp, cover_record, thumbnail_record
|
||||||
|
self.fetchEXTHFields()
|
||||||
|
|
||||||
|
def fetchEXTHFields(self):
|
||||||
|
stream = self.stream
|
||||||
|
record0 = self.record0
|
||||||
|
|
||||||
|
# 20:24 = mobiHeaderLength, 16=PDBHeader size
|
||||||
exth_off = unpack('>I', record0[20:24])[0] + 16 + record0.start
|
exth_off = unpack('>I', record0[20:24])[0] + 16 + record0.start
|
||||||
|
image_base, = unpack('>I', record0[108:112])
|
||||||
|
|
||||||
|
# Fetch EXTH block
|
||||||
exth = self.exth = StreamSlicer(stream, exth_off, record0.stop)
|
exth = self.exth = StreamSlicer(stream, exth_off, record0.stop)
|
||||||
nitems, = unpack('>I', exth[8:12])
|
nitems, = unpack('>I', exth[8:12])
|
||||||
pos = 12
|
pos = 12
|
||||||
@ -109,6 +140,130 @@ class MetadataUpdater(object):
|
|||||||
rindex, = self.thumbnail_rindex, = unpack('>I', content)
|
rindex, = self.thumbnail_rindex, = unpack('>I', content)
|
||||||
self.thumbnail_record = self.record(rindex + image_base)
|
self.thumbnail_record = self.record(rindex + image_base)
|
||||||
|
|
||||||
|
def patch(self, off, new_record0):
|
||||||
|
# Save the current size of each record
|
||||||
|
record_sizes = [len(new_record0)]
|
||||||
|
for i in range(1,self.nrecs-1):
|
||||||
|
record_sizes.append(self.pdbrecords[i+1][0]-self.pdbrecords[i][0])
|
||||||
|
# And the last one
|
||||||
|
record_sizes.append(self.data.stop - self.pdbrecords[self.nrecs-1][0])
|
||||||
|
|
||||||
|
# pdbrecord[0] is the offset of record0. It will not change
|
||||||
|
# record1 offset will be offset of record0 + len(new_record0)
|
||||||
|
updated_pdbrecords = [self.pdbrecords[0][0]]
|
||||||
|
record0_offset = self.pdbrecords[0][0]
|
||||||
|
updated_offset = record0_offset + len(new_record0)
|
||||||
|
|
||||||
|
for i in range(1,self.nrecs-1):
|
||||||
|
updated_pdbrecords.append(updated_offset)
|
||||||
|
updated_offset += record_sizes[i]
|
||||||
|
# Update the last pdbrecord
|
||||||
|
updated_pdbrecords.append(updated_offset)
|
||||||
|
|
||||||
|
# Read in current records 1 to last
|
||||||
|
data_blocks = [new_record0]
|
||||||
|
for i in range(1,self.nrecs):
|
||||||
|
data_blocks.append(self.data[self.pdbrecords[i][0]:self.pdbrecords[i][0] + record_sizes[i]])
|
||||||
|
|
||||||
|
# Rewrite the stream
|
||||||
|
self.record0.update(data_blocks)
|
||||||
|
|
||||||
|
# Rewrite the pdbrecords
|
||||||
|
self.update_pdbrecords(updated_pdbrecords)
|
||||||
|
|
||||||
|
# Truncate if necessary
|
||||||
|
if (updated_pdbrecords[-1] + record_sizes[-1]) < self.data.stop:
|
||||||
|
self.data.truncate(updated_pdbrecords[-1] + record_sizes[-1])
|
||||||
|
else:
|
||||||
|
self.data.stop = updated_pdbrecords[-1] + record_sizes[-1]
|
||||||
|
|
||||||
|
def patchSection(self, section, new):
|
||||||
|
off = self.pdbrecords[section][0]
|
||||||
|
self.patch(off, new)
|
||||||
|
|
||||||
|
def create_exth(self, exth=None):
|
||||||
|
# Add an EXTH block to record 0, rewrite the stream
|
||||||
|
# self.hexdump(self.record0)
|
||||||
|
|
||||||
|
# Fetch the title
|
||||||
|
title_offset, = struct.unpack('>L', self.record0[0x54:0x58])
|
||||||
|
title_length, = struct.unpack('>L', self.record0[0x58:0x5c])
|
||||||
|
title_in_file, = struct.unpack('%ds' % (title_length), self.record0[title_offset:title_offset + title_length])
|
||||||
|
|
||||||
|
# Adjust length to accommodate PrimaryINDX if necessary
|
||||||
|
mobi_header_length, = unpack('>L', self.record0[0x14:0x18])
|
||||||
|
if mobi_header_length == 0xe4:
|
||||||
|
# Patch mobi_header_length to 0xE8
|
||||||
|
self.record0[0x17] = "\xe8"
|
||||||
|
self.record0[0xf4:0xf8] = pack('>L', 0xFFFFFFFF)
|
||||||
|
mobi_header_length = 0xe8
|
||||||
|
|
||||||
|
# Set EXTH flag (0x40)
|
||||||
|
self.record0[0x80:0x84] = pack('>L', self.flags|0x40)
|
||||||
|
|
||||||
|
if not exth:
|
||||||
|
# Construct an empty EXTH block
|
||||||
|
pad = '\0' * 4
|
||||||
|
exth = ['EXTH', pack('>II', 12, 0), pad]
|
||||||
|
exth = ''.join(exth)
|
||||||
|
|
||||||
|
# Update title_offset
|
||||||
|
self.record0[0x54:0x58] = pack('>L', 0x10 + mobi_header_length + len(exth))
|
||||||
|
|
||||||
|
# Create an updated Record0
|
||||||
|
new_record0 = StringIO()
|
||||||
|
new_record0.write(self.record0[:0x10 + mobi_header_length])
|
||||||
|
new_record0.write(exth)
|
||||||
|
new_record0.write(title_in_file)
|
||||||
|
|
||||||
|
# Pad to a 4-byte boundary
|
||||||
|
trail = len(new_record0.getvalue()) % 4
|
||||||
|
pad = '\0' * (4 - trail) # Always pad w/ at least 1 byte
|
||||||
|
new_record0.write(pad)
|
||||||
|
|
||||||
|
#self.hexdump(new_record0.getvalue())
|
||||||
|
|
||||||
|
# Rebuild the stream, update the pdbrecords pointers
|
||||||
|
self.patchSection(0,new_record0.getvalue())
|
||||||
|
|
||||||
|
# Update record0
|
||||||
|
self.record0 = self.record(0)
|
||||||
|
|
||||||
|
def hexdump(self, src, length=16):
|
||||||
|
# Diagnostic
|
||||||
|
FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
|
||||||
|
N=0; result=''
|
||||||
|
while src:
|
||||||
|
s,src = src[:length],src[length:]
|
||||||
|
hexa = ' '.join(["%02X"%ord(x) for x in s])
|
||||||
|
s = s.translate(FILTER)
|
||||||
|
result += "%04X %-*s %s\n" % (N, length*3, hexa, s)
|
||||||
|
N+=length
|
||||||
|
print result
|
||||||
|
|
||||||
|
def get_pdbrecords(self):
|
||||||
|
pdbrecords = []
|
||||||
|
for i in xrange(self.nrecs):
|
||||||
|
offset, a1,a2,a3,a4 = struct.unpack('>LBBBB', self.data[78+i*8:78+i*8+8])
|
||||||
|
flags, val = a1, a2<<16|a3<<8|a4
|
||||||
|
pdbrecords.append( [offset, flags, val] )
|
||||||
|
return pdbrecords
|
||||||
|
|
||||||
|
def update_pdbrecords(self, updated_pdbrecords):
|
||||||
|
for (i, pdbrecord) in enumerate(updated_pdbrecords):
|
||||||
|
self.data[78+i*8:78+i*8 + 4] = pack('>L',pdbrecord)
|
||||||
|
|
||||||
|
# Refresh local copy
|
||||||
|
self.pdbrecords = self.get_pdbrecords()
|
||||||
|
|
||||||
|
def dump_pdbrecords(self):
|
||||||
|
# Diagnostic
|
||||||
|
print "MetadataUpdater.dump_pdbrecords()"
|
||||||
|
print "%10s %10s %10s" % ("offset","flags","val")
|
||||||
|
for i in xrange(len(self.pdbrecords)):
|
||||||
|
pdbrecord = self.pdbrecords[i]
|
||||||
|
print "%10X %10X %10X" % (pdbrecord[0], pdbrecord[1], pdbrecord[2])
|
||||||
|
|
||||||
def record(self, n):
|
def record(self, n):
|
||||||
if n >= self.nrecs:
|
if n >= self.nrecs:
|
||||||
raise ValueError('non-existent record %r' % n)
|
raise ValueError('non-existent record %r' % n)
|
||||||
@ -120,6 +275,10 @@ class MetadataUpdater(object):
|
|||||||
return StreamSlicer(self.stream, start, stop)
|
return StreamSlicer(self.stream, start, stop)
|
||||||
|
|
||||||
def update(self, mi):
|
def update(self, mi):
|
||||||
|
if self.type != "BOOKMOBI":
|
||||||
|
raise MobiError("Setting metadata only supported for MOBI files of type 'BOOK'.\n"
|
||||||
|
"\tThis is a '%s' file of type '%s'" % (self.type[0:4], self.type[4:8]))
|
||||||
|
|
||||||
recs = []
|
recs = []
|
||||||
try:
|
try:
|
||||||
from calibre.ebooks.conversion.config import load_defaults
|
from calibre.ebooks.conversion.config import load_defaults
|
||||||
@ -142,7 +301,6 @@ class MetadataUpdater(object):
|
|||||||
if mi.tags:
|
if mi.tags:
|
||||||
subjects = '; '.join(mi.tags)
|
subjects = '; '.join(mi.tags)
|
||||||
recs.append((105, subjects.encode(self.codec, 'replace')))
|
recs.append((105, subjects.encode(self.codec, 'replace')))
|
||||||
|
|
||||||
if mi.pubdate:
|
if mi.pubdate:
|
||||||
recs.append((106, str(mi.pubdate).encode(self.codec, 'replace')))
|
recs.append((106, str(mi.pubdate).encode(self.codec, 'replace')))
|
||||||
elif mi.timestamp:
|
elif mi.timestamp:
|
||||||
@ -151,15 +309,16 @@ class MetadataUpdater(object):
|
|||||||
recs.append((106, self.timestamp))
|
recs.append((106, self.timestamp))
|
||||||
else:
|
else:
|
||||||
recs.append((106, str(datetime.now()).encode(self.codec, 'replace')))
|
recs.append((106, str(datetime.now()).encode(self.codec, 'replace')))
|
||||||
|
|
||||||
if self.cover_record is not None:
|
if self.cover_record is not None:
|
||||||
recs.append((201, pack('>I', self.cover_rindex)))
|
recs.append((201, pack('>I', self.cover_rindex)))
|
||||||
recs.append((203, pack('>I', 0)))
|
recs.append((203, pack('>I', 0)))
|
||||||
if self.thumbnail_record is not None:
|
if self.thumbnail_record is not None:
|
||||||
recs.append((202, pack('>I', self.thumbnail_rindex)))
|
recs.append((202, pack('>I', self.thumbnail_rindex)))
|
||||||
exth = StringIO()
|
|
||||||
if getattr(self, 'encryption_type', -1) != 0:
|
if getattr(self, 'encryption_type', -1) != 0:
|
||||||
raise MobiError('Setting metadata in DRMed MOBI files is not supported.')
|
raise MobiError('Setting metadata in DRMed MOBI files is not supported.')
|
||||||
|
|
||||||
|
exth = StringIO()
|
||||||
for code, data in recs:
|
for code, data in recs:
|
||||||
exth.write(pack('>II', code, len(data) + 8))
|
exth.write(pack('>II', code, len(data) + 8))
|
||||||
exth.write(data)
|
exth.write(data)
|
||||||
@ -168,17 +327,16 @@ class MetadataUpdater(object):
|
|||||||
pad = '\0' * (4 - trail) # Always pad w/ at least 1 byte
|
pad = '\0' * (4 - trail) # Always pad w/ at least 1 byte
|
||||||
exth = ['EXTH', pack('>II', len(exth) + 12, len(recs)), exth, pad]
|
exth = ['EXTH', pack('>II', len(exth) + 12, len(recs)), exth, pad]
|
||||||
exth = ''.join(exth)
|
exth = ''.join(exth)
|
||||||
title = (mi.title or _('Unknown')).encode(self.codec, 'replace')
|
|
||||||
if getattr(self, 'exth', None) is None:
|
if getattr(self, 'exth', None) is None:
|
||||||
raise MobiError('No existing EXTH record. Cannot update metadata.')
|
raise MobiError('No existing EXTH record. Cannot update metadata.')
|
||||||
title_off = (self.exth.start - self.record0.start) + len(exth)
|
|
||||||
title_len = len(title)
|
|
||||||
trail = len(self.exth) - len(exth) - len(title)
|
|
||||||
if trail < 0:
|
|
||||||
raise MobiError("Insufficient space to update metadata")
|
|
||||||
self.exth[:] = ''.join([exth, title, '\0' * trail])
|
|
||||||
self.record0[84:92] = pack('>II', title_off, title_len)
|
|
||||||
self.record0[92:96] = iana2mobi(mi.language)
|
self.record0[92:96] = iana2mobi(mi.language)
|
||||||
|
self.create_exth(exth)
|
||||||
|
|
||||||
|
# Fetch updated timestamp, cover_record, thumbnail_record
|
||||||
|
self.fetchEXTHFields()
|
||||||
|
|
||||||
if mi.cover_data[1] or mi.cover:
|
if mi.cover_data[1] or mi.cover:
|
||||||
try:
|
try:
|
||||||
data = mi.cover_data[1] if mi.cover_data[1] else open(mi.cover, 'rb').read()
|
data = mi.cover_data[1] if mi.cover_data[1] else open(mi.cover, 'rb').read()
|
||||||
|
@ -164,6 +164,8 @@ class MobiMLizer(object):
|
|||||||
parent = bstate.nested[-1] if bstate.nested else bstate.body
|
parent = bstate.nested[-1] if bstate.nested else bstate.body
|
||||||
indent = istate.indent
|
indent = istate.indent
|
||||||
left = istate.left
|
left = istate.left
|
||||||
|
if isinstance(indent, basestring):
|
||||||
|
indent = 0
|
||||||
if indent < 0 and abs(indent) < left:
|
if indent < 0 and abs(indent) < left:
|
||||||
left += indent
|
left += indent
|
||||||
indent = 0
|
indent = 0
|
||||||
|
@ -760,6 +760,8 @@ class Manifest(object):
|
|||||||
|
|
||||||
def _parse_xml(self, data):
|
def _parse_xml(self, data):
|
||||||
data = xml_to_unicode(data, strip_encoding_pats=True)[0]
|
data = xml_to_unicode(data, strip_encoding_pats=True)[0]
|
||||||
|
if not data:
|
||||||
|
return None
|
||||||
parser = etree.XMLParser(recover=True)
|
parser = etree.XMLParser(recover=True)
|
||||||
try:
|
try:
|
||||||
return etree.fromstring(data, parser=parser)
|
return etree.fromstring(data, parser=parser)
|
||||||
|
@ -40,6 +40,8 @@ class Image(Element):
|
|||||||
map(float, map(img.get, ('top', 'left', 'rwidth', 'rheight', 'iwidth',
|
map(float, map(img.get, ('top', 'left', 'rwidth', 'rheight', 'iwidth',
|
||||||
'iheight')))
|
'iheight')))
|
||||||
self.src = img.get('src')
|
self.src = img.get('src')
|
||||||
|
self.bottom = self.top + self.height
|
||||||
|
self.right = self.left + self.width
|
||||||
|
|
||||||
|
|
||||||
class Text(Element):
|
class Text(Element):
|
||||||
@ -151,16 +153,17 @@ class Column(object):
|
|||||||
def collect_stats(self):
|
def collect_stats(self):
|
||||||
if len(self.elements) > 1:
|
if len(self.elements) > 1:
|
||||||
gaps = [self.elements[i+1].top - self.elements[i].bottom for i in
|
gaps = [self.elements[i+1].top - self.elements[i].bottom for i in
|
||||||
range(len(0, len(self.elements)-1))]
|
range(0, len(self.elements)-1)]
|
||||||
self.average_line_separation = sum(gaps)/len(gaps)
|
self.average_line_separation = sum(gaps)/len(gaps)
|
||||||
for i, elem in enumerate(self.elements):
|
for i, elem in enumerate(self.elements):
|
||||||
left_margin = elem.left - self.left
|
left_margin = elem.left - self.left
|
||||||
elem.indent_fraction = left_margin/self.width
|
elem.indent_fraction = left_margin/self.width
|
||||||
elem.width_fraction = elem.width/self.width
|
elem.width_fraction = elem.width/self.width
|
||||||
if i == 0:
|
if i == 0:
|
||||||
elem.top_gap = None
|
elem.top_gap_ratio = None
|
||||||
else:
|
else:
|
||||||
elem.top_gap = self.elements[i-1].bottom - elem.top
|
elem.top_gap_ratio = (self.elements[i-1].bottom -
|
||||||
|
elem.top)/self.average_line_separation
|
||||||
|
|
||||||
def previous_element(self, idx):
|
def previous_element(self, idx):
|
||||||
if idx == 0:
|
if idx == 0:
|
||||||
@ -168,7 +171,16 @@ class Column(object):
|
|||||||
return self.elements[idx-1]
|
return self.elements[idx-1]
|
||||||
|
|
||||||
|
|
||||||
|
class Box(list):
|
||||||
|
|
||||||
|
def __init__(self, type='p'):
|
||||||
|
self.type = type
|
||||||
|
|
||||||
|
class ImageBox(Box):
|
||||||
|
|
||||||
|
def __init__(self, img):
|
||||||
|
Box.__init__(self, type='img')
|
||||||
|
self.img = img
|
||||||
|
|
||||||
class Region(object):
|
class Region(object):
|
||||||
|
|
||||||
@ -203,7 +215,7 @@ class Region(object):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def is_empty(self):
|
def is_empty(self):
|
||||||
return len(self.elements) == 0
|
return len(self.columns) == 0
|
||||||
|
|
||||||
def collect_stats(self):
|
def collect_stats(self):
|
||||||
for column in self.columns:
|
for column in self.columns:
|
||||||
@ -220,6 +232,32 @@ class Region(object):
|
|||||||
for x in self.columns:
|
for x in self.columns:
|
||||||
self.elements.extend(x)
|
self.elements.extend(x)
|
||||||
|
|
||||||
|
self.boxes = [Box()]
|
||||||
|
for i, elem in enumerate(self.elements):
|
||||||
|
if isinstance(elem, Image):
|
||||||
|
self.boxes.append(ImageBox(elem))
|
||||||
|
img = Interval(elem.left, elem.right)
|
||||||
|
for j in range(i+1, len(self.elements)):
|
||||||
|
t = self.elements[j]
|
||||||
|
if not isinstance(t, Text):
|
||||||
|
break
|
||||||
|
ti = Interval(t.left, t.right)
|
||||||
|
if not ti.centered_in(img):
|
||||||
|
break
|
||||||
|
self.boxes[-1].append(t)
|
||||||
|
self.boxes.append(Box())
|
||||||
|
else:
|
||||||
|
is_indented = False
|
||||||
|
if i+1 < len(self.elements):
|
||||||
|
indent_diff = elem.indent_fraction - \
|
||||||
|
self.elements[i+1].indent_fraction
|
||||||
|
if indent_diff > 0.05:
|
||||||
|
is_indented = True
|
||||||
|
if elem.top_gap_ratio > 1.2 or is_indented:
|
||||||
|
self.boxes.append(Box())
|
||||||
|
self.boxes[-1].append(elem)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Page(object):
|
class Page(object):
|
||||||
|
|
||||||
@ -311,10 +349,10 @@ class Page(object):
|
|||||||
columns = self.sort_into_columns(x, elems)
|
columns = self.sort_into_columns(x, elems)
|
||||||
processed.update(elems)
|
processed.update(elems)
|
||||||
if not current_region.contains(columns):
|
if not current_region.contains(columns):
|
||||||
self.regions.append(self.current_region)
|
self.regions.append(current_region)
|
||||||
current_region = Region()
|
current_region = Region()
|
||||||
current_region.add(columns)
|
current_region.add(columns)
|
||||||
if not self.current_region.is_empty():
|
if not current_region.is_empty:
|
||||||
self.regions.append(current_region)
|
self.regions.append(current_region)
|
||||||
|
|
||||||
def sort_into_columns(self, elem, neighbors):
|
def sort_into_columns(self, elem, neighbors):
|
||||||
|
@ -14,12 +14,13 @@ from PyQt4.Qt import QWidget
|
|||||||
|
|
||||||
class PluginWidget(QWidget,Ui_Form):
|
class PluginWidget(QWidget,Ui_Form):
|
||||||
|
|
||||||
TITLE = _('E-book Options')
|
TITLE = _('E-book options')
|
||||||
HELP = _('Options specific to')+' EPUB/MOBI '+_('output')
|
HELP = _('Options specific to')+' EPUB/MOBI '+_('output')
|
||||||
OPTION_FIELDS = [('exclude_genre','\[[\w ]*\]'),
|
OPTION_FIELDS = [('exclude_genre','\[[\w ]*\]'),
|
||||||
('exclude_tags','~,'+_('Catalog')),
|
('exclude_tags','~,'+_('Catalog')),
|
||||||
('read_tag','+'),
|
('note_tag','*'),
|
||||||
('note_tag','*')]
|
('numbers_as_text', False),
|
||||||
|
('read_tag','+')]
|
||||||
|
|
||||||
# Output synced to the connected device?
|
# Output synced to the connected device?
|
||||||
sync_enabled = True
|
sync_enabled = True
|
||||||
@ -33,21 +34,30 @@ class PluginWidget(QWidget,Ui_Form):
|
|||||||
|
|
||||||
def initialize(self, name):
|
def initialize(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
# Restore options from last use here
|
# Update dialog fields from stored options
|
||||||
for opt in self.OPTION_FIELDS:
|
for opt in self.OPTION_FIELDS:
|
||||||
opt_value = gprefs.get(self.name + '_' + opt[0], opt[1])
|
opt_value = gprefs.get(self.name + '_' + opt[0], opt[1])
|
||||||
getattr(self, opt[0]).setText(opt_value)
|
if opt[0] == 'numbers_as_text':
|
||||||
|
getattr(self, opt[0]).setChecked(opt_value)
|
||||||
|
else:
|
||||||
|
getattr(self, opt[0]).setText(opt_value)
|
||||||
|
|
||||||
def options(self):
|
def options(self):
|
||||||
# Save/return the current options
|
# Save/return the current options
|
||||||
|
# exclude_genre stores literally
|
||||||
|
# numbers_as_text stores as True/False
|
||||||
|
# others store as lists
|
||||||
opts_dict = {}
|
opts_dict = {}
|
||||||
for opt in self.OPTION_FIELDS:
|
for opt in self.OPTION_FIELDS:
|
||||||
opt_value = unicode(getattr(self, opt[0]).text())
|
if opt[0] == 'numbers_as_text':
|
||||||
|
opt_value = getattr(self,opt[0]).isChecked()
|
||||||
|
else:
|
||||||
|
opt_value = unicode(getattr(self, opt[0]).text())
|
||||||
gprefs.set(self.name + '_' + opt[0], opt_value)
|
gprefs.set(self.name + '_' + opt[0], opt_value)
|
||||||
if opt[0] != 'exclude_genre':
|
if opt[0] == 'exclude_genre' or 'numbers_as_text':
|
||||||
|
opts_dict[opt[0]] = opt_value
|
||||||
|
else:
|
||||||
opt_value = opt_value.split(',')
|
opt_value = opt_value.split(',')
|
||||||
opts_dict[opt[0]] = opt_value
|
|
||||||
|
|
||||||
opts_dict['output_profile'] = [load_defaults('page_setup')['output_profile']]
|
opts_dict['output_profile'] = [load_defaults('page_setup')['output_profile']]
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,6 +69,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="exclude_genre">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string extracomment="Tooltip comment here"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@ -82,10 +89,10 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="5" column="0">
|
||||||
<widget class="QLineEdit" name="exclude_genre">
|
<widget class="QCheckBox" name="numbers_as_text">
|
||||||
<property name="toolTip">
|
<property name="text">
|
||||||
<string extracomment="Tooltip comment here"/>
|
<string>Sort numbers as text</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -7,7 +7,7 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
|||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
|
||||||
from calibre.constants import islinux
|
from calibre.constants import islinux, isosx
|
||||||
|
|
||||||
class Notifier(object):
|
class Notifier(object):
|
||||||
|
|
||||||
@ -85,8 +85,52 @@ class QtNotifier(Notifier):
|
|||||||
def __call__(self, body, summary=None, replaces_id=None, timeout=0):
|
def __call__(self, body, summary=None, replaces_id=None, timeout=0):
|
||||||
timeout, body, summary = self.get_msg_parms(timeout, body, summary)
|
timeout, body, summary = self.get_msg_parms(timeout, body, summary)
|
||||||
if self.systray is not None:
|
if self.systray is not None:
|
||||||
self.systray.showMessage(summary, body, self.systray.Information,
|
try:
|
||||||
timeout)
|
hide = False
|
||||||
|
try:
|
||||||
|
if not isinstance(body, unicode):
|
||||||
|
body = body.decode('utf-8')
|
||||||
|
if isosx and not self.systray.isVisible():
|
||||||
|
self.systray.show()
|
||||||
|
hide = True
|
||||||
|
self.systray.showMessage(summary, body, self.systray.Information,
|
||||||
|
timeout)
|
||||||
|
finally:
|
||||||
|
if hide:
|
||||||
|
self.systray.hide()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
class GrowlNotifier(Notifier):
|
||||||
|
|
||||||
|
notification_type = 'All notifications'
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
try:
|
||||||
|
import Growl
|
||||||
|
self.icon = Growl.Image.imageFromPath(I('notify.png'))
|
||||||
|
self.growl = Growl.GrowlNotifier(applicationName='calibre',
|
||||||
|
applicationIcon=self.icon, notifications=[self.notification_type])
|
||||||
|
self.growl.register()
|
||||||
|
self.ok = True
|
||||||
|
except:
|
||||||
|
self.ok = False
|
||||||
|
|
||||||
|
def encode(self, msg):
|
||||||
|
if isinstance(msg, unicode):
|
||||||
|
msg = msg.encode('utf-8')
|
||||||
|
return msg
|
||||||
|
|
||||||
|
def __call__(self, body, summary=None, replaces_id=None, timeout=0):
|
||||||
|
timeout, body, summary = self.get_msg_parms(timeout, body, summary)
|
||||||
|
if self.ok:
|
||||||
|
try:
|
||||||
|
self.growl.notify(self.notification_type, self.encode(summary),
|
||||||
|
self.encode(body))
|
||||||
|
except:
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
|
|
||||||
def get_notifier(systray=None):
|
def get_notifier(systray=None):
|
||||||
ans = None
|
ans = None
|
||||||
@ -96,6 +140,10 @@ def get_notifier(systray=None):
|
|||||||
ans = FDONotifier()
|
ans = FDONotifier()
|
||||||
if not ans.ok:
|
if not ans.ok:
|
||||||
ans = None
|
ans = None
|
||||||
|
#if isosx:
|
||||||
|
# ans = GrowlNotifier()
|
||||||
|
# if not ans.ok:
|
||||||
|
# ans = None
|
||||||
if ans is None:
|
if ans is None:
|
||||||
ans = QtNotifier(systray)
|
ans = QtNotifier(systray)
|
||||||
if not ans.ok:
|
if not ans.ok:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -670,8 +670,6 @@ def command_catalog(args, dbpath):
|
|||||||
print
|
print
|
||||||
print >>sys.stderr, _('Error: You must specify a catalog output file')
|
print >>sys.stderr, _('Error: You must specify a catalog output file')
|
||||||
return 1
|
return 1
|
||||||
if opts.verbose:
|
|
||||||
log("library.cli:command_catalog dispatching to plugin %s" % plugin.name)
|
|
||||||
if opts.ids:
|
if opts.ids:
|
||||||
opts.ids = [int(id) for id in opts.ids.split(',')]
|
opts.ids = [int(id) for id in opts.ids.split(',')]
|
||||||
|
|
||||||
|
@ -1415,9 +1415,10 @@ class LibraryDatabase2(LibraryDatabase):
|
|||||||
if matches:
|
if matches:
|
||||||
tag_matches = self.data.get_matches('tags', _('Catalog'))
|
tag_matches = self.data.get_matches('tags', _('Catalog'))
|
||||||
matches = matches.intersection(tag_matches)
|
matches = matches.intersection(tag_matches)
|
||||||
db_id = None
|
db_id, existing = None, False
|
||||||
if matches:
|
if matches:
|
||||||
db_id = list(matches)[0]
|
db_id = list(matches)[0]
|
||||||
|
existing = True
|
||||||
if db_id is None:
|
if db_id is None:
|
||||||
obj = self.conn.execute('INSERT INTO books(title, author_sort) VALUES (?, ?)',
|
obj = self.conn.execute('INSERT INTO books(title, author_sort) VALUES (?, ?)',
|
||||||
(title, 'calibre'))
|
(title, 'calibre'))
|
||||||
@ -1433,6 +1434,10 @@ class LibraryDatabase2(LibraryDatabase):
|
|||||||
if not hasattr(path, 'read'):
|
if not hasattr(path, 'read'):
|
||||||
stream.close()
|
stream.close()
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
|
if existing:
|
||||||
|
t = datetime.utcnow()
|
||||||
|
self.set_timestamp(db_id, t, notify=False)
|
||||||
|
self.set_pubdate(db_id, t, notify=False)
|
||||||
self.data.refresh_ids(self, [db_id]) # Needed to update format list and size
|
self.data.refresh_ids(self, [db_id]) # Needed to update format list and size
|
||||||
return db_id
|
return db_id
|
||||||
|
|
||||||
|
@ -714,6 +714,10 @@ class LibraryServer(object):
|
|||||||
|
|
||||||
book, books = MarkupTemplate(self.MOBILE_BOOK), []
|
book, books = MarkupTemplate(self.MOBILE_BOOK), []
|
||||||
for record in items[(start-1):(start-1)+num]:
|
for record in items[(start-1):(start-1)+num]:
|
||||||
|
if record[13] is None:
|
||||||
|
record[13] = ''
|
||||||
|
if record[6] is None:
|
||||||
|
record[6] = 0
|
||||||
aus = record[2] if record[2] else __builtin__._('Unknown')
|
aus = record[2] if record[2] else __builtin__._('Unknown')
|
||||||
authors = '|'.join([i.replace('|', ',') for i in aus.split(',')])
|
authors = '|'.join([i.replace('|', ',') for i in aus.split(',')])
|
||||||
record[10] = fmt_sidx(float(record[10]))
|
record[10] = fmt_sidx(float(record[10]))
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,9 +4,9 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre 0.6.35\n"
|
"Project-Id-Version: calibre 0.6.36\n"
|
||||||
"POT-Creation-Date: 2010-01-22 16:20+MST\n"
|
"POT-Creation-Date: 2010-01-25 10:46+MST\n"
|
||||||
"PO-Revision-Date: 2010-01-22 16:20+MST\n"
|
"PO-Revision-Date: 2010-01-25 10:46+MST\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"
|
||||||
@ -28,7 +28,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
||||||
@ -125,12 +125,12 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1547
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1549
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:721
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:768
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||||
@ -396,11 +396,11 @@ msgstr ""
|
|||||||
msgid "Communicate with the Binatone Readme eBook reader."
|
msgid "Communicate with the Binatone Readme eBook reader."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
||||||
msgid "Communicate with the Blackberry smart phone."
|
msgid "Communicate with the Blackberry smart phone."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
||||||
msgid "Kovid Goyal"
|
msgid "Kovid Goyal"
|
||||||
@ -589,7 +589,7 @@ msgstr ""
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1447
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -704,8 +704,8 @@ msgstr ""
|
|||||||
msgid "Apply no processing to the image"
|
msgid "Apply no processing to the image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1389,7 +1389,7 @@ msgstr ""
|
|||||||
msgid "Rights"
|
msgid "Rights"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:77
|
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:78
|
||||||
msgid "EDITORIAL REVIEW"
|
msgid "EDITORIAL REVIEW"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2201,7 +2201,14 @@ msgid "Fields to include in output:"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17
|
||||||
msgid "E-book Options"
|
msgid "E-book options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430
|
||||||
|
msgid "Catalog"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#:
|
#:
|
||||||
@ -3115,7 +3122,7 @@ msgid "<p>For example, to match all h2 tags that have class=\"chapter\", set tag
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132
|
||||||
msgid "No details available."
|
msgid "No details available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6584,12 +6591,19 @@ msgstr ""
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:244
|
||||||
msgid ""
|
msgid ""
|
||||||
|
"Save the output from different stages of the conversion pipeline to the specified directory. Useful if you are unsure at which stage of the conversion process a bug is occurring.\n"
|
||||||
|
"Default: '%default'None\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:253
|
||||||
|
msgid ""
|
||||||
"Regex describing tags to exclude as genres.\n"
|
"Regex describing tags to exclude as genres.\n"
|
||||||
"Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n"
|
"Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n"
|
||||||
"Applies to: ePub, MOBI output formats"
|
"Applies to: ePub, MOBI output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:249
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:258
|
||||||
msgid ""
|
msgid ""
|
||||||
"Comma-separated list of tag words indicating book should be excluded from output. Case-insensitive.\n"
|
"Comma-separated list of tag words indicating book should be excluded from output. Case-insensitive.\n"
|
||||||
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
|
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
|
||||||
@ -6597,21 +6611,21 @@ msgid ""
|
|||||||
"Applies to: ePub, MOBI output formats"
|
"Applies to: ePub, MOBI output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:265
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tag indicating book has been read.\n"
|
"Tag indicating book has been read.\n"
|
||||||
"Default: '%default'\n"
|
"Default: '%default'\n"
|
||||||
"Applies to: ePub, MOBI output formats"
|
"Applies to: ePub, MOBI output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:270
|
||||||
msgid ""
|
msgid ""
|
||||||
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
|
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
|
||||||
"Default: '%default'\n"
|
"Default: '%default'\n"
|
||||||
"Applies to: ePub, MOBI output formats"
|
"Applies to: ePub, MOBI output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:267
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:276
|
||||||
msgid ""
|
msgid ""
|
||||||
"Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n"
|
"Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n"
|
||||||
"Default: '%default'\n"
|
"Default: '%default'\n"
|
||||||
@ -6826,7 +6840,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:658
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:658
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:482
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:484
|
||||||
msgid "Show detailed output information. Useful for debugging"
|
msgid "Show detailed output information. Useful for debugging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6846,32 +6860,27 @@ msgid ""
|
|||||||
"For help on an individual command: %%prog command --help\n"
|
"For help on an individual command: %%prog command --help\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1429
|
|
||||||
msgid "Catalog"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1691
|
|
||||||
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:1720
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1830
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6967,7 +6976,7 @@ msgstr ""
|
|||||||
msgid "Replace whitespace with underscores."
|
msgid "Replace whitespace with underscores."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:255
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256
|
||||||
msgid "Requested formats not available"
|
msgid "Requested formats not available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -6975,14 +6984,14 @@ msgstr ""
|
|||||||
msgid "Password to access your calibre library. Username is "
|
msgid "Password to access your calibre library. Username is "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:856
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:860
|
||||||
msgid ""
|
msgid ""
|
||||||
"[options]\n"
|
"[options]\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Start the calibre content server."
|
"Start the calibre content server."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:858
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:862
|
||||||
msgid "Path to the library folder to serve with the content server"
|
msgid "Path to the library folder to serve with the content server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7055,7 +7064,7 @@ msgstr ""
|
|||||||
msgid "Finished"
|
msgid "Finished"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72
|
||||||
msgid "Working..."
|
msgid "Working..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7185,75 +7194,75 @@ msgstr ""
|
|||||||
msgid "Unknown News Source"
|
msgid "Unknown News Source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:528
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:533
|
||||||
msgid "The \"%s\" recipe needs a username and password."
|
msgid "The \"%s\" recipe needs a username and password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:619
|
||||||
msgid "Download finished"
|
msgid "Download finished"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:616
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:621
|
||||||
msgid "Failed to download the following articles:"
|
msgid "Failed to download the following articles:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:622
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:627
|
||||||
msgid "Failed to download parts of the following articles:"
|
msgid "Failed to download parts of the following articles:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:624
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:629
|
||||||
msgid " from "
|
msgid " from "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:626
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:631
|
||||||
msgid "\tFailed links:"
|
msgid "\tFailed links:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:707
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:712
|
||||||
msgid "Could not fetch article. Run with -vv to see the reason"
|
msgid "Could not fetch article. Run with -vv to see the reason"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:728
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733
|
||||||
msgid "Fetching feeds..."
|
msgid "Fetching feeds..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:733
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:738
|
||||||
msgid "Got feeds from index page"
|
msgid "Got feeds from index page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:739
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:744
|
||||||
msgid "Trying to download cover..."
|
msgid "Trying to download cover..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:797
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:802
|
||||||
msgid "Starting download [%d thread(s)]..."
|
msgid "Starting download [%d thread(s)]..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:813
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:818
|
||||||
msgid "Feeds downloaded to %s"
|
msgid "Feeds downloaded to %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:823
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828
|
||||||
msgid "Could not download cover: %s"
|
msgid "Could not download cover: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840
|
||||||
msgid "Downloading cover from %s"
|
msgid "Downloading cover from %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:983
|
||||||
msgid "Untitled Article"
|
msgid "Untitled Article"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1049
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054
|
||||||
msgid "Article downloaded: %s"
|
msgid "Article downloaded: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1060
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1065
|
||||||
msgid "Article download failed: %s"
|
msgid "Article download failed: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1077
|
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1082
|
||||||
msgid "Fetching feed"
|
msgid "Fetching feed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7272,46 +7281,46 @@ msgstr ""
|
|||||||
msgid "Custom"
|
msgid "Custom"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:459
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:461
|
||||||
msgid ""
|
msgid ""
|
||||||
"%prog URL\n"
|
"%prog URL\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Where URL is for example http://google.com"
|
"Where URL is for example http://google.com"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:462
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:464
|
||||||
msgid "Base directory into which URL is saved. Default is %default"
|
msgid "Base directory into which URL is saved. Default is %default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:465
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:467
|
||||||
msgid "Timeout in seconds to wait for a response from the server. Default: %default s"
|
msgid "Timeout in seconds to wait for a response from the server. Default: %default s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:468
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:470
|
||||||
msgid "Maximum number of levels to recurse i.e. depth of links to follow. Default %default"
|
msgid "Maximum number of levels to recurse i.e. depth of links to follow. Default %default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
|
||||||
msgid "The maximum number of files to download. This only applies to files from <a href> tags. Default is %default"
|
msgid "The maximum number of files to download. This only applies to files from <a href> tags. Default is %default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:473
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
|
||||||
msgid "Minimum interval in seconds between consecutive fetches. Default is %default s"
|
msgid "Minimum interval in seconds between consecutive fetches. Default is %default s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:475
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477
|
||||||
msgid "The character encoding for the websites you are trying to download. The default is to try and guess the encoding."
|
msgid "The character encoding for the websites you are trying to download. The default is to try and guess the encoding."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479
|
||||||
msgid "Only links that match this regular expression will be followed. This option can be specified multiple times, in which case as long as a link matches any one regexp, it will be followed. By default all links are followed."
|
msgid "Only links that match this regular expression will be followed. This option can be specified multiple times, in which case as long as a link matches any one regexp, it will be followed. By default all links are followed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:479
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481
|
||||||
msgid "Any link that matches this regular expression will be ignored. This option can be specified multiple times, in which case as long as any regexp matches a link, it will be ignored.By default, no links are ignored. If both --filter-regexp and --match-regexp are specified, then --filter-regexp is applied first."
|
msgid "Any link that matches this regular expression will be ignored. This option can be specified multiple times, in which case as long as any regexp matches a link, it will be ignored.By default, no links are ignored. If both --filter-regexp and --match-regexp are specified, then --filter-regexp is applied first."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:481
|
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483
|
||||||
msgid "Do not download CSS stylesheets."
|
msgid "Do not download CSS stylesheets."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -6,14 +6,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre 0.4.22\n"
|
"Project-Id-Version: calibre 0.4.22\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-01-22 03:18+0000\n"
|
"POT-Creation-Date: 2010-01-25 00:45+0000\n"
|
||||||
"PO-Revision-Date: 2010-01-21 01:41+0000\n"
|
"PO-Revision-Date: 2010-01-25 02:45+0000\n"
|
||||||
"Last-Translator: Vincent C. <Unknown>\n"
|
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||||
"Language-Team: fr\n"
|
"Language-Team: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-01-22 04:33+0000\n"
|
"X-Launchpad-Export-Date: 2010-01-25 04:46+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
"Generated-By: pygettext.py 1.5\n"
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ msgstr "Ne fait strictement rien"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
||||||
@ -127,12 +127,12 @@ msgstr "Ne fait strictement rien"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1547
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1549
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:721
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:768
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||||
@ -234,11 +234,11 @@ msgstr "Définir les métadonnées des fichiers %s"
|
|||||||
msgid "Set metadata from %s files"
|
msgid "Set metadata from %s files"
|
||||||
msgstr "Indiquer les métadonnées pour les fichiers %s"
|
msgstr "Indiquer les métadonnées pour les fichiers %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
|
||||||
msgid "Conversion Input"
|
msgid "Conversion Input"
|
||||||
msgstr "Conversion (entrée)"
|
msgstr "Conversion (entrée)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125
|
||||||
msgid ""
|
msgid ""
|
||||||
"Specify the character encoding of the input document. If set this option "
|
"Specify the character encoding of the input document. If set this option "
|
||||||
"will override any encoding declared by the document itself. Particularly "
|
"will override any encoding declared by the document itself. Particularly "
|
||||||
@ -250,11 +250,11 @@ msgstr ""
|
|||||||
"document. Particulièrement utile pour les documents ne déclarant pas "
|
"document. Particulièrement utile pour les documents ne déclarant pas "
|
||||||
"d'encodage ou ayant des déclarations d'encodage incorrectes."
|
"d'encodage ou ayant des déclarations d'encodage incorrectes."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228
|
||||||
msgid "Conversion Output"
|
msgid "Conversion Output"
|
||||||
msgstr "Conversion (sortie)"
|
msgstr "Conversion (sortie)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242
|
||||||
msgid ""
|
msgid ""
|
||||||
"If specified, the output plugin will try to create output that is as human "
|
"If specified, the output plugin will try to create output that is as human "
|
||||||
"readable as possible. May not have any effect for some output plugins."
|
"readable as possible. May not have any effect for some output plugins."
|
||||||
@ -457,11 +457,11 @@ msgstr ""
|
|||||||
msgid "Communicate with the Binatone Readme eBook reader."
|
msgid "Communicate with the Binatone Readme eBook reader."
|
||||||
msgstr "Communiquer avec le lecteur eBook Binatone Readme"
|
msgstr "Communiquer avec le lecteur eBook Binatone Readme"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
||||||
msgid "Communicate with the Blackberry smart phone."
|
msgid "Communicate with the Blackberry smart phone."
|
||||||
msgstr "Communique avec le smartphone Blackberry."
|
msgstr "Communique avec le smartphone Blackberry."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
||||||
msgid "Kovid Goyal"
|
msgid "Kovid Goyal"
|
||||||
@ -660,7 +660,7 @@ msgstr "Espace insuffisant sur la carte mémoire"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1447
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr "Informations"
|
msgstr "Informations"
|
||||||
|
|
||||||
@ -818,8 +818,8 @@ msgstr ""
|
|||||||
msgid "Apply no processing to the image"
|
msgid "Apply no processing to the image"
|
||||||
msgstr "N'applique aucun traitement sur l'image"
|
msgstr "N'applique aucun traitement sur l'image"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Page"
|
msgstr "Page"
|
||||||
|
|
||||||
@ -2818,9 +2818,10 @@ msgstr "Sauvegardé"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16
|
||||||
msgid "CSV/XML Options"
|
msgid "CSV/XML Options"
|
||||||
msgstr ""
|
msgstr "Options CSV/XML"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
||||||
@ -2838,6 +2839,7 @@ msgid "Options specific to"
|
|||||||
msgstr "Options spécifiques à"
|
msgstr "Options spécifiques à"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
||||||
@ -2849,7 +2851,8 @@ msgstr "Options spécifiques à"
|
|||||||
msgid "output"
|
msgid "output"
|
||||||
msgstr "sortie"
|
msgstr "sortie"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:34
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
||||||
@ -2880,8 +2883,35 @@ msgstr "sortie"
|
|||||||
msgid "Form"
|
msgid "Form"
|
||||||
msgstr "Formulaire"
|
msgstr "Formulaire"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:35
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37
|
||||||
msgid "Fields to include in output:"
|
msgid "Fields to include in output:"
|
||||||
|
msgstr "Champs à inclure en sortie:"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17
|
||||||
|
msgid "E-book Options"
|
||||||
|
msgstr "Options E-book"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430
|
||||||
|
msgid "Catalog"
|
||||||
|
msgstr "Catalogue"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52
|
||||||
|
msgid "Tags to exclude as genres (regex):"
|
||||||
|
msgstr "Etiquettes pour exclure les genres (regex):"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53
|
||||||
|
msgid "'Don't include this book' tag:"
|
||||||
|
msgstr "Etiquette 'Ne pas inclure ce livre':"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54
|
||||||
|
msgid "'Mark this book as read' tag:"
|
||||||
|
msgstr "Etiquette 'Marquer ce livre comme lu':"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55
|
||||||
|
msgid "Additional note tag prefix:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
||||||
@ -3547,7 +3577,7 @@ msgid "RB Output"
|
|||||||
msgstr "Sortie RB"
|
msgstr "Sortie RB"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637
|
||||||
msgid "Choose the format to view"
|
msgid "Choose the format to view"
|
||||||
msgstr "Choisir le format à afficher"
|
msgstr "Choisir le format à afficher"
|
||||||
|
|
||||||
@ -3855,7 +3885,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132
|
||||||
msgid "No details available."
|
msgid "No details available."
|
||||||
msgstr "Pas de détail disponible."
|
msgstr "Pas de détail disponible."
|
||||||
|
|
||||||
@ -4111,7 +4141,7 @@ msgstr "&Précédent"
|
|||||||
msgid "&Next"
|
msgid "&Next"
|
||||||
msgstr "Suiva&nt"
|
msgstr "Suiva&nt"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37
|
||||||
msgid "My Books"
|
msgid "My Books"
|
||||||
msgstr "Mes Livres"
|
msgstr "Mes Livres"
|
||||||
|
|
||||||
@ -4251,7 +4281,7 @@ msgstr "Nouvelle adresse email"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erreur"
|
msgstr "Erreur"
|
||||||
@ -6443,7 +6473,7 @@ msgid "Save to disk in a single directory"
|
|||||||
msgstr "Sauvegarder sur le disque dans un seul répertoire"
|
msgstr "Sauvegarder sur le disque dans un seul répertoire"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1741
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745
|
||||||
msgid "Save only %s format to disk"
|
msgid "Save only %s format to disk"
|
||||||
msgstr "Sauvegarder seulement le format %s vers le disque"
|
msgstr "Sauvegarder seulement le format %s vers le disque"
|
||||||
|
|
||||||
@ -6478,7 +6508,7 @@ msgstr "Convertir par lot"
|
|||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360
|
||||||
msgid "Create catalog of books in your calibre library"
|
msgid "Create catalog of books in your calibre library"
|
||||||
msgstr ""
|
msgstr "Créer le catalogue des livres dans votre librairie calibre"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:376
|
||||||
msgid "Run welcome wizard"
|
msgid "Run welcome wizard"
|
||||||
@ -6499,13 +6529,13 @@ msgid "Calibre Library"
|
|||||||
msgstr "Librairie calibre"
|
msgstr "Librairie calibre"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1897
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901
|
||||||
msgid "Choose a location for your ebook library."
|
msgid "Choose a location for your ebook library."
|
||||||
msgstr "Choisir un emplacement pour votre librairie d'ebook"
|
msgstr "Choisir un emplacement pour votre librairie d'ebook"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:523
|
||||||
msgid "Calibre Quick Start Guide"
|
msgid "Calibre Quick Start Guide"
|
||||||
msgstr ""
|
msgstr "Guide De Démarrage Rapide Calibre"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:703
|
||||||
msgid "Browse by covers"
|
msgid "Browse by covers"
|
||||||
@ -6622,8 +6652,8 @@ msgid "Cannot delete"
|
|||||||
msgstr "Impossible de supprimer"
|
msgstr "Impossible de supprimer"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650
|
||||||
msgid "No book selected"
|
msgid "No book selected"
|
||||||
msgstr "Aucun livre sélectionné"
|
msgstr "Aucun livre sélectionné"
|
||||||
|
|
||||||
@ -6631,11 +6661,11 @@ msgstr "Aucun livre sélectionné"
|
|||||||
msgid "Choose formats to be deleted"
|
msgid "Choose formats to be deleted"
|
||||||
msgstr "Choisir les formats à supprimer"
|
msgstr "Choisir les formats à supprimer"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103
|
||||||
msgid "Choose formats <b>not</b> to be deleted"
|
msgid "Choose formats <b>not</b> to be deleted"
|
||||||
msgstr "Choisir les formats à <b>ne pas</b> supprimer"
|
msgstr "Choisir les formats à <b>ne pas</b> supprimer"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1137
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141
|
||||||
msgid ""
|
msgid ""
|
||||||
"The selected books will be <b>permanently deleted</b> and the files removed "
|
"The selected books will be <b>permanently deleted</b> and the files removed "
|
||||||
"from your computer. Are you sure?"
|
"from your computer. Are you sure?"
|
||||||
@ -6643,123 +6673,131 @@ msgstr ""
|
|||||||
"Les livres sélectionnés vont être <b>supprimés définitivement</b> et les "
|
"Les livres sélectionnés vont être <b>supprimés définitivement</b> et les "
|
||||||
"fichiers seront supprimés de votre ordinateur. Etes-vous sûr ?"
|
"fichiers seront supprimés de votre ordinateur. Etes-vous sûr ?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1164
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168
|
||||||
msgid "Deleting books from device."
|
msgid "Deleting books from device."
|
||||||
msgstr "Suppression des livres dans l'appareil"
|
msgstr "Suppression des livres dans l'appareil"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199
|
||||||
msgid "Cannot download metadata"
|
msgid "Cannot download metadata"
|
||||||
msgstr "Impossible de télécharger les métadonnées"
|
msgstr "Impossible de télécharger les métadonnées"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1196
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1253
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1286
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1311
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1370
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1483
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487
|
||||||
msgid "No books selected"
|
msgid "No books selected"
|
||||||
msgstr "Aucun livre sélectionné"
|
msgstr "Aucun livre sélectionné"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1211
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
||||||
msgid "social metadata"
|
msgid "social metadata"
|
||||||
msgstr "Métadonnées sociales"
|
msgstr "Métadonnées sociales"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "covers"
|
msgid "covers"
|
||||||
msgstr "couvertures"
|
msgstr "couvertures"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "métadonnées"
|
msgstr "métadonnées"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219
|
||||||
msgid "Downloading %s for %d book(s)"
|
msgid "Downloading %s for %d book(s)"
|
||||||
msgstr "Télécharge les livres %s sur %d"
|
msgstr "Télécharge les livres %s sur %d"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1237
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
||||||
msgid "Failed to download some metadata"
|
msgid "Failed to download some metadata"
|
||||||
msgstr "Le téléchargement d'une partie des métadonnées a échoué"
|
msgstr "Le téléchargement d'une partie des métadonnées a échoué"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1238
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
||||||
msgid "Failed to download metadata for the following:"
|
msgid "Failed to download metadata for the following:"
|
||||||
msgstr "Le téléchargement des métadonnées a échoué pour :"
|
msgstr "Le téléchargement des métadonnées a échoué pour :"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245
|
||||||
msgid "Failed to download metadata:"
|
msgid "Failed to download metadata:"
|
||||||
msgstr "Le téléchargement des métadonnées a échoué:"
|
msgstr "Le téléchargement des métadonnées a échoué:"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1252
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1285
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289
|
||||||
msgid "Cannot edit metadata"
|
msgid "Cannot edit metadata"
|
||||||
msgstr "Impossible d'éditer les métadonnées"
|
msgstr "Impossible d'éditer les métadonnées"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1310
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314
|
||||||
msgid "Cannot save to disk"
|
msgid "Cannot save to disk"
|
||||||
msgstr "Impossible de sauvegarder sur le disque"
|
msgstr "Impossible de sauvegarder sur le disque"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1313
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317
|
||||||
msgid "Choose destination directory"
|
msgid "Choose destination directory"
|
||||||
msgstr "Choisir le répertoire de destination"
|
msgstr "Choisir le répertoire de destination"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1340
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344
|
||||||
msgid "Error while saving"
|
msgid "Error while saving"
|
||||||
msgstr "Erreur pendant la sauvegarde"
|
msgstr "Erreur pendant la sauvegarde"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1341
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345
|
||||||
msgid "There was an error while saving."
|
msgid "There was an error while saving."
|
||||||
msgstr "Il y a eu une erreur lors de la sauvegarde."
|
msgstr "Il y a eu une erreur lors de la sauvegarde."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1349
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353
|
||||||
msgid "Could not save some books"
|
msgid "Could not save some books"
|
||||||
msgstr "Impossible de sauvegarder certains livres"
|
msgstr "Impossible de sauvegarder certains livres"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1350
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354
|
||||||
msgid "Click the show details button to see which ones."
|
msgid "Click the show details button to see which ones."
|
||||||
msgstr "Cliquer le bouton afficher les détails pour voir lesquels."
|
msgstr "Cliquer le bouton afficher les détails pour voir lesquels."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1371
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375
|
||||||
msgid "No books selected to generate catalog for"
|
msgid "No books selected to generate catalog for"
|
||||||
msgstr "Aucun livre sélectionné pour générer le catalogue pour"
|
msgstr "Aucun livre sélectionné pour générer le catalogue pour"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392
|
||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr "Génère le catalogue %s..."
|
msgstr "Génère le catalogue %s..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1399
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Catalogue généré."
|
msgstr "Catalogue généré."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1417
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406
|
||||||
|
msgid "Export Catalog Directory"
|
||||||
|
msgstr "Répertoire d'export du catalogue"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407
|
||||||
|
msgid "Select destination for %s.%s"
|
||||||
|
msgstr "Sélectionner la destination pour %s.%s"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
|
||||||
msgid "Fetching news from "
|
msgid "Fetching news from "
|
||||||
msgstr "Récupération des News de "
|
msgstr "Récupération des News de "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435
|
||||||
msgid " fetched."
|
msgid " fetched."
|
||||||
msgstr " récupéré."
|
msgstr " récupéré."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1482
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486
|
||||||
msgid "Cannot convert"
|
msgid "Cannot convert"
|
||||||
msgstr "Conversion impossible"
|
msgstr "Conversion impossible"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1511
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515
|
||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr "Démarrer la conversion de %d livre(s)"
|
msgstr "Démarrer la conversion de %d livre(s)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1683
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687
|
||||||
msgid "Cannot view"
|
msgid "Cannot view"
|
||||||
msgstr "Impossible de visualiser"
|
msgstr "Impossible de visualiser"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649
|
||||||
msgid "Cannot open folder"
|
msgid "Cannot open folder"
|
||||||
msgstr "Impossible d'ouvrir le répertoire"
|
msgstr "Impossible d'ouvrir le répertoire"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1667
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671
|
||||||
msgid "Multiple Books Selected"
|
msgid "Multiple Books Selected"
|
||||||
msgstr "Plusieurs livres sélectionnés"
|
msgstr "Plusieurs livres sélectionnés"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1668
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are attempting to open %d books. Opening too many books at once can be "
|
"You are attempting to open %d books. Opening too many books at once can be "
|
||||||
"slow and have a negative effect on the responsiveness of your computer. Once "
|
"slow and have a negative effect on the responsiveness of your computer. Once "
|
||||||
@ -6771,32 +6809,32 @@ msgstr ""
|
|||||||
"réponses de l'ordinateur. Une fois démarré le processus ne peut pas être "
|
"réponses de l'ordinateur. Une fois démarré le processus ne peut pas être "
|
||||||
"arrêté avant la fin. Voulez-vous continuer ?"
|
"arrêté avant la fin. Voulez-vous continuer ?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1684
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688
|
||||||
msgid "%s has no available formats."
|
msgid "%s has no available formats."
|
||||||
msgstr "%s n'a pas de format disponible."
|
msgstr "%s n'a pas de format disponible."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1725
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729
|
||||||
msgid "Cannot configure"
|
msgid "Cannot configure"
|
||||||
msgstr "Configuration impossible"
|
msgstr "Configuration impossible"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1726
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730
|
||||||
msgid "Cannot configure while there are running jobs."
|
msgid "Cannot configure while there are running jobs."
|
||||||
msgstr "Impossible de configurer pendant que des travaux sont en cours."
|
msgstr "Impossible de configurer pendant que des travaux sont en cours."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1769
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773
|
||||||
msgid "No detailed info available"
|
msgid "No detailed info available"
|
||||||
msgstr "Pas d'information détaillée disponible"
|
msgstr "Pas d'information détaillée disponible"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1770
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774
|
||||||
msgid "No detailed information is available for books on the device."
|
msgid "No detailed information is available for books on the device."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pas d'information détaillée disponible pour les livres dans l'appareil."
|
"Pas d'information détaillée disponible pour les livres dans l'appareil."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1825
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Erreur pendant la communication avec le lecteur électronique"
|
msgstr "Erreur pendant la communication avec le lecteur électronique"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830
|
||||||
msgid ""
|
msgid ""
|
||||||
"There was a temporary error talking to the device. Please unplug and "
|
"There was a temporary error talking to the device. Please unplug and "
|
||||||
"reconnect the device and or reboot."
|
"reconnect the device and or reboot."
|
||||||
@ -6805,12 +6843,12 @@ msgstr ""
|
|||||||
"lecteur électronique. Veuillez déconnecter et reconnecter le lecteur "
|
"lecteur électronique. Veuillez déconnecter et reconnecter le lecteur "
|
||||||
"électronique et redémarrer."
|
"électronique et redémarrer."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1849
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1877
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881
|
||||||
msgid "Conversion Error"
|
msgid "Conversion Error"
|
||||||
msgstr "Erreur lors de la conversion"
|
msgstr "Erreur lors de la conversion"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1850
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854
|
||||||
msgid ""
|
msgid ""
|
||||||
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
||||||
"first remove the DRM using third party tools."
|
"first remove the DRM using third party tools."
|
||||||
@ -6819,23 +6857,23 @@ msgstr ""
|
|||||||
"href=\"%s\">DRM</a>. Vous devez d'abord enlever les DRM avec des outils "
|
"href=\"%s\">DRM</a>. Vous devez d'abord enlever les DRM avec des outils "
|
||||||
"tiers."
|
"tiers."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1863
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867
|
||||||
msgid "Recipe Disabled"
|
msgid "Recipe Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1878
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882
|
||||||
msgid "<b>Failed</b>"
|
msgid "<b>Failed</b>"
|
||||||
msgstr "<b>Échoué</b>"
|
msgstr "<b>Échoué</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910
|
||||||
msgid "Invalid library location"
|
msgid "Invalid library location"
|
||||||
msgstr "Emplacement de la librairie invalide"
|
msgstr "Emplacement de la librairie invalide"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911
|
||||||
msgid "Could not access %s. Using %s as the library."
|
msgid "Could not access %s. Using %s as the library."
|
||||||
msgstr "Impossible d'accéder à %s. Utilise %s comme librairie."
|
msgstr "Impossible d'accéder à %s. Utilise %s comme librairie."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1957
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961
|
||||||
msgid ""
|
msgid ""
|
||||||
"is the result of the efforts of many volunteers from all over the world. If "
|
"is the result of the efforts of many volunteers from all over the world. If "
|
||||||
"you find it useful, please consider donating to support its development."
|
"you find it useful, please consider donating to support its development."
|
||||||
@ -6844,11 +6882,11 @@ msgstr ""
|
|||||||
"Si vous le trouvez utile, pensez à donner afin de supporter son "
|
"Si vous le trouvez utile, pensez à donner afin de supporter son "
|
||||||
"développement."
|
"développement."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1982
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986
|
||||||
msgid "There are active jobs. Are you sure you want to quit?"
|
msgid "There are active jobs. Are you sure you want to quit?"
|
||||||
msgstr "Il y a des travaux actifs. Voulez-vous vraiment finir ?"
|
msgstr "Il y a des travaux actifs. Voulez-vous vraiment finir ?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1985
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
||||||
msgid ""
|
msgid ""
|
||||||
" is communicating with the device!<br>\n"
|
" is communicating with the device!<br>\n"
|
||||||
" Quitting may cause corruption on the device.<br>\n"
|
" Quitting may cause corruption on the device.<br>\n"
|
||||||
@ -6859,11 +6897,11 @@ msgstr ""
|
|||||||
"l'appareil.<br>\n"
|
"l'appareil.<br>\n"
|
||||||
" Êtes-vous sûr de vouloir quitter ?"
|
" Êtes-vous sûr de vouloir quitter ?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993
|
||||||
msgid "WARNING: Active jobs"
|
msgid "WARNING: Active jobs"
|
||||||
msgstr "ATTENTION: Travaux actifs"
|
msgstr "ATTENTION: Travaux actifs"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2041
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045
|
||||||
msgid ""
|
msgid ""
|
||||||
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
||||||
"context menu of the system tray."
|
"context menu of the system tray."
|
||||||
@ -6871,7 +6909,7 @@ msgstr ""
|
|||||||
"continuera à tourner dans la zone de notification. Pour le fermer, choisir "
|
"continuera à tourner dans la zone de notification. Pour le fermer, choisir "
|
||||||
"<b>Quitter</b> dans le menu contextuel de la zone de notification."
|
"<b>Quitter</b> dans le menu contextuel de la zone de notification."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2060
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064
|
||||||
msgid ""
|
msgid ""
|
||||||
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
||||||
"href=\"%s\">%s</a></span>"
|
"href=\"%s\">%s</a></span>"
|
||||||
@ -6879,11 +6917,11 @@ msgstr ""
|
|||||||
"<span style=\"color:red; font-weight:bold\">Dernière version: <a "
|
"<span style=\"color:red; font-weight:bold\">Dernière version: <a "
|
||||||
"href=\"%s\">%s</a></span>"
|
"href=\"%s\">%s</a></span>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2068
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072
|
||||||
msgid "Update available"
|
msgid "Update available"
|
||||||
msgstr "Mise à jour disponible"
|
msgstr "Mise à jour disponible"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073
|
||||||
msgid ""
|
msgid ""
|
||||||
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
||||||
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
||||||
@ -7108,7 +7146,7 @@ msgstr "La taille de police monospace en px"
|
|||||||
msgid "The standard font type"
|
msgid "The standard font type"
|
||||||
msgstr "Le type de police standard"
|
msgstr "Le type de police standard"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:407
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408
|
||||||
msgid "&Lookup in dictionary"
|
msgid "&Lookup in dictionary"
|
||||||
msgstr "Rechercher dans le dictionnaire"
|
msgstr "Rechercher dans le dictionnaire"
|
||||||
|
|
||||||
@ -7758,7 +7796,7 @@ msgstr ""
|
|||||||
"Le nombre maximum de correspondances retournées par une requête OPDS. Ceci "
|
"Le nombre maximum de correspondances retournées par une requête OPDS. Ceci "
|
||||||
"affecte l'intégration dans Stanza, Wordplayer,etc..."
|
"affecte l'intégration dans Stanza, Wordplayer,etc..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:28
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"The fields to output when cataloging books in the database. Should be a "
|
"The fields to output when cataloging books in the database. Should be a "
|
||||||
"comma-separated list of fields.\n"
|
"comma-separated list of fields.\n"
|
||||||
@ -7767,7 +7805,7 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:37
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output field to sort on.\n"
|
"Output field to sort on.\n"
|
||||||
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
||||||
@ -7775,6 +7813,62 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:241
|
||||||
|
msgid ""
|
||||||
|
"Title of generated catalog used as title in metadata.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:247
|
||||||
|
msgid ""
|
||||||
|
"Save the output from different stages of the conversion pipeline to the "
|
||||||
|
"specified directory. Useful if you are unsure at which stage of the "
|
||||||
|
"conversion process a bug is occurring.\n"
|
||||||
|
"Default: '%default'None\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256
|
||||||
|
msgid ""
|
||||||
|
"Regex describing tags to exclude as genres.\n"
|
||||||
|
"Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261
|
||||||
|
msgid ""
|
||||||
|
"Comma-separated list of tag words indicating book should be excluded from "
|
||||||
|
"output. Case-insensitive.\n"
|
||||||
|
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268
|
||||||
|
msgid ""
|
||||||
|
"Tag indicating book has been read.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273
|
||||||
|
msgid ""
|
||||||
|
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:279
|
||||||
|
msgid ""
|
||||||
|
"Specifies the output profile. In some cases, an output profile is required "
|
||||||
|
"to optimize the catalog for the device. For example, 'kindle' or "
|
||||||
|
"'kindle_dx' creates a structured Table of Contents with Sections and "
|
||||||
|
"Articles.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"Path to the calibre library. Default is to use the path stored in the "
|
"Path to the calibre library. Default is to use the path stored in the "
|
||||||
@ -8126,32 +8220,27 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Pour une aide sur commande précise: %%prog commande --help\n"
|
"Pour une aide sur commande précise: %%prog commande --help\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1429
|
|
||||||
msgid "Catalog"
|
|
||||||
msgstr "Catalogue"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1691
|
|
||||||
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 "<p>Migre l'ancienne base vers la librairie dans %s<br><center>"
|
msgstr "<p>Migre l'ancienne base vers la librairie dans %s<br><center>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1720
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "Copie <b>%s</b>"
|
msgstr "Copie <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Compacte la base"
|
msgstr "Compacte la base"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1830
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr "Vérifie l'intégrité SQL..."
|
msgstr "Vérifie l'intégrité SQL..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr "Vérifie si des fichiers sont manquants."
|
msgstr "Vérifie si des fichiers sont manquants."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr "Id vérifié"
|
msgstr "Id vérifié"
|
||||||
|
|
||||||
@ -8299,7 +8388,7 @@ msgstr "Convertir les chemins en minuscule."
|
|||||||
msgid "Replace whitespace with underscores."
|
msgid "Replace whitespace with underscores."
|
||||||
msgstr "Remplacer les espaces par des underscores."
|
msgstr "Remplacer les espaces par des underscores."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:255
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256
|
||||||
msgid "Requested formats not available"
|
msgid "Requested formats not available"
|
||||||
msgstr "Formats demandés non disponible"
|
msgstr "Formats demandés non disponible"
|
||||||
|
|
||||||
@ -8308,7 +8397,7 @@ msgid "Password to access your calibre library. Username is "
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Mot de passe pour accéder à la librairie calibre. Le nom d'utilisateur est "
|
"Mot de passe pour accéder à la librairie calibre. Le nom d'utilisateur est "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:856
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:860
|
||||||
msgid ""
|
msgid ""
|
||||||
"[options]\n"
|
"[options]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -8318,7 +8407,7 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Démarre le serveur de contenu calibre"
|
"Démarre le serveur de contenu calibre"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:858
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:862
|
||||||
msgid "Path to the library folder to serve with the content server"
|
msgid "Path to the library folder to serve with the content server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -8396,7 +8485,7 @@ msgstr "Arrêté"
|
|||||||
msgid "Finished"
|
msgid "Finished"
|
||||||
msgstr "Terminé"
|
msgstr "Terminé"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72
|
||||||
msgid "Working..."
|
msgid "Working..."
|
||||||
msgstr "Traitement en cours..."
|
msgstr "Traitement en cours..."
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -7,14 +7,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre\n"
|
"Project-Id-Version: calibre\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2010-01-22 03:18+0000\n"
|
"POT-Creation-Date: 2010-01-25 00:45+0000\n"
|
||||||
"PO-Revision-Date: 2010-01-21 23:19+0000\n"
|
"PO-Revision-Date: 2010-01-25 02:46+0000\n"
|
||||||
"Last-Translator: Marty <Unknown>\n"
|
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||||
"Language-Team: Polish <pl@li.org>\n"
|
"Language-Team: Polish <pl@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-01-22 04:33+0000\n"
|
"X-Launchpad-Export-Date: 2010-01-25 04:47+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||||
@ -30,7 +30,7 @@ msgstr "Ta opcja nic nie zmienia"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
||||||
@ -127,12 +127,12 @@ msgstr "Ta opcja nic nie zmienia"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1547
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1549
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:721
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:768
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||||
@ -234,11 +234,11 @@ msgstr "Ustaw metadane w %s plikach"
|
|||||||
msgid "Set metadata from %s files"
|
msgid "Set metadata from %s files"
|
||||||
msgstr "Pobierz metadane z %s plików"
|
msgstr "Pobierz metadane z %s plików"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
|
||||||
msgid "Conversion Input"
|
msgid "Conversion Input"
|
||||||
msgstr "Źródłowy format do konwersji"
|
msgstr "Źródłowy format do konwersji"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125
|
||||||
msgid ""
|
msgid ""
|
||||||
"Specify the character encoding of the input document. If set this option "
|
"Specify the character encoding of the input document. If set this option "
|
||||||
"will override any encoding declared by the document itself. Particularly "
|
"will override any encoding declared by the document itself. Particularly "
|
||||||
@ -246,11 +246,11 @@ msgid ""
|
|||||||
"encoding declarations."
|
"encoding declarations."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228
|
||||||
msgid "Conversion Output"
|
msgid "Conversion Output"
|
||||||
msgstr "Docelowy format po konwersji"
|
msgstr "Docelowy format po konwersji"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242
|
||||||
msgid ""
|
msgid ""
|
||||||
"If specified, the output plugin will try to create output that is as human "
|
"If specified, the output plugin will try to create output that is as human "
|
||||||
"readable as possible. May not have any effect for some output plugins."
|
"readable as possible. May not have any effect for some output plugins."
|
||||||
@ -451,11 +451,11 @@ msgstr ""
|
|||||||
msgid "Communicate with the Binatone Readme eBook reader."
|
msgid "Communicate with the Binatone Readme eBook reader."
|
||||||
msgstr "Komunikować się z Binatone Readme czytnik e-booków"
|
msgstr "Komunikować się z Binatone Readme czytnik e-booków"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
||||||
msgid "Communicate with the Blackberry smart phone."
|
msgid "Communicate with the Blackberry smart phone."
|
||||||
msgstr "Komunikować się z telefonu Blackberry."
|
msgstr "Komunikować się z telefonu Blackberry."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
||||||
msgid "Kovid Goyal"
|
msgid "Kovid Goyal"
|
||||||
@ -650,7 +650,7 @@ msgstr "Na karcie pamięci jest niewystarczająca ilość wolnego miejsca"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1447
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr "Aktualności"
|
msgstr "Aktualności"
|
||||||
|
|
||||||
@ -802,8 +802,8 @@ msgstr ""
|
|||||||
msgid "Apply no processing to the image"
|
msgid "Apply no processing to the image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Strona"
|
msgstr "Strona"
|
||||||
|
|
||||||
@ -2506,6 +2506,7 @@ msgid "CSV/XML Options"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
||||||
@ -2523,6 +2524,7 @@ msgid "Options specific to"
|
|||||||
msgstr "Opcje specyficzne dla"
|
msgstr "Opcje specyficzne dla"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
||||||
@ -2534,7 +2536,8 @@ msgstr "Opcje specyficzne dla"
|
|||||||
msgid "output"
|
msgid "output"
|
||||||
msgstr "wyjście"
|
msgstr "wyjście"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:34
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
||||||
@ -2565,10 +2568,37 @@ msgstr "wyjście"
|
|||||||
msgid "Form"
|
msgid "Form"
|
||||||
msgstr "Formularz"
|
msgstr "Formularz"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:35
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37
|
||||||
msgid "Fields to include in output:"
|
msgid "Fields to include in output:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17
|
||||||
|
msgid "E-book Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430
|
||||||
|
msgid "Catalog"
|
||||||
|
msgstr "Katalog"
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52
|
||||||
|
msgid "Tags to exclude as genres (regex):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53
|
||||||
|
msgid "'Don't include this book' tag:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54
|
||||||
|
msgid "'Mark this book as read' tag:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55
|
||||||
|
msgid "Additional note tag prefix:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
||||||
msgid "Tab template for catalog.ui"
|
msgid "Tab template for catalog.ui"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3198,7 +3228,7 @@ msgid "RB Output"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637
|
||||||
msgid "Choose the format to view"
|
msgid "Choose the format to view"
|
||||||
msgstr "Wybierz format do wyświetlenia"
|
msgstr "Wybierz format do wyświetlenia"
|
||||||
|
|
||||||
@ -3495,7 +3525,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132
|
||||||
msgid "No details available."
|
msgid "No details available."
|
||||||
msgstr "Brak szczegółów."
|
msgstr "Brak szczegółów."
|
||||||
|
|
||||||
@ -3740,7 +3770,7 @@ msgstr "&Poprzedni"
|
|||||||
msgid "&Next"
|
msgid "&Next"
|
||||||
msgstr "&Następny"
|
msgstr "&Następny"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37
|
||||||
msgid "My Books"
|
msgid "My Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3873,7 +3903,7 @@ msgstr "nowy adres email"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Błąd"
|
msgstr "Błąd"
|
||||||
@ -5954,7 +5984,7 @@ msgid "Save to disk in a single directory"
|
|||||||
msgstr "Zapisz na dysku w pojedyńczym folderze"
|
msgstr "Zapisz na dysku w pojedyńczym folderze"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1741
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745
|
||||||
msgid "Save only %s format to disk"
|
msgid "Save only %s format to disk"
|
||||||
msgstr "Zapisz na dysku jedynie pliki w formacie %s"
|
msgstr "Zapisz na dysku jedynie pliki w formacie %s"
|
||||||
|
|
||||||
@ -6009,7 +6039,7 @@ msgid "Calibre Library"
|
|||||||
msgstr "Biblioteka calibre"
|
msgstr "Biblioteka calibre"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1897
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901
|
||||||
msgid "Choose a location for your ebook library."
|
msgid "Choose a location for your ebook library."
|
||||||
msgstr "Wybierz lokalizację dla twojej biblioteki książek."
|
msgstr "Wybierz lokalizację dla twojej biblioteki książek."
|
||||||
|
|
||||||
@ -6119,8 +6149,8 @@ msgid "Cannot delete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650
|
||||||
msgid "No book selected"
|
msgid "No book selected"
|
||||||
msgstr "Nie wybrano ksiązki"
|
msgstr "Nie wybrano ksiązki"
|
||||||
|
|
||||||
@ -6128,11 +6158,11 @@ msgstr "Nie wybrano ksiązki"
|
|||||||
msgid "Choose formats to be deleted"
|
msgid "Choose formats to be deleted"
|
||||||
msgstr "Wybierz formaty do usunięcia"
|
msgstr "Wybierz formaty do usunięcia"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103
|
||||||
msgid "Choose formats <b>not</b> to be deleted"
|
msgid "Choose formats <b>not</b> to be deleted"
|
||||||
msgstr "Wybierz formaty, które <b>nie</b> zostaną usunięte"
|
msgstr "Wybierz formaty, które <b>nie</b> zostaną usunięte"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1137
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141
|
||||||
msgid ""
|
msgid ""
|
||||||
"The selected books will be <b>permanently deleted</b> and the files removed "
|
"The selected books will be <b>permanently deleted</b> and the files removed "
|
||||||
"from your computer. Are you sure?"
|
"from your computer. Are you sure?"
|
||||||
@ -6140,123 +6170,131 @@ msgstr ""
|
|||||||
"Wybrane książki będą <b>permanentnie usunięte</b> i ich pliki zostaną "
|
"Wybrane książki będą <b>permanentnie usunięte</b> i ich pliki zostaną "
|
||||||
"usunięte z twojego komputera. Jesteś pewny?"
|
"usunięte z twojego komputera. Jesteś pewny?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1164
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168
|
||||||
msgid "Deleting books from device."
|
msgid "Deleting books from device."
|
||||||
msgstr "Usuwanie książek z urządzenia."
|
msgstr "Usuwanie książek z urządzenia."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199
|
||||||
msgid "Cannot download metadata"
|
msgid "Cannot download metadata"
|
||||||
msgstr "Nie można obrac metadanych"
|
msgstr "Nie można obrac metadanych"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1196
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1253
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1286
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1311
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1370
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1483
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487
|
||||||
msgid "No books selected"
|
msgid "No books selected"
|
||||||
msgstr "Nie wybrano ksiązek"
|
msgstr "Nie wybrano ksiązek"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1211
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
||||||
msgid "social metadata"
|
msgid "social metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "covers"
|
msgid "covers"
|
||||||
msgstr "okładki"
|
msgstr "okładki"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "metadane"
|
msgstr "metadane"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219
|
||||||
msgid "Downloading %s for %d book(s)"
|
msgid "Downloading %s for %d book(s)"
|
||||||
msgstr "Pobieram %s dla %d książki(ek)"
|
msgstr "Pobieram %s dla %d książki(ek)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1237
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
||||||
msgid "Failed to download some metadata"
|
msgid "Failed to download some metadata"
|
||||||
msgstr "Nie udało się pobrac niektórych metadanych"
|
msgstr "Nie udało się pobrac niektórych metadanych"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1238
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
||||||
msgid "Failed to download metadata for the following:"
|
msgid "Failed to download metadata for the following:"
|
||||||
msgstr "Nie udało się pobrać metadanych dla następujących e-ksiązek:"
|
msgstr "Nie udało się pobrać metadanych dla następujących e-ksiązek:"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245
|
||||||
msgid "Failed to download metadata:"
|
msgid "Failed to download metadata:"
|
||||||
msgstr "Nie udało się pobrać metadanych:"
|
msgstr "Nie udało się pobrać metadanych:"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1252
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1285
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289
|
||||||
msgid "Cannot edit metadata"
|
msgid "Cannot edit metadata"
|
||||||
msgstr "Nie można edytować metadanych"
|
msgstr "Nie można edytować metadanych"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1310
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314
|
||||||
msgid "Cannot save to disk"
|
msgid "Cannot save to disk"
|
||||||
msgstr "Nie można zapisać na dysku"
|
msgstr "Nie można zapisać na dysku"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1313
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317
|
||||||
msgid "Choose destination directory"
|
msgid "Choose destination directory"
|
||||||
msgstr "Wyberz folder docelowy"
|
msgstr "Wyberz folder docelowy"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1340
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344
|
||||||
msgid "Error while saving"
|
msgid "Error while saving"
|
||||||
msgstr "Błąd podczas zapisywania"
|
msgstr "Błąd podczas zapisywania"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1341
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345
|
||||||
msgid "There was an error while saving."
|
msgid "There was an error while saving."
|
||||||
msgstr "Wysapił błąd podczas zapisywania."
|
msgstr "Wysapił błąd podczas zapisywania."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1349
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353
|
||||||
msgid "Could not save some books"
|
msgid "Could not save some books"
|
||||||
msgstr "Nie można była zapisać niektórych książek"
|
msgstr "Nie można była zapisać niektórych książek"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1350
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354
|
||||||
msgid "Click the show details button to see which ones."
|
msgid "Click the show details button to see which ones."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1371
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375
|
||||||
msgid "No books selected to generate catalog for"
|
msgid "No books selected to generate catalog for"
|
||||||
msgstr "Brak książek do wygenerowania katalogu"
|
msgstr "Brak książek do wygenerowania katalogu"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392
|
||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1399
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr "Katalog wygenerowany"
|
msgstr "Katalog wygenerowany"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1417
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406
|
||||||
|
msgid "Export Catalog Directory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407
|
||||||
|
msgid "Select destination for %s.%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
|
||||||
msgid "Fetching news from "
|
msgid "Fetching news from "
|
||||||
msgstr "Pobieranie aktualności z "
|
msgstr "Pobieranie aktualności z "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435
|
||||||
msgid " fetched."
|
msgid " fetched."
|
||||||
msgstr " - pobrano."
|
msgstr " - pobrano."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1482
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486
|
||||||
msgid "Cannot convert"
|
msgid "Cannot convert"
|
||||||
msgstr "Nie można przekonwertować"
|
msgstr "Nie można przekonwertować"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1511
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515
|
||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr "Rozpoczynam konwersję %d książki(ek)"
|
msgstr "Rozpoczynam konwersję %d książki(ek)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1683
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687
|
||||||
msgid "Cannot view"
|
msgid "Cannot view"
|
||||||
msgstr "Nie można wyświetlić"
|
msgstr "Nie można wyświetlić"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649
|
||||||
msgid "Cannot open folder"
|
msgid "Cannot open folder"
|
||||||
msgstr "Nie można otworzyć folderu"
|
msgstr "Nie można otworzyć folderu"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1667
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671
|
||||||
msgid "Multiple Books Selected"
|
msgid "Multiple Books Selected"
|
||||||
msgstr "Wybrano wiele książek"
|
msgstr "Wybrano wiele książek"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1668
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are attempting to open %d books. Opening too many books at once can be "
|
"You are attempting to open %d books. Opening too many books at once can be "
|
||||||
"slow and have a negative effect on the responsiveness of your computer. Once "
|
"slow and have a negative effect on the responsiveness of your computer. Once "
|
||||||
@ -6264,31 +6302,31 @@ msgid ""
|
|||||||
"continue?"
|
"continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1684
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688
|
||||||
msgid "%s has no available formats."
|
msgid "%s has no available formats."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1725
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729
|
||||||
msgid "Cannot configure"
|
msgid "Cannot configure"
|
||||||
msgstr "Nie można skonfigurować"
|
msgstr "Nie można skonfigurować"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1726
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730
|
||||||
msgid "Cannot configure while there are running jobs."
|
msgid "Cannot configure while there are running jobs."
|
||||||
msgstr "Nie można skonfigurować, gdy są aktywne jakieś zadania."
|
msgstr "Nie można skonfigurować, gdy są aktywne jakieś zadania."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1769
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773
|
||||||
msgid "No detailed info available"
|
msgid "No detailed info available"
|
||||||
msgstr "Brak szczegółowych informacji"
|
msgstr "Brak szczegółowych informacji"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1770
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774
|
||||||
msgid "No detailed information is available for books on the device."
|
msgid "No detailed information is available for books on the device."
|
||||||
msgstr "Brak szczegółowych informacji dla książek na urządzeniu."
|
msgstr "Brak szczegółowych informacji dla książek na urządzeniu."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1825
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Błąd komunikacji z urządzeniem"
|
msgstr "Błąd komunikacji z urządzeniem"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830
|
||||||
msgid ""
|
msgid ""
|
||||||
"There was a temporary error talking to the device. Please unplug and "
|
"There was a temporary error talking to the device. Please unplug and "
|
||||||
"reconnect the device and or reboot."
|
"reconnect the device and or reboot."
|
||||||
@ -6296,12 +6334,12 @@ msgstr ""
|
|||||||
"Wystąpił chwilowy błąd komunikacji z urządzeniem. Odłącz i podłącz je "
|
"Wystąpił chwilowy błąd komunikacji z urządzeniem. Odłącz i podłącz je "
|
||||||
"ponownie lub uruchom komputer ponownie."
|
"ponownie lub uruchom komputer ponownie."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1849
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1877
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881
|
||||||
msgid "Conversion Error"
|
msgid "Conversion Error"
|
||||||
msgstr "Błąd podczas konwersji"
|
msgstr "Błąd podczas konwersji"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1850
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854
|
||||||
msgid ""
|
msgid ""
|
||||||
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
||||||
"first remove the DRM using third party tools."
|
"first remove the DRM using third party tools."
|
||||||
@ -6309,61 +6347,61 @@ msgstr ""
|
|||||||
"<p>Nie można skonwertować: %s<p>Książka posiada <a href=\"%s\">DRM</a>. "
|
"<p>Nie można skonwertować: %s<p>Książka posiada <a href=\"%s\">DRM</a>. "
|
||||||
"Musisz najpierw usunąć DRM korzystając z innych programów."
|
"Musisz najpierw usunąć DRM korzystając z innych programów."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1863
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867
|
||||||
msgid "Recipe Disabled"
|
msgid "Recipe Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1878
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882
|
||||||
msgid "<b>Failed</b>"
|
msgid "<b>Failed</b>"
|
||||||
msgstr "<b>Nie powiodło się</b>"
|
msgstr "<b>Nie powiodło się</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910
|
||||||
msgid "Invalid library location"
|
msgid "Invalid library location"
|
||||||
msgstr "Niewłaściwa lokalizacja biblioteki"
|
msgstr "Niewłaściwa lokalizacja biblioteki"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911
|
||||||
msgid "Could not access %s. Using %s as the library."
|
msgid "Could not access %s. Using %s as the library."
|
||||||
msgstr "Nie można uzyskać dostępu %s. Używam %s jako biblioteki."
|
msgstr "Nie można uzyskać dostępu %s. Używam %s jako biblioteki."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1957
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961
|
||||||
msgid ""
|
msgid ""
|
||||||
"is the result of the efforts of many volunteers from all over the world. If "
|
"is the result of the efforts of many volunteers from all over the world. If "
|
||||||
"you find it useful, please consider donating to support its development."
|
"you find it useful, please consider donating to support its development."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1982
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986
|
||||||
msgid "There are active jobs. Are you sure you want to quit?"
|
msgid "There are active jobs. Are you sure you want to quit?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Niektóre zadania są aktywne. Jesteś pewnien, że chcesz zamknąć program?"
|
"Niektóre zadania są aktywne. Jesteś pewnien, że chcesz zamknąć program?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1985
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
||||||
msgid ""
|
msgid ""
|
||||||
" is communicating with the device!<br>\n"
|
" is communicating with the device!<br>\n"
|
||||||
" Quitting may cause corruption on the device.<br>\n"
|
" Quitting may cause corruption on the device.<br>\n"
|
||||||
" Are you sure you want to quit?"
|
" Are you sure you want to quit?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993
|
||||||
msgid "WARNING: Active jobs"
|
msgid "WARNING: Active jobs"
|
||||||
msgstr "OSTRZEŻENIE: Aktywne zadania"
|
msgstr "OSTRZEŻENIE: Aktywne zadania"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2041
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045
|
||||||
msgid ""
|
msgid ""
|
||||||
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
||||||
"context menu of the system tray."
|
"context menu of the system tray."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2060
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064
|
||||||
msgid ""
|
msgid ""
|
||||||
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
||||||
"href=\"%s\">%s</a></span>"
|
"href=\"%s\">%s</a></span>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2068
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072
|
||||||
msgid "Update available"
|
msgid "Update available"
|
||||||
msgstr "Uaktualnienia dostępne"
|
msgstr "Uaktualnienia dostępne"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073
|
||||||
msgid ""
|
msgid ""
|
||||||
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
||||||
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
||||||
@ -6583,7 +6621,7 @@ msgstr ""
|
|||||||
msgid "The standard font type"
|
msgid "The standard font type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:407
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408
|
||||||
msgid "&Lookup in dictionary"
|
msgid "&Lookup in dictionary"
|
||||||
msgstr "Sprawdź w słowniku"
|
msgstr "Sprawdź w słowniku"
|
||||||
|
|
||||||
@ -7184,7 +7222,7 @@ msgid ""
|
|||||||
"WordPlayer, etc. integration."
|
"WordPlayer, etc. integration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:28
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"The fields to output when cataloging books in the database. Should be a "
|
"The fields to output when cataloging books in the database. Should be a "
|
||||||
"comma-separated list of fields.\n"
|
"comma-separated list of fields.\n"
|
||||||
@ -7193,7 +7231,7 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:37
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output field to sort on.\n"
|
"Output field to sort on.\n"
|
||||||
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
||||||
@ -7201,6 +7239,62 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:241
|
||||||
|
msgid ""
|
||||||
|
"Title of generated catalog used as title in metadata.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:247
|
||||||
|
msgid ""
|
||||||
|
"Save the output from different stages of the conversion pipeline to the "
|
||||||
|
"specified directory. Useful if you are unsure at which stage of the "
|
||||||
|
"conversion process a bug is occurring.\n"
|
||||||
|
"Default: '%default'None\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256
|
||||||
|
msgid ""
|
||||||
|
"Regex describing tags to exclude as genres.\n"
|
||||||
|
"Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261
|
||||||
|
msgid ""
|
||||||
|
"Comma-separated list of tag words indicating book should be excluded from "
|
||||||
|
"output. Case-insensitive.\n"
|
||||||
|
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268
|
||||||
|
msgid ""
|
||||||
|
"Tag indicating book has been read.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273
|
||||||
|
msgid ""
|
||||||
|
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:279
|
||||||
|
msgid ""
|
||||||
|
"Specifies the output profile. In some cases, an output profile is required "
|
||||||
|
"to optimize the catalog for the device. For example, 'kindle' or "
|
||||||
|
"'kindle_dx' creates a structured Table of Contents with Sections and "
|
||||||
|
"Articles.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"Path to the calibre library. Default is to use the path stored in the "
|
"Path to the calibre library. Default is to use the path stored in the "
|
||||||
@ -7465,32 +7559,27 @@ msgid ""
|
|||||||
"For help on an individual command: %%prog command --help\n"
|
"For help on an individual command: %%prog command --help\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1429
|
|
||||||
msgid "Catalog"
|
|
||||||
msgstr "Katalog"
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1691
|
|
||||||
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:1720
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "Kopiowanie <b>%s</b>"
|
msgstr "Kopiowanie <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Kompaktowanie bazy danych"
|
msgstr "Kompaktowanie bazy danych"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1830
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr "Sprawdzam integralność SQL..."
|
msgstr "Sprawdzam integralność SQL..."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr "Sprawdzam czy brakuje jakichś plików."
|
msgstr "Sprawdzam czy brakuje jakichś plików."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7622,7 +7711,7 @@ msgstr "Przekształć scieżki na małe znaki."
|
|||||||
msgid "Replace whitespace with underscores."
|
msgid "Replace whitespace with underscores."
|
||||||
msgstr "Zastąp spacje podkreśleniami."
|
msgstr "Zastąp spacje podkreśleniami."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:255
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256
|
||||||
msgid "Requested formats not available"
|
msgid "Requested formats not available"
|
||||||
msgstr "Żądane formaty nie dostępne"
|
msgstr "Żądane formaty nie dostępne"
|
||||||
|
|
||||||
@ -7630,7 +7719,7 @@ msgstr "Żądane formaty nie dostępne"
|
|||||||
msgid "Password to access your calibre library. Username is "
|
msgid "Password to access your calibre library. Username is "
|
||||||
msgstr "Hasło do biblioteki calibre. Nazwa użytkownika to "
|
msgstr "Hasło do biblioteki calibre. Nazwa użytkownika to "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:856
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:860
|
||||||
msgid ""
|
msgid ""
|
||||||
"[options]\n"
|
"[options]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -7640,7 +7729,7 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Włącz serwer zawartości calibre."
|
"Włącz serwer zawartości calibre."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:858
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:862
|
||||||
msgid "Path to the library folder to serve with the content server"
|
msgid "Path to the library folder to serve with the content server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7714,7 +7803,7 @@ msgstr "Zatrzymano"
|
|||||||
msgid "Finished"
|
msgid "Finished"
|
||||||
msgstr "Zakończone"
|
msgstr "Zakończone"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72
|
||||||
msgid "Working..."
|
msgid "Working..."
|
||||||
msgstr "Pracuję.."
|
msgstr "Pracuję.."
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -6,14 +6,14 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: calibre 0.4.55\n"
|
"Project-Id-Version: calibre 0.4.55\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2010-01-22 03:18+0000\n"
|
"POT-Creation-Date: 2010-01-25 00:45+0000\n"
|
||||||
"PO-Revision-Date: 2010-01-21 14:27+0000\n"
|
"PO-Revision-Date: 2010-01-25 02:30+0000\n"
|
||||||
"Last-Translator: DisSkorpion <Unknown>\n"
|
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||||
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
|
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2010-01-22 04:33+0000\n"
|
"X-Launchpad-Export-Date: 2010-01-25 04:47+0000\n"
|
||||||
"X-Generator: Launchpad (build Unknown)\n"
|
"X-Generator: Launchpad (build Unknown)\n"
|
||||||
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
||||||
"X-Poedit-Language: Russian\n"
|
"X-Poedit-Language: Russian\n"
|
||||||
@ -34,7 +34,7 @@ msgstr "Ничего не делает"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:205
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:414
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:417
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:319
|
||||||
@ -131,12 +131,12 @@ msgstr "Ничего не делает"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:715
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1143
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1180
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1547
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1552
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1549
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1554
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1665
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1670
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:721
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:768
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:111
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||||
@ -238,11 +238,11 @@ msgstr "Внести метаданные в файлы %s"
|
|||||||
msgid "Set metadata from %s files"
|
msgid "Set metadata from %s files"
|
||||||
msgstr "Внести метаданные из файлов %s"
|
msgstr "Внести метаданные из файлов %s"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:99
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102
|
||||||
msgid "Conversion Input"
|
msgid "Conversion Input"
|
||||||
msgstr "Вход конвертера"
|
msgstr "Вход конвертера"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:122
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125
|
||||||
msgid ""
|
msgid ""
|
||||||
"Specify the character encoding of the input document. If set this option "
|
"Specify the character encoding of the input document. If set this option "
|
||||||
"will override any encoding declared by the document itself. Particularly "
|
"will override any encoding declared by the document itself. Particularly "
|
||||||
@ -254,11 +254,11 @@ msgstr ""
|
|||||||
"Данная опция может быть полезна для документа, не имеющего информации о "
|
"Данная опция может быть полезна для документа, не имеющего информации о "
|
||||||
"кодировке, или для документа, в котором указаны неверные параметры кодировки."
|
"кодировке, или для документа, в котором указаны неверные параметры кодировки."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:225
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:228
|
||||||
msgid "Conversion Output"
|
msgid "Conversion Output"
|
||||||
msgstr "Выход конвертера"
|
msgstr "Выход конвертера"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:239
|
#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:242
|
||||||
msgid ""
|
msgid ""
|
||||||
"If specified, the output plugin will try to create output that is as human "
|
"If specified, the output plugin will try to create output that is as human "
|
||||||
"readable as possible. May not have any effect for some output plugins."
|
"readable as possible. May not have any effect for some output plugins."
|
||||||
@ -458,11 +458,11 @@ msgstr ""
|
|||||||
msgid "Communicate with the Binatone Readme eBook reader."
|
msgid "Communicate with the Binatone Readme eBook reader."
|
||||||
msgstr "Соединяться с Binatone Readme eBook."
|
msgstr "Соединяться с Binatone Readme eBook."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:12
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
||||||
msgid "Communicate with the Blackberry smart phone."
|
msgid "Communicate with the Blackberry smart phone."
|
||||||
msgstr "Соединяться со смартфонами Blackberry."
|
msgstr "Соединяться со смартфонами Blackberry."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13
|
#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90
|
||||||
msgid "Kovid Goyal"
|
msgid "Kovid Goyal"
|
||||||
@ -657,7 +657,7 @@ msgstr "Не хватает свободного места на карте па
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:132
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1068
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1072
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1447
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1452
|
||||||
msgid "News"
|
msgid "News"
|
||||||
msgstr "Новости"
|
msgstr "Новости"
|
||||||
|
|
||||||
@ -810,8 +810,8 @@ msgstr ""
|
|||||||
msgid "Apply no processing to the image"
|
msgid "Apply no processing to the image"
|
||||||
msgstr "Не обрабатывать изображения"
|
msgstr "Не обрабатывать изображения"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:438
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:441
|
||||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:449
|
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452
|
||||||
msgid "Page"
|
msgid "Page"
|
||||||
msgstr "Страница"
|
msgstr "Страница"
|
||||||
|
|
||||||
@ -2648,6 +2648,7 @@ msgid "CSV/XML Options"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13
|
||||||
@ -2665,6 +2666,7 @@ msgid "Options specific to"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20
|
||||||
@ -2676,7 +2678,8 @@ msgstr ""
|
|||||||
msgid "output"
|
msgid "output"
|
||||||
msgstr "вывод"
|
msgstr "вывод"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:34
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:36
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:51
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:84
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49
|
||||||
@ -2707,10 +2710,37 @@ msgstr "вывод"
|
|||||||
msgid "Form"
|
msgid "Form"
|
||||||
msgstr "Форма"
|
msgstr "Форма"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:35
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37
|
||||||
msgid "Fields to include in output:"
|
msgid "Fields to include in output:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17
|
||||||
|
msgid "E-book Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:259
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1430
|
||||||
|
msgid "Catalog"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:52
|
||||||
|
msgid "Tags to exclude as genres (regex):"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:53
|
||||||
|
msgid "'Don't include this book' tag:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:54
|
||||||
|
msgid "'Mark this book as read' tag:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:55
|
||||||
|
msgid "Additional note tag prefix:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28
|
||||||
msgid "Tab template for catalog.ui"
|
msgid "Tab template for catalog.ui"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3343,7 +3373,7 @@ msgid "RB Output"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:77
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1633
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637
|
||||||
msgid "Choose the format to view"
|
msgid "Choose the format to view"
|
||||||
msgstr "Выберете для просмотра формат"
|
msgstr "Выберете для просмотра формат"
|
||||||
|
|
||||||
@ -3636,7 +3666,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:130
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:132
|
||||||
msgid "No details available."
|
msgid "No details available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3881,7 +3911,7 @@ msgstr "&Предыдущий"
|
|||||||
msgid "&Next"
|
msgid "&Next"
|
||||||
msgstr "&Следующий"
|
msgstr "&Следующий"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:37
|
||||||
msgid "My Books"
|
msgid "My Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -4017,7 +4047,7 @@ msgstr "новый email адрес"
|
|||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:477
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:821
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:158
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1246
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Ошибка"
|
msgstr "Ошибка"
|
||||||
@ -6113,7 +6143,7 @@ msgid "Save to disk in a single directory"
|
|||||||
msgstr "Сохранить на диск в одну директорию"
|
msgstr "Сохранить на диск в одну директорию"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:306
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1741
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1745
|
||||||
msgid "Save only %s format to disk"
|
msgid "Save only %s format to disk"
|
||||||
msgstr "Сохранять на диск только формат %s"
|
msgstr "Сохранять на диск только формат %s"
|
||||||
|
|
||||||
@ -6168,7 +6198,7 @@ msgid "Calibre Library"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:485
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1897
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1901
|
||||||
msgid "Choose a location for your ebook library."
|
msgid "Choose a location for your ebook library."
|
||||||
msgstr "Выбрите расположение Вашей библиотеки электронных книг."
|
msgstr "Выбрите расположение Вашей библиотеки электронных книг."
|
||||||
|
|
||||||
@ -6292,8 +6322,8 @@ msgid "Cannot delete"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1075
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1646
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1650
|
||||||
msgid "No book selected"
|
msgid "No book selected"
|
||||||
msgstr "Нет выбранных книг"
|
msgstr "Нет выбранных книг"
|
||||||
|
|
||||||
@ -6301,11 +6331,11 @@ msgstr "Нет выбранных книг"
|
|||||||
msgid "Choose formats to be deleted"
|
msgid "Choose formats to be deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1103
|
||||||
msgid "Choose formats <b>not</b> to be deleted"
|
msgid "Choose formats <b>not</b> to be deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1137
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1141
|
||||||
msgid ""
|
msgid ""
|
||||||
"The selected books will be <b>permanently deleted</b> and the files removed "
|
"The selected books will be <b>permanently deleted</b> and the files removed "
|
||||||
"from your computer. Are you sure?"
|
"from your computer. Are you sure?"
|
||||||
@ -6313,123 +6343,131 @@ msgstr ""
|
|||||||
"Выбранные книги будут <b>навсегда удалены</b> вместе с файлами с Вашего "
|
"Выбранные книги будут <b>навсегда удалены</b> вместе с файлами с Вашего "
|
||||||
"компьютера. Вы уверены?"
|
"компьютера. Вы уверены?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1164
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1168
|
||||||
msgid "Deleting books from device."
|
msgid "Deleting books from device."
|
||||||
msgstr "Удаляются книги из устройства."
|
msgstr "Удаляются книги из устройства."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1195
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1199
|
||||||
msgid "Cannot download metadata"
|
msgid "Cannot download metadata"
|
||||||
msgstr "Не удалось загрузить метаданные"
|
msgstr "Не удалось загрузить метаданные"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1196
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1200
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1253
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1257
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1286
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1311
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1315
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1370
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1374
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1483
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1487
|
||||||
msgid "No books selected"
|
msgid "No books selected"
|
||||||
msgstr "Нет Выбранных книг"
|
msgstr "Нет Выбранных книг"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1211
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
||||||
msgid "social metadata"
|
msgid "social metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "covers"
|
msgid "covers"
|
||||||
msgstr "обложек"
|
msgstr "обложек"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1213
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1217
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "метаданных"
|
msgstr "метаданных"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1215
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1219
|
||||||
msgid "Downloading %s for %d book(s)"
|
msgid "Downloading %s for %d book(s)"
|
||||||
msgstr "Загрузка %s для %d книг(и)"
|
msgstr "Загрузка %s для %d книг(и)"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1237
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
||||||
msgid "Failed to download some metadata"
|
msgid "Failed to download some metadata"
|
||||||
msgstr "Не удалось загрузить некоторые метаданные"
|
msgstr "Не удалось загрузить некоторые метаданные"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1238
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1242
|
||||||
msgid "Failed to download metadata for the following:"
|
msgid "Failed to download metadata for the following:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1241
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1245
|
||||||
msgid "Failed to download metadata:"
|
msgid "Failed to download metadata:"
|
||||||
msgstr "Не удалось загрузить метаданные:"
|
msgstr "Не удалось загрузить метаданные:"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1252
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1256
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1285
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289
|
||||||
msgid "Cannot edit metadata"
|
msgid "Cannot edit metadata"
|
||||||
msgstr "Невозможно редактировать метаданные"
|
msgstr "Невозможно редактировать метаданные"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1310
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1314
|
||||||
msgid "Cannot save to disk"
|
msgid "Cannot save to disk"
|
||||||
msgstr "Невозможно сохранить на диск"
|
msgstr "Невозможно сохранить на диск"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1313
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1317
|
||||||
msgid "Choose destination directory"
|
msgid "Choose destination directory"
|
||||||
msgstr "Выберете директорию получателя"
|
msgstr "Выберете директорию получателя"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1340
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344
|
||||||
msgid "Error while saving"
|
msgid "Error while saving"
|
||||||
msgstr "Ошибка при сохранении"
|
msgstr "Ошибка при сохранении"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1341
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1345
|
||||||
msgid "There was an error while saving."
|
msgid "There was an error while saving."
|
||||||
msgstr "Произошла ошибка при сохранении."
|
msgstr "Произошла ошибка при сохранении."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1348
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1352
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1349
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1353
|
||||||
msgid "Could not save some books"
|
msgid "Could not save some books"
|
||||||
msgstr "Не удалось сохранить некоторые книги"
|
msgstr "Не удалось сохранить некоторые книги"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1350
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1354
|
||||||
msgid "Click the show details button to see which ones."
|
msgid "Click the show details button to see which ones."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1371
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1375
|
||||||
msgid "No books selected to generate catalog for"
|
msgid "No books selected to generate catalog for"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392
|
||||||
msgid "Generating %s catalog..."
|
msgid "Generating %s catalog..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1399
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1403
|
||||||
msgid "Catalog generated."
|
msgid "Catalog generated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1417
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1406
|
||||||
|
msgid "Export Catalog Directory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1407
|
||||||
|
msgid "Select destination for %s.%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1421
|
||||||
msgid "Fetching news from "
|
msgid "Fetching news from "
|
||||||
msgstr "Вызвать новость из "
|
msgstr "Вызвать новость из "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1435
|
||||||
msgid " fetched."
|
msgid " fetched."
|
||||||
msgstr " загружено."
|
msgstr " загружено."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1482
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1486
|
||||||
msgid "Cannot convert"
|
msgid "Cannot convert"
|
||||||
msgstr "Не преобразуется"
|
msgstr "Не преобразуется"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1511
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1515
|
||||||
msgid "Starting conversion of %d book(s)"
|
msgid "Starting conversion of %d book(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1627
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1631
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1683
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1687
|
||||||
msgid "Cannot view"
|
msgid "Cannot view"
|
||||||
msgstr "Невозможно просмотреть"
|
msgstr "Невозможно просмотреть"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1645
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1649
|
||||||
msgid "Cannot open folder"
|
msgid "Cannot open folder"
|
||||||
msgstr "Не могу открыть папку"
|
msgstr "Не могу открыть папку"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1667
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1671
|
||||||
msgid "Multiple Books Selected"
|
msgid "Multiple Books Selected"
|
||||||
msgstr "Выбраны несколько книг"
|
msgstr "Выбраны несколько книг"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1668
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1672
|
||||||
msgid ""
|
msgid ""
|
||||||
"You are attempting to open %d books. Opening too many books at once can be "
|
"You are attempting to open %d books. Opening too many books at once can be "
|
||||||
"slow and have a negative effect on the responsiveness of your computer. Once "
|
"slow and have a negative effect on the responsiveness of your computer. Once "
|
||||||
@ -6437,31 +6475,31 @@ msgid ""
|
|||||||
"continue?"
|
"continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1684
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1688
|
||||||
msgid "%s has no available formats."
|
msgid "%s has no available formats."
|
||||||
msgstr "%s неизвестный формат."
|
msgstr "%s неизвестный формат."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1725
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729
|
||||||
msgid "Cannot configure"
|
msgid "Cannot configure"
|
||||||
msgstr "Невозможно настроить"
|
msgstr "Невозможно настроить"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1726
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1730
|
||||||
msgid "Cannot configure while there are running jobs."
|
msgid "Cannot configure while there are running jobs."
|
||||||
msgstr "Пока запущено задание, не могу настроить"
|
msgstr "Пока запущено задание, не могу настроить"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1769
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1773
|
||||||
msgid "No detailed info available"
|
msgid "No detailed info available"
|
||||||
msgstr "Нет доступной подробной информации"
|
msgstr "Нет доступной подробной информации"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1770
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1774
|
||||||
msgid "No detailed information is available for books on the device."
|
msgid "No detailed information is available for books on the device."
|
||||||
msgstr "Не доступна подробная информация книг на устройстве"
|
msgstr "Не доступна подробная информация книг на устройстве"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1825
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1829
|
||||||
msgid "Error talking to device"
|
msgid "Error talking to device"
|
||||||
msgstr "Ошибка согласования устройства"
|
msgstr "Ошибка согласования устройства"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1826
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1830
|
||||||
msgid ""
|
msgid ""
|
||||||
"There was a temporary error talking to the device. Please unplug and "
|
"There was a temporary error talking to the device. Please unplug and "
|
||||||
"reconnect the device and or reboot."
|
"reconnect the device and or reboot."
|
||||||
@ -6469,34 +6507,34 @@ msgstr ""
|
|||||||
"Была временная ошибка общения с устройством. Пожалуста, переподключите "
|
"Была временная ошибка общения с устройством. Пожалуста, переподключите "
|
||||||
"устройство или перегрузите его."
|
"устройство или перегрузите его."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1849
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1853
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1877
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1881
|
||||||
msgid "Conversion Error"
|
msgid "Conversion Error"
|
||||||
msgstr "Ошибка преобразования"
|
msgstr "Ошибка преобразования"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1850
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1854
|
||||||
msgid ""
|
msgid ""
|
||||||
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
"<p>Could not convert: %s<p>It is a <a href=\"%s\">DRM</a>ed book. You must "
|
||||||
"first remove the DRM using third party tools."
|
"first remove the DRM using third party tools."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1863
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1867
|
||||||
msgid "Recipe Disabled"
|
msgid "Recipe Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1878
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1882
|
||||||
msgid "<b>Failed</b>"
|
msgid "<b>Failed</b>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1910
|
||||||
msgid "Invalid library location"
|
msgid "Invalid library location"
|
||||||
msgstr "Неверное расположение библиотеки"
|
msgstr "Неверное расположение библиотеки"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1911
|
||||||
msgid "Could not access %s. Using %s as the library."
|
msgid "Could not access %s. Using %s as the library."
|
||||||
msgstr "Нет доступа к %s. Использование %s в качестве библиотеки."
|
msgstr "Нет доступа к %s. Использование %s в качестве библиотеки."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1957
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1961
|
||||||
msgid ""
|
msgid ""
|
||||||
"is the result of the efforts of many volunteers from all over the world. If "
|
"is the result of the efforts of many volunteers from all over the world. If "
|
||||||
"you find it useful, please consider donating to support its development."
|
"you find it useful, please consider donating to support its development."
|
||||||
@ -6504,22 +6542,22 @@ msgstr ""
|
|||||||
"является результато труда многих добровольцев по всему миру. Если Вы сочли "
|
"является результато труда многих добровольцев по всему миру. Если Вы сочли "
|
||||||
"его полезным, будьте добры пожертвовать на его развитие."
|
"его полезным, будьте добры пожертвовать на его развитие."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1982
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1986
|
||||||
msgid "There are active jobs. Are you sure you want to quit?"
|
msgid "There are active jobs. Are you sure you want to quit?"
|
||||||
msgstr "Имеется активное задание. Вы все равно хотите выйти?"
|
msgstr "Имеется активное задание. Вы все равно хотите выйти?"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1985
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
||||||
msgid ""
|
msgid ""
|
||||||
" is communicating with the device!<br>\n"
|
" is communicating with the device!<br>\n"
|
||||||
" Quitting may cause corruption on the device.<br>\n"
|
" Quitting may cause corruption on the device.<br>\n"
|
||||||
" Are you sure you want to quit?"
|
" Are you sure you want to quit?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1989
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1993
|
||||||
msgid "WARNING: Active jobs"
|
msgid "WARNING: Active jobs"
|
||||||
msgstr "ПРЕДУПРЕЖДЕНИЕ: Активные задания"
|
msgstr "ПРЕДУПРЕЖДЕНИЕ: Активные задания"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2041
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2045
|
||||||
msgid ""
|
msgid ""
|
||||||
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
"will keep running in the system tray. To close it, choose <b>Quit</b> in the "
|
||||||
"context menu of the system tray."
|
"context menu of the system tray."
|
||||||
@ -6527,7 +6565,7 @@ msgstr ""
|
|||||||
"продолжит работать в трее. Для завершения работы выберите<b>Quit</b> в "
|
"продолжит работать в трее. Для завершения работы выберите<b>Quit</b> в "
|
||||||
"контекстном меню трея."
|
"контекстном меню трея."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2060
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2064
|
||||||
msgid ""
|
msgid ""
|
||||||
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
"<span style=\"color:red; font-weight:bold\">Latest version: <a "
|
||||||
"href=\"%s\">%s</a></span>"
|
"href=\"%s\">%s</a></span>"
|
||||||
@ -6535,11 +6573,11 @@ msgstr ""
|
|||||||
"<span style=\"color:red; font-weight:bold\">Последняя версия: <a "
|
"<span style=\"color:red; font-weight:bold\">Последняя версия: <a "
|
||||||
"href=\"%s\">%s</a></span>"
|
"href=\"%s\">%s</a></span>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2068
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2072
|
||||||
msgid "Update available"
|
msgid "Update available"
|
||||||
msgstr "Доступно обновление"
|
msgstr "Доступно обновление"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2069
|
#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2073
|
||||||
msgid ""
|
msgid ""
|
||||||
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
"%s has been updated to version %s. See the <a href=\"http://calibre-"
|
||||||
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
"ebook.com/whats-new\">new features</a>. Visit the download page?"
|
||||||
@ -6760,7 +6798,7 @@ msgstr "Размер Моноширного шрифта в px"
|
|||||||
msgid "The standard font type"
|
msgid "The standard font type"
|
||||||
msgstr "Стандартный шрифт"
|
msgstr "Стандартный шрифт"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:407
|
#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:408
|
||||||
msgid "&Lookup in dictionary"
|
msgid "&Lookup in dictionary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7356,7 +7394,7 @@ msgid ""
|
|||||||
"WordPlayer, etc. integration."
|
"WordPlayer, etc. integration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:28
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"The fields to output when cataloging books in the database. Should be a "
|
"The fields to output when cataloging books in the database. Should be a "
|
||||||
"comma-separated list of fields.\n"
|
"comma-separated list of fields.\n"
|
||||||
@ -7365,7 +7403,7 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:37
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:43
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output field to sort on.\n"
|
"Output field to sort on.\n"
|
||||||
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
"Available fields: author_sort, id, rating, size, timestamp, title.\n"
|
||||||
@ -7373,6 +7411,62 @@ msgid ""
|
|||||||
"Applies to: CSV, XML output formats"
|
"Applies to: CSV, XML output formats"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:241
|
||||||
|
msgid ""
|
||||||
|
"Title of generated catalog used as title in metadata.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:247
|
||||||
|
msgid ""
|
||||||
|
"Save the output from different stages of the conversion pipeline to the "
|
||||||
|
"specified directory. Useful if you are unsure at which stage of the "
|
||||||
|
"conversion process a bug is occurring.\n"
|
||||||
|
"Default: '%default'None\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:256
|
||||||
|
msgid ""
|
||||||
|
"Regex describing tags to exclude as genres.\n"
|
||||||
|
"Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261
|
||||||
|
msgid ""
|
||||||
|
"Comma-separated list of tag words indicating book should be excluded from "
|
||||||
|
"output. Case-insensitive.\n"
|
||||||
|
"--exclude-tags=skip will match 'skip this book' and 'Skip will like this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268
|
||||||
|
msgid ""
|
||||||
|
"Tag indicating book has been read.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:273
|
||||||
|
msgid ""
|
||||||
|
"Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/kovid/work/calibre/src/calibre/library/catalog.py:279
|
||||||
|
msgid ""
|
||||||
|
"Specifies the output profile. In some cases, an output profile is required "
|
||||||
|
"to optimize the catalog for the device. For example, 'kindle' or "
|
||||||
|
"'kindle_dx' creates a structured Table of Contents with Sections and "
|
||||||
|
"Articles.\n"
|
||||||
|
"Default: '%default'\n"
|
||||||
|
"Applies to: ePub, MOBI output formats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
#: /home/kovid/work/calibre/src/calibre/library/cli.py:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"Path to the calibre library. Default is to use the path stored in the "
|
"Path to the calibre library. Default is to use the path stored in the "
|
||||||
@ -7704,32 +7798,27 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Для справки: %%prog команда --help\n"
|
"Для справки: %%prog команда --help\n"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1416
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1696
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1429
|
|
||||||
msgid "Catalog"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1691
|
|
||||||
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 "<p>Миграция старой базы данных в %s<br><center>"
|
msgstr "<p>Миграция старой базы данных в %s<br><center>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1720
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1725
|
||||||
msgid "Copying <b>%s</b>"
|
msgid "Copying <b>%s</b>"
|
||||||
msgstr "Копирование <b>%s</b>"
|
msgstr "Копирование <b>%s</b>"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1737
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1742
|
||||||
msgid "Compacting database"
|
msgid "Compacting database"
|
||||||
msgstr "Сжатие базы данных"
|
msgstr "Сжатие базы данных"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1830
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1835
|
||||||
msgid "Checking SQL integrity..."
|
msgid "Checking SQL integrity..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1867
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1872
|
||||||
msgid "Checking for missing files."
|
msgid "Checking for missing files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1889
|
#: /home/kovid/work/calibre/src/calibre/library/database2.py:1894
|
||||||
msgid "Checked id"
|
msgid "Checked id"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7849,7 +7938,7 @@ msgstr ""
|
|||||||
msgid "Replace whitespace with underscores."
|
msgid "Replace whitespace with underscores."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:255
|
#: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:256
|
||||||
msgid "Requested formats not available"
|
msgid "Requested formats not available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7857,7 +7946,7 @@ msgstr ""
|
|||||||
msgid "Password to access your calibre library. Username is "
|
msgid "Password to access your calibre library. Username is "
|
||||||
msgstr "Пароль для доступа в библиотеку. Имя пользователя "
|
msgstr "Пароль для доступа в библиотеку. Имя пользователя "
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:856
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:860
|
||||||
msgid ""
|
msgid ""
|
||||||
"[options]\n"
|
"[options]\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -7867,7 +7956,7 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Запуск calibre content server."
|
"Запуск calibre content server."
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:858
|
#: /home/kovid/work/calibre/src/calibre/library/server.py:862
|
||||||
msgid "Path to the library folder to serve with the content server"
|
msgid "Path to the library folder to serve with the content server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -7941,7 +8030,7 @@ msgstr ""
|
|||||||
msgid "Finished"
|
msgid "Finished"
|
||||||
msgstr "Закончил"
|
msgstr "Закончил"
|
||||||
|
|
||||||
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:70
|
#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:72
|
||||||
msgid "Working..."
|
msgid "Working..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -52,8 +52,10 @@ class BaseJob(object):
|
|||||||
else:
|
else:
|
||||||
self._status_text = _('Error') if self.failed else _('Finished')
|
self._status_text = _('Error') if self.failed else _('Finished')
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
prints('Job:', self.id, self.description, 'finished')
|
prints('Job:', self.id, self.description, 'finished',
|
||||||
prints('\t'.join(self.details.splitlines(True)))
|
safe_encode=True)
|
||||||
|
prints('\t'.join(self.details.splitlines(True)),
|
||||||
|
safe_encode=True)
|
||||||
if not self._done_called:
|
if not self._done_called:
|
||||||
self._done_called = True
|
self._done_called = True
|
||||||
try:
|
try:
|
||||||
|
@ -66,7 +66,7 @@ class RecipeInput(InputFormatPlugin):
|
|||||||
if recipe.requires_version > numeric_version:
|
if recipe.requires_version > numeric_version:
|
||||||
log.warn(
|
log.warn(
|
||||||
'Downloaded recipe needs calibre version at least: %s' % \
|
'Downloaded recipe needs calibre version at least: %s' % \
|
||||||
recipe.requires_version)
|
('.'.join(recipe.requires_version)))
|
||||||
builtin = True
|
builtin = True
|
||||||
except:
|
except:
|
||||||
log.exception('Failed to compile downloaded recipe. Falling '
|
log.exception('Failed to compile downloaded recipe. Falling '
|
||||||
|
@ -111,7 +111,9 @@ class BasicNewsRecipe(Recipe):
|
|||||||
|
|
||||||
#: Specify an override encoding for sites that have an incorrect
|
#: Specify an override encoding for sites that have an incorrect
|
||||||
#: charset specification. The most common being specifying ``latin1`` and
|
#: charset specification. The most common being specifying ``latin1`` and
|
||||||
#: using ``cp1252``. If None, try to detect the encoding.
|
#: using ``cp1252``. If None, try to detect the encoding. If it is a
|
||||||
|
#: callable, the callable is called with two arguments: The recipe object
|
||||||
|
#: and the source to be decoded. It must return the decoded source.
|
||||||
encoding = None
|
encoding = None
|
||||||
|
|
||||||
#: Normally we try to guess if a feed has full articles embedded in it
|
#: Normally we try to guess if a feed has full articles embedded in it
|
||||||
@ -421,7 +423,10 @@ class BasicNewsRecipe(Recipe):
|
|||||||
if raw:
|
if raw:
|
||||||
return _raw
|
return _raw
|
||||||
if not isinstance(_raw, unicode) and self.encoding:
|
if not isinstance(_raw, unicode) and self.encoding:
|
||||||
_raw = _raw.decode(self.encoding, 'replace')
|
if callable(self.encoding):
|
||||||
|
_raw = self.encoding(_raw)
|
||||||
|
else:
|
||||||
|
_raw = _raw.decode(self.encoding, 'replace')
|
||||||
massage = list(BeautifulSoup.MARKUP_MASSAGE)
|
massage = list(BeautifulSoup.MARKUP_MASSAGE)
|
||||||
massage.append((re.compile(r'&(\S+?);'), lambda match: entity_to_unicode(match, encoding=self.encoding)))
|
massage.append((re.compile(r'&(\S+?);'), lambda match: entity_to_unicode(match, encoding=self.encoding)))
|
||||||
return BeautifulSoup(_raw, markupMassage=massage)
|
return BeautifulSoup(_raw, markupMassage=massage)
|
||||||
|
@ -403,7 +403,9 @@ class RecursiveFetcher(object):
|
|||||||
if len(dsrc) == 0 or \
|
if len(dsrc) == 0 or \
|
||||||
len(re.compile('<!--.*?-->', re.DOTALL).sub('', dsrc).strip()) == 0:
|
len(re.compile('<!--.*?-->', re.DOTALL).sub('', dsrc).strip()) == 0:
|
||||||
raise ValueError('No content at URL %s'%iurl)
|
raise ValueError('No content at URL %s'%iurl)
|
||||||
if self.encoding is not None:
|
if callable(self.encoding):
|
||||||
|
dsrc = self.encoding(dsrc)
|
||||||
|
elif self.encoding is not None:
|
||||||
dsrc = dsrc.decode(self.encoding, 'replace')
|
dsrc = dsrc.decode(self.encoding, 'replace')
|
||||||
else:
|
else:
|
||||||
dsrc = xml_to_unicode(dsrc, self.verbose)[0]
|
dsrc = xml_to_unicode(dsrc, self.verbose)[0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user